CF506C Mr. Kitayuta vs. Bamboos

  • 有nnn个竹子,第iii棵竹子第一天之前的高度是hih_ihi​,每一天的末尾会长高aia_iai​
  • 每一天你可以将砍kkk刀,每一刀将一个竹子砍ppp,如果砍的竹子高度小于ppp,那么将会被砍到000.
  • 求mmm天之后最高的竹子最矮是多少。
  • 注意每一天是先砍竹子、再长竹子。
  • n≤1e5,m≤1e4,k≤10n\le1e5,m\le1e4,k\le10n≤1e5,m≤1e4,k≤10,所有读入的数≤1e9\le1e9≤1e9。

Solution

  • 考虑二分答案ansansans。然后有两种方法,这里重点介绍solution1:
  • 显然每一个竹子最多砍c=max(0,⌈hi+aim−ansp⌉)c=max(0,\lceil\frac{h_i+a_im-ans}{p} \rceil)c=max(0,⌈phi​+ai​m−ans​⌉)刀,我们求出这ccc刀最早在什么时候砍,那么第一刀可以不砍满,后面的每一刀都要砍满,这样可以对于这个竹子让每一刀尽量往前排,然后要求这个竹子的每一刀都不能在这一刀之前砍,然后前往后扫一遍就可以了。
  • 这个方法看起来就非常的假,为什么不能将某一刀均摊到前面的若干刀呢,而且如果预计的某一刀往后挪了,那么相当于浪费少了,后面的一刀的最早出现时间可不可以提前呢?
  • 让我们来证明一下这个方法的正确性。
  • 首先考虑第一刀之前能不能多砍一刀。根据对于第一刀的定义,往前砍并不能使得(hi+aim−ans)%p≤0(h_i+a_im-ans)\%p\le0(hi​+ai​m−ans)%p≤0,即对于后面的刀数没有影响(也就是后面原本要砍多少刀,刀现在还是要砍),并且为了让下一刀最早,如果往前砍了,下一刀最早还是会落在上述的第一刀上,所以第一刀之前肯定不能砍。
  • 考虑之后的几刀之前能不能砍,同理对于后面的刀数没有影响,按照原来的排列才能让每一刀最早能动。
  • 最后考虑如果之前的某一刀被迫后移了,同样对于刀数没有影响,但是可能会使得后面排列整体后移(因为浪费少了),但是最早出现在原先的地方肯定是没有问题的。
  • 综上,当且仅当在这些位置之后砍是最优的。

  • 第二种方法就是反过来做,拔高竹子,贪心地取小于000的竹子,最后判定竹子的高度比初始高度要高即可。

Solution1:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define maxn 100005
#define ll long long
using namespace std;int n,m,K,i,j,k;
ll h[maxn],v[maxn],p,s[maxn];int check(ll lim){ll cnt=0;for(i=1;i<=n;i++) cnt+=max(0ll,(h[i]+v[i]*m-lim+p-1)/p);if (cnt>m*K) return 0;for(i=0;i<=m;i++) s[i]=0;for(i=1;i<=n;i++) if (h[i]+v[i]*m>lim){for(ll res=(h[i]+v[i]*m-lim)%p;res<=h[i]+v[i]*m-lim;res+=p) if (res){if (res<=h[i]) s[1]++; else if ((res-h[i]+v[i]-1)/v[i]+1>m) return 0; else s[(res-h[i]+v[i]-1)/v[i]+1]++;}}cnt=0;for(i=1;i<=m;i++){cnt+=s[i];cnt=max(0ll,cnt-K);}return !cnt;
}int main(){//  freopen("ceshi.in","r",stdin);scanf("%d%d%d%lld",&n,&m,&K,&p);for(i=1;i<=n;i++) scanf("%lld%lld",&h[i],&v[i]);ll l=0,r=0,mid,ans;for(i=1;i<=n;i++) r=max(r,h[i]+v[i]*m);while (l<=r){mid=(l+r)>>1;if (check(mid)) ans=mid,r=mid-1;else l=mid+1;}printf("%lld",ans);
}

CF506C Mr. Kitayuta vs. Bamboos相关推荐

  1. [CF506C]Mr. Kitayuta vs. Bamboos

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

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

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

  3. Mr. Kitayuta vs. Bamboos

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

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

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

  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. 【每日一题】8月12日题目精讲 Mr. Kitayuta, the Treasure Hunter

    来源:牛客网: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 The Shuseki I ...

  8. 505B. Mr. Kitayuta‘s Colorful Graph

    B. Mr. Kitayuta's Colorful Graph:题目 一开始就像到了DFS,并查集也不难想到. 弗洛伊德算法倒是不容易想到,平时不这么用..... #include <bits ...

  9. Mr. Kitayuta‘s Technology CodeForces - 505D(并查集+拓扑排序或dfs找环) 题解

    题目  Shuseki Kingdom is the world's leading nation for innovation and technology. There are n cities ...

最新文章

  1. U^2-Net跨界肖像画,完美复刻人物细节,GitHub标星2.5K+
  2. 2017级数据结构助教批改方案
  3. ML之kNN:k最近邻kNN算法的简介、应用、经典案例之详细攻略
  4. 几家OA厂商介绍及产品特点总结
  5. 初学python之路-day18
  6. 《剑指offer》栈的压入、弹出序列
  7. mysql的sql执行过程和explain语句
  8. ajax漏洞 console_在实战中可能碰到的几种ajax请求方法详解
  9. 用matlab录制声音然后进行读取和播放
  10. 全国主要城市不同日照标准的间距系数
  11. 阿里云服务器centos7 安装docker 和docker-compose 及相关命令
  12. minimax算法_如何通过使用minimax算法使Tic Tac Toe游戏无与伦比
  13. 动画 | 什么是红黑树?(与2-3树等价)
  14. Maven---尚硅谷学习笔记Eclipse版
  15. 郝萌主的微信公众号上线了
  16. Bad Smell (代码的坏味道)
  17. 电子专业毕业后,到底能做什么?
  18. PCB抄板最新方法及步骤
  19. 企业网路神警上网行为监管系统
  20. 信奥一本通 1396:病毒(virus)

热门文章

  1. 深入探索Android内存优化
  2. 基于Jsoup的Java爬虫-爬取必应壁纸网站的壁纸(Java静态壁纸爬虫实例)
  3. 图片与mat文件的转换
  4. PDA手持终端扫描条码开单打印一体 结合后台电脑系统 数据同步交互解决方案
  5. 最近很多人问我:saiku下载不下来
  6. 如何在word中的方框中打勾
  7. iphone怎样关闭副屏_机情烩:联通eSIM主副卡业务上线 副卡套餐最低仅10元
  8. PO模式项目实战思路分析
  9. mysql优化面试整理-吊打面试官
  10. 4G工业路由器DTU的扩展功能