区间重叠(不能更好,能做到)

链接:登录---专业IT笔试面试备考平台_牛客网

来源:牛客网

超市里一共有 nnn 个货架,mmm 个商品,一开始商品的位置是被打乱的,小Why需要将商品全部归位。

小Why在给货架编号后,实现了每个商品所在货架必然在其应在货架之前。

小Why决定手推购物车按编号顺序依次访问每个货架。在访问货架时,小Why可以执行以下两个操作任意多次:

∙\bullet∙ 当购物车不为空时,将购物车中的一个商品放上货架。

∙\bullet∙ 当货架不为空时,将货架上的一个商品放入购物车。

当小Why跑完一趟后,如果仍有商品没被归位,那么小Why会再次返回 111 号货架重复以上过程。

超市里的购物车同一时刻最多能放 kkk 个商品,且每个货架容量无限,请你告诉小Why至少需要跑多少趟才能将商品全部归位。

输入描述:

复制代码

第一行包括三个整数 n,m,k (2≤n≤106,1≤m,k≤106)n,m,k \ (2 \leq n \leq 10^6 , 1\leq m,k\leq10^6)n,m,k (2≤n≤106,1≤m,k≤106),表示货架个数,商品个数和购物车容量。

接下来 mmm 行,每行有两个整数 sti,edi(1≤sti<edi≤n)st_{i},ed_{i} ( 1 \leq st_{i} < ed_{i} \leq n)sti​,edi​(1≤sti​<edi​≤n),表示第 iii 个商品的所在货架和应在货架。

输出描述:

复制代码
输出一个整数,表示最少需要的趟数。

分析:

从开始道路运到最后的道路,重叠的要放一起,差分加前缀和求出重叠次数最多的,÷购物车容量就是答案,要向上取整


cpp 复制代码
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
void solve()
{
  ll n,m,k;
  cin>>n>>m>>k;
  ll sums[n+1];
  memset(sums,0,sizeof sums);
  for(ll i=0;i<m;i++)
  {
      ll st,ed;
      cin>>st>>ed;
      sums[st]++;
      sums[ed]--;
  }
  ll maxn=-1;
  for(ll i=1;i<=n;i++)
  {
      sums[i]+=sums[i-1];
      maxn=max(sums[i],maxn);
  }
 cout<<(maxn/k+(maxn%k!=0))<<'\n';
}
    int main()
   {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    ll t=1;
    while(t--)
    solve();
    return 0;
    }
相关推荐
FlightYe3 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
ZhengEnCi4 小时前
GPT-6 Astra 爆改 Qwen 权重真有那么神吗:权重空间编程 0.016% 参数的真相
算法·架构
罗西的思考4 小时前
【轻量化复刻大模型 / KIMI K3】KDA(Kimi Delta Attention):并行
人工智能·算法·机器学习
by209995 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
Rover Ramble5 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长5 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall6 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊6 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
夜不会漫长6 小时前
C++:红黑树
数据结构·算法
AI备案指南-满满7 小时前
算法备案审核不通过,一般是什么原因?
java·人工智能·算法·大模型备案·算法备案·大模型登记