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

链接:登录---专业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;
    }
相关推荐
zyl7655 小时前
FlashAttention 详解:从 GPU 硬件、普通 Attention 到分块计算与 Online Softmax
算法
爱读书的小胖8 小时前
LeetCode 122:买卖股票的最佳时机 II(C)解题分析
算法
结局无敌8 小时前
React Native for OpenHarmony 实战:三方库 react-native-modal-dialog 的鸿蒙化适配指南
深度学习·算法·react native·react.js·harmonyos
OPEN-F9 小时前
ROS2系列教程:上位机建图与导航(原理综合)
算法·机器人
weixin_307779139 小时前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab
AI wins9 小时前
c++新增頭文件
c++
Shadow(⊙o⊙)9 小时前
仿muduo实现高并发服务器——事件就绪管理Channel.hpp
服务器·c++
tomwang03229 小时前
路径优化建模、优化算法分类及工程化小结
算法·数学建模·分类
小羊没烦恼!9 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
by209999 小时前
哈希表——快速找到数据:冲突、删除与扩容的实现
数据结构·c++·哈希算法·散列表