给你n高树花。m日,每天连续浇筑w鲜花。一天一次,花长1高度单位

求m天后。最矮的花最高是多少

最大最小问题能够用二分来解

首先我们能够得到全部花的最矮高度即答案的下界,给这个花浇m天即是答案的上界

然后二分枚举答案,检验合法性。

怎样检验合法性

我们用个数组来记录need[i]表示 i点须要浇的次数(从i点開始的区间)

我们再用一个变量has来维护 i点已经被浇了的次数(由i点之前的在浇花范围内的点浇过的次数和)

动态地维护这两个值就可以

假设不够浇的。need[i]前缀和已经大于m天。则return false;

不然 return true;

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
const int NN=111111;
int n,m,w;
int need[NN];
int f[NN];
bool can(int s){int a=0;int b=m;for(int i=1;i<=n;i++){if(i>=w)a-=need[i-w];need[i]=max((int)0,s-a-f[i]);a+=need[i];b-=need[i];if(b<0)return false;}return true;
}
int main(){
#ifndef ONLINE_JUDGEfreopen("G:/in.txt","r",stdin);//freopen("G:/myout.txt","w",stdout);
#endifcin>>n>>m>>w;int minn=(1<<30);for(int i=1;i<=n;i++){cin>>f[i];minn=min(f[i],minn);}int maxn=minn+m;int mid=(minn+maxn)/2+1;while(minn<maxn){if(can(mid)){minn=mid;}else{maxn=mid-1;}mid=(minn+maxn)/2+1;}cout<<minn<<endl;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/blfshiye/p/4904209.html

CF 460C Present 【DP+】主意相关推荐

  1. CF 335B. Palindrome(DP)

    题目链接 挺好玩的一个题,1Y... 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> ...

  2. cf 1060e 树形dp 树上任意两点的距离和

    题意: 给出一个树,把树上任意两个相隔一个点的点加一条边,问加完边之后任意两点的距离和是多少.   参考博客 :https://blog.csdn.net/Mr_Treeeee/article/det ...

  3. CF 811C (DP)

    http://codeforces.com/problemset/problem/811/C 题意是一群人在坐火车.先告诉你有n个人,然后告诉你n个目的地(用数字表示的).目的地一样的所有人要么都在一 ...

  4. Codeforces Round #262 (Div. 2) 460C. Present(二分)

    题目链接:http://codeforces.com/problemset/problem/460/C C. Present time limit per test 2 seconds memory ...

  5. Codeforces Round #262 (Div. 2) 460C. Present

    题目连接:http://codeforces.com/problemset/problem/460/C C. Present time limit per test 2 seconds memory ...

  6. CF #536div2E(dp)

    简单入门版:洛谷1280 时间交叉和倒序处理的思路是相同的,相较之下此题更多的条件是:1.每个任务可以在很多个时间点中选一个去做:2.会有捣乱. 解决方法:1.每个时间点选哪个根据规则的话是固定的可预 ...

  7. Codeforces 460C Present

    题意:有n多初始高度不同的花,每次浇水可以浇相邻的w朵花,每一次浇水花都会长高一个单位,可以浇m次,问怎样浇水才能使最低的那朵花最高.最高是多少. 思路:很显然的最大化最小值问题.仔细观察可以发现并没 ...

  8. *codeforces 460C Present

    新技能get!感谢杰神指导! 题意: 给你一个序列,每次你能让连续的w个值+1,你最多只能执行m次这样的操作.让你使得m次操作后最小值最大. 思路: 最小最大值,二分. 但怎么维护一个序列?可以开这样 ...

  9. CF 379D NewYearLetter [dp+暴力]

    题意: 给出k,x,n,m 找出这样的字符串s1,s2,s1长为n,s2长为m 给出规则,sn=sn-1+sn-2 使得第Sk项出现x个"AC"子串 我们很容易知道k次运算后有几个 ...

  10. CF 474D Flowers DP

    状态转移方程     d[i] [1] 表示长度为i最后一个字母为W      d[i] [0] 表示长度为i最后一个字母为R     d[i] [1] = d[i-k] [1] + d[i-k] [ ...

最新文章

  1. 国内可用的NTP服务器地址列表 网络时间 服务器
  2. SyncML协议简述
  3. TensorFlow2.0(七)--基础API使用
  4. 素数 [2008年北京航空航天大学计算机研究生机试真题]
  5. 像数据科学家一样思考:12步指南(上) 1
  6. vs2012打开c语言贪吃蛇,第一个满意的C语言控制台游戏——贪吃蛇(原创)
  7. 绘制自己组合的k线图_史上最全K线图大全:搞懂70种K线组合形态,轻松低买高卖不踏空...
  8. javascript测试题和参考答案
  9. 大量的linux、H3C、cisco、华为、模拟器、adobe教程
  10. 直播客户端和浏览器使用桌面共享时出现黑屏等问题
  11. IDEA卸载和删除注册表
  12. 如何在家赚钱,盘点5个方法,让你足不出户也能挣钱
  13. Pytorch - Illegal instruction
  14. android横竖屏切换动画,Android应用怎么实现屏幕横竖屏切换功能
  15. 拯救者R9000P网络不可用问题解决
  16. 常见数字规律:帕累托定律与本福特定律
  17. FAF世链区块链大会|启元社社长徐道彬: 创新价值成为区块链真正的牵引力
  18. 原来黑客长这样(外国篇)
  19. 【制作多媒体演示文稿软件】Focusky教程 | 如何在focusky演示文稿中添加音乐?
  20. 《数字中国建设整体布局规划》出炉,背后蕴含的数字城市巨大机遇

热门文章

  1. error LNK2001: 无法解析的外部符号_wWinMainCRTStartup
  2. 面试考知识点,吾亦很难通过
  3. 对即时通讯个人信息的一点想法
  4. 手机输入法并一不一定要横向充满
  5. 管理感悟:需要什么样的技术文档
  6. html用于信息展示的表格源码,Html表格
  7. c++ primer plus 复合类型之数组
  8. python装饰器举例_Python学习笔记:装饰器(Decorator)
  9. aspose 转pdf表格大小乱了_关于Aspose.Words转PDF简体中文排版问题申明
  10. 乘法口诀表 java_利用java 实现一个九九乘法口诀表