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

链接:登录---专业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;
    }
相关推荐
lvxiangyu112 小时前
MPPI 算法证明重构:基于无穷维泛函变分与 KL 散度的构造性推导
算法·重构·最优控制·随机最优控制
2301_818419012 小时前
C++中的解释器模式变体
开发语言·c++·算法
爱学习的大牛1232 小时前
windows tcpview 类似功能 c++
c++
ab1515172 小时前
3.25完成*23、*24、*28、*30、*33、*38、*39、*40
算法
颜酱2 小时前
回溯算法实战练习(3)
javascript·后端·算法
biter down3 小时前
C++11 统一列表初始化+std::initializer_list
开发语言·c++
ShineWinsu4 小时前
爬虫对抗:ZLibrary反爬机制实战分析技术文章大纲
c++
小王不爱笑1324 小时前
G1 GC 的核心基础:Region 模型的补充细节
java·jvm·算法
小王不爱笑1325 小时前
三色标记算法
算法
charlie1145141915 小时前
通用GUI编程技术——Win32 原生编程实战(十六)——Visual Studio 资源编辑器使用指南
开发语言·c++·ide·学习·gui·visual studio·win32