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

链接:登录---专业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;
    }
相关推荐
爱叨叨的小嘟21 分钟前
windows配置C++编译环境和VScode C++配置(保姆级教程)
c++·windows·vscode
武昌库里写JAVA36 分钟前
Vue3常用API总结
数据结构·spring boot·算法·bootstrap·课程设计
C++忠实粉丝38 分钟前
位运算(7)_消失的两个数字
算法
卑微求AC38 分钟前
(C语言贪吃蛇)4.贪吃蛇地图优化及算法说明
c语言·算法
sjsjs1138 分钟前
【动态规划-最长公共子序列(LCS)】【hard】力扣1458. 两个子序列的最大点积
算法·leetcode·动态规划
qq_5352461440 分钟前
代码随想录 101. 孤岛的总面积
算法·深度优先·图论
sjsjs1140 分钟前
【动态规划-最长公共子序列(LCS)】力扣583. 两个字符串的删除操作
算法·leetcode·动态规划
陈序缘43 分钟前
LeetCode讲解篇之79. 单词搜索
算法·leetcode·职场和发展
南石.1 小时前
JVM 基础、GC 算法与 JProfiler 监控工具详解
jvm·算法
哎呀呀嗯呀呀1 小时前
class 031 位运算的骚操作
java·算法·位运算