首页 > 其他分享 >牛客-小Why的商品归位(差分、区间和)

牛客-小Why的商品归位(差分、区间和)

时间:2023-09-20 17:47:20浏览次数:33  
标签:货架 牛客 int leq 购物车 商品 归位 Why

链接:https://ac.nowcoder.com/acm/contest/64384/C
来源:牛客网

超市里一共有 \(n\) 个货架,\(m\) 个商品,一开始商品的位置是被打乱的,小Why需要将商品全部归位。
小Why在给货架编号后,实现了每个商品所在货架必然在其应在货架之前。
小Why决定手推购物车按编号顺序依次访问每个货架。在访问货架时,小Why可以执行以下两个操作任意多次:
\(\bullet\) 当购物车不为空时,将购物车中的一个商品放上货架。
\(\bullet\) 当货架不为空时,将货架上的一个商品放入购物车。
当小Why跑完一趟后,如果仍有商品没被归位,那么小Why会再次返回 1 号货架重复以上过程。
超市里的购物车同一时刻最多能放 \(k\) 个商品,且每个货架容量无限,请你告诉小Why至少需要跑多少趟才能将商品全部归位。

输入描述:
第一行包括三个整数 \(n,m,k \ (2 \leq n \leq 10^6 , 1\leq m,k\leq10^6)\),表示货架个数,商品个数和购物车容量。
接下来 \(m\) 行,每行有两个整数 \(st_{i},ed_{i} ( 1 \leq st_{i} < ed_{i} \leq n)\),表示第 ii 个商品的所在货架和应在货架。
输出描述:
输出一个整数,表示最少需要的趟数。
示例1
输入
复制
3 3 1
1 2
1 3
2 3
输出
复制
2

我们先讲讲这个样例,首先它的购物车的容量为1,然后第一个商品本应该放在第二个货架上,然后他放在了第一个货架上,然后第二个商品本应该放在第三个货架上他放在了第一个货架上,然后第三个商品本应该放在第3个货架上他放在了第二个货架上,
他最少需要两趟,第一趟再第一个货架上拿上1号商品,然后走到第二个货架上将第一个商品放上,然后拿上第三个商品,走到第三个货架上放上。
然后第二趟在哪第二个商品。

其实这是一个区间覆盖的问题,用的是区间和,我们将这些货架看成一下点,然后点之间相隔看成距离,对于放在1号货架本应该放在2号货架的商品,我们将[1,2]区间++,说明我们得走这一趟,然后我们将所有点进去区间求和之后,我们取区间中的最大值,然后除上购物车的容量就行。
代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+10;
int a[N];
int main() 
{
int n,m,k;

cin>>n>>m>>k;
for(int i=1;i<=m;i++)
{
	int s,e;
	cin>>s>>e;
	 a[s]++;
	 a[e]--;
}
int ans=0;
for(int i=1;i<=n;i++)
{
	a[i]+=a[i-1];
	ans=max(ans,a[i]);
}
cout<<(ans-1)/k+1<<endl;
}

标签:货架,牛客,int,leq,购物车,商品,归位,Why
From: https://www.cnblogs.com/lipu123/p/17717928.html

相关文章

  • 牛客周赛 Round 12 D 小美的区间异或和
    Link首先这个题目的限制卡的很死,最好是O(n)解决,其次当看到异或的时候,就可以考虑按照二进制位进行计算。对于这个题,我们定义\(dp_i\)表示以\(a_i\)为最右端的子区间的答案的和那么首先可以想到,贡献给这个答案的有两个部分,包括\(a_i\)的和不包括的,其中不包括\(a_i\)的部分的答案......
  • sql 牛客网 175题
    https://www.nowcoder.com/practice/f022c9ec81044d4bb7e0711ab794531a?tpId=268&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Fintelligent%3FquestionJobId%3D10%26tagId%3D21003题本身的思路并不难,我的方法是采用union连接两个查询(selectd......
  • 牛客小白月赛78-C第K小表示数
    题意给定k和一个集合初始只包含a,b,每次可以选择一个数乘2或者选择两个数相加然后将结果放入集合中,问所有可能的集合中第k小值最小值。思路从小到大贪心,每次将该值加a和加b,当集合的大小枚举到2k时说明指针已经枚举到第k个。代码#include<bits/stdc++.h>#defineintlonglon......
  • 25届实习秋招-Java面试-JVM虚拟机面试题整理-牛客网
    JVMJVM概述:是什么-规范,有什么作用(多态,越界)Java为什么可以跨平台移植Java怎么做编译?与C语言的编译有什么区别?比较:jvmjrejdk整体的架构:内存结构内存结构/内存模型--即为运行时数据区:JVM了解过哪些版本,1.8和1.7内存结构不同的地方堆中方法区(永久代实现)改为了......
  • 25届实习秋招-Java面试-JUC多线程面试题整理-牛客网
    JUC介绍一下JUC下的锁(如何使用及应用场景)线程什么是进程:特征什么是线程:资源为什么多线程,什么使用用单线程,什么时候多线程,什么条件下多线程快。进程和线程的对比:进程如何通信,每种通信存放的介质。||线程的通信,几种方式。join进程和线程的区别,在JVM层面的体现一......
  • 25届实习/秋招-java面试-JavaSe面试题整理-牛客网
    JavaSe变量和运算符:基本数据类型介绍java中浮点数精度怎么解决,有了解过实现吗,为什么有精度问题BigDecimal,如何判断BigDecimal是否相等。如何进行计算、怎么四舍五入基本类型几种,分别占用空间int和Integer区别--包装类,int有几个字节。包装类常量池怎么判断相等的......
  • 【普通莫队】2023牛客多校5 A
    简介莫队算法是由莫涛提出的算法。在莫涛提出莫队算法之前,莫队算法已经在Codeforces的高手圈里小范围流传,但是莫涛是第一个对莫队算法进行详细归纳总结的人。莫涛提出莫队算法时,只分析了普通莫队算法,但是经过OIer和ACMer的集体智慧改造,莫队有了多种扩展版本。莫队算法可......
  • 牛客刷题
    #include<stdio.h>intmain(intargc,charconst*argv[]){intk=2000;inti=0;while(k>1){i++;k=k>>1;printf("i=%dk=%d\n",i,k);}printf("%d\n",i);......
  • Why Software Developers Are Silent in Meetings
    TheyShouldn’tBeEversatinaSprintRetrowhereyourScrumMasterdidn’tarrivefortenminutes?Ijustdid.Wesatinsilence.EverbeeninaSprintRetrowherealmostnobodyparticipates?AreyouthinkingIjustdid?You’reagreatblogreaderifyo......
  • 牛客练习赛 115 记录
    牛客练习赛115赛时AC题目A.Mountainsequence点击查看代码/*1.根据山峰数列的定义,用排列组合知识去计算即可。*/#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintmaxn=1e5+5;intt,n;inta[maxn];llans;constintMOD=998244353;......