正题

题目链接:https://www.luogu.com.cn/problem/CF505E


题目大意

开始一个长度为nnn的序列hhh,mmm天每天你可以kkk次选择一个hih_ihi​让它等于hi=max{hi−p,0}h_i=max\{h_i-p,0\}hi​=max{hi​−p,0},然后结束时让每个hi=hi+aih_i=h_i+a_ihi​=hi​+ai​,要求使得最后最大的hhh值最小。

1≤n≤105,1≤m≤5×103,1≤k≤101\leq n\leq 10^5,1\leq m\leq 5\times 10^3,1\leq k\leq 101≤n≤105,1≤m≤5×103,1≤k≤10


解题思路

这个好像是以前WC还是APIO讲课的题了。

首先最大值最小直接上二分,然后考虑贪心做。

不过正着做不太好做,考虑倒着。首先因为每次减法减去的值都是一样的,所以如果有一株的高度大于ppp那么我们显然没有必要剪高度小于ppp的,因为这样会浪费。

设答案为HHH,那么开始我们就让所有草的高度都是HHH,然后每次所有的草高度减少aia_iai​,然后你可以kkk次拔高一棵草的高度kkk。要求全程没有草的高度小于零且最后第iii棵草的高度都不小于hih_ihi​。

那么考虑如果一棵草不用再管高度都不会小于hih_ihi​那么显然不需要管这棵了,否则剪它肯定不会,为了满足条件我们肯定是减去最快小于000的那棵草。

时间复杂度:O(log⁡L(nlog⁡n+mklog⁡n))O(\log L(n\log n+mk\log n))O(logL(nlogn+mklogn))


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define ll long long
#define mp(x,y) make_pair(x,y)
using namespace std;
const ll N=1e5+10;
ll n,m,k,p,h[N],a[N],w[N];
priority_queue<pair<ll,ll> > q;
bool check(ll H){while(!q.empty())q.pop();for(ll i=1;i<=n;i++)if(H-a[i]*m<h[i])w[i]=H,q.push(mp(-H/a[i],i));for(ll i=1;i<=m;i++)for(ll j=1;j<=k;j++){if(q.empty())return 1;ll z=-q.top().first;ll x=q.top().second;if(z-i<0)return 0;q.pop();w[x]+=p;if(w[x]-a[x]*m<h[x])q.push(mp(-w[x]/a[x],x));}if(q.empty())return 1;return 0;
}
signed main()
{scanf("%lld%lld%lld%lld",&n,&m,&k,&p);for(ll i=1;i<=n;i++)scanf("%lld%lld",&h[i],&a[i]);ll l=0,r=1e9*(m+10);while(l<=r){ll mid=(l+r)>>1;if(check(mid))r=mid-1;else l=mid+1;}printf("%lld\n",l);return 0;
}

CF505E-Mr. Kitayuta vs. Bamboos【贪心,二分】相关推荐

  1. [CF505E]Mr. Kitayuta vs. Bamboos/[海军国际项目办公室]迷途竹林

    Mr. Kitayuta vs. Bamboos 迷途竹林事实上就是经TiwAirOAO\color{red}{TiwAirOAO}TiwAirOAO巨佬扩大数据范围强化后的版本.真的是强化了吗 不过 ...

  2. 【IOI2020国家集训队作业 Part 1】CF505E Mr. Kitayuta vs. Bamboos

    题目 题目描述 Mr. Kitayuta's garden is planted with nn bamboos. (Bamboos are tall, fast-growing tropical p ...

  3. CF506C Mr. Kitayuta vs. Bamboos

    CF506C Mr. Kitayuta vs. Bamboos 有nnn个竹子,第iii棵竹子第一天之前的高度是hih_ihi​,每一天的末尾会长高aia_iai​ 每一天你可以将砍kkk刀,每一刀将 ...

  4. Mr. Kitayuta vs. Bamboos

    Mr. Kitayuta vs. Bamboos 题目链接:http://codeforces.com/problemset/problem/505/E 参考:http://blog.csdn.net ...

  5. Mr. Kitayuta vs. Bamboos[二分+贪心][图像分析]

    文章目录 题目 思路 代码 题目 思路 首先最大值最小考虑二分,假设我们检验 xxx 但是发现检验比较难写 尝试从图像分析 那么画出来图像大致如下: 然后我们发现可以将图像上移末端重合至 (m,x)( ...

  6. CF506 C Mr. Kitayuta vs. Bamboos (贪心)

    题意 有n根竹子,初始高度是h[i],每天结束时会长高a[i],每天你可以砍K刀,一刀能减小p的高度.可以在某一天内砍相同的竹子多次.问m天结束后,最高的竹子最矮是多高. n≤1e5,k≤10,m≤5 ...

  7. [CF506C]Mr. Kitayuta vs. Bamboos

    Description 有n个竹子,第i个竹子长度为h[i],每天的结束会长高a[i] 现在有m天,每一天可以做k次操作,每次操作可以选择一个竹子砍掉p,即高度h[i]=max(h[i]-p,0) 你 ...

  8. [CF505E] Mr.Kitayutavs.Bamboos

    https://www.luogu.com.cn/problem/CF505E 最小化最大值肯定是二分答案 但是直接考虑貌似不太好做 考虑反过来,二分一个最大值为X,表示一开始每个位置高度都是X 每次 ...

  9. [SCOI2005]栅栏(贪心+二分+dfs)难度⭐⭐⭐⭐

    [SCOI2005]栅栏(贪心+二分+dfs) P2329 [SCOI2005]栅栏 题目描述 农夫约翰打算建立一个栅栏将他的牧场给围起来,因此他需要一些特定规格的木材.于是农夫约翰到木材店购买木材. ...

  10. 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II

    题目传送门 1 /* 2 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 3 当然有可能两个数和超过p,那么an ...

最新文章

  1. HYSBZ 1503 郁闷的出纳员 伸展树
  2. SpringMvc的服务器端跳转和客户端跳转
  3. oppo5.0以上机器(亲测有效)激活Xposed框架的教程
  4. 3月19日 视觉里程计,PnP方法对两帧求解,BA优化的直观理解
  5. bzoj 2151 种树 —— 思路+链表
  6. 计算机关机界面卡住,Win7关机缓慢,关机后一直卡在正在关机界面
  7. 软考一些可能有用的链接
  8. 写在Groovy/Grails栏目开通的话
  9. 计算机软件cd全称,cd刻录(刻录高音质cd完美教程_计算机软件及应用_IT/计算机_专业资料)...
  10. 苹果电脑错误代码43_苹果最臭名昭著的代码错误
  11. 辽宁科技大学计算机应用技术研究生,2020年辽宁科技大学计算机应用技术考研经验分享...
  12. 百度API全国城市地区天气查询HTML源码
  13. 插上随身wifi没有显示无服务器,上网无需插卡,这种随身WiFi解决方案才厉害!
  14. 蓝牙核心规范V5.3版本有这些变动,你需要知道的都在这里
  15. 保持控制权的六大方法
  16. PS创建选区的工具-----选框工具
  17. C#:实现随机洗牌Knuth-Durstenfeld Shuffle算法​(附完整源码)
  18. 网络对抗作业 一------翟一鸣
  19. canvas是什么牌子的包_CELINE的包包怎么样?
  20. GD32F303 使用 STM32Cubmex 开发应用 使用GD32官方例程 开发Bootloader 修正错误 见评论

热门文章

  1. java接口那一节是哪的知识_Java中的接口知识汇总
  2. C语言中比较大小的函数模板,C语言中实现模板函数小结 : 不敢流泪
  3. java分桃子_猴子分桃子.java
  4. python交通标志识别_YOLOv3目标检测实战:交通标志识别
  5. 机器学习——常用算法的总结
  6. java实用教程——组件及事件处理——布局管理(五种)
  7. Java当中 IO(File) 操作 之 递归打印子孙级目录和文件名称
  8. 计算机 ieee access,计算机 | IEEE Access 诚邀专刊稿件 (IF:3.557)
  9. 算法-二分搜索-找出最大值和次大值
  10. Millenium Leapcow POJ - 2111 (千禧年跳牛)(贪心找最长路径,记忆化)