Codefores 460C-Present(二分+贪心)
在打哈尔滨理工大学个人训练赛做到的题目。
觉得挺不错的,挺锻炼思维的。
题目大意:给定n朵花,每朵花的高度不一样,还有m天,有一种神奇的水可以使相邻的w朵花每天长高1,每天只能浇一次,问最矮的花最后最高能多少。
遇到这种最矮的最高问题,应该很快想到二分才对,但是又没想到。
然后想到二分应该怎么继续呢。那肯定是判断每朵花能不能达到x,这时就应该从左往右扫了。因为是每一朵,而根据这个相邻w,前面的w-1朵具有特殊性,前w朵中的第i朵一定能享受到他前面花浇的水,而w往后的就享受不到i-w之前浇的水了,这里可以用前缀和记录浇的水。
另外需要判断天数是否大于m以及是否都能达到x
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>
#include <stack>
#define fuck() (cout << "------------------------------" << endl)
using namespace std;
const int maxn = 100000 + 5;
const int inf = 0x3f3f3f3f;
long long a[maxn];
long long b[maxn];
int n,m,w;// n是多少朵花,m是剩余几天,w是一次能浇多长。
bool check(long long x)//x 最矮的高度
{memset(b,0,sizeof(b));long long time = 0;long long sum = 0;for(int i=0; i<n; i++){if(i >= w) sum -= b[i-w];// 享受不到比他前m朵花少浇的水,应该是类似前缀和的味道。if(x > a[i] + sum) // 达不到x{b[i] = x - sum - a[i]; //达到x还需要几天sum += b[i]; // 少浇几天水time += b[i]; //浇水次数总和}if(time > m)return false;}return true;
}
int main()
{while(scanf("%d%d%d",&n,&m,&w)!=EOF && n){for(int i=0; i<n; i++)scanf("%lld",&a[i]);long long l = 1, r = 100000000000000, mid ;long long ans = 0;while(l <= r){mid = (l+r) >> 1;if(check(mid)){ans = mid;l = mid + 1;}elser = mid - 1;}printf("%lld\n",ans);}
}
Codefores 460C-Present(二分+贪心)相关推荐
- 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)
CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...
- 洛谷P1182 数列分段 Section II(二分+贪心)
题目描述 对于给定的一个长度为N的正整数数列 A1∼NA _{1∼N}A1∼N,现要将其分成 M(M≤N)M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一 ...
- Codeforces Round #262 (Div. 2) 460C. Present(二分)
题目链接:http://codeforces.com/problemset/problem/460/C C. Present time limit per test 2 seconds memory ...
- [USACO16JAN]Angry Cows S[二分+贪心]
题意:Bessie 设计了一款新游戏:Angry Cows.在这个游戏中,玩家发射奶牛,每头奶牛落地时引爆一定范围内的干草.游戏的目标是使用一组奶牛引爆所有干草. N 捆干草排列在数轴上的不同位置.第 ...
- BZOJ2525 [Poi2011]Dynamite 【二分 + 贪心】
题目链接 BZOJ2525 题解 就是要求所有有炸弹的点到点燃点距离最大值最小 显然二分答案距离\(D\) 然后按深度排序,贪心点燃当前没覆盖的深度最深的点往上第\(D\)层的点 每覆盖一个点要标记其 ...
- hdu5248序列变换(二分+贪心)基础题
题意(中文的直接粘题意吧) ...
- 外卖(food) 洛谷4040宅男计划 三分套二分贪心
food评测传送门 [题目描述] 叫外卖是一个技术活,宅男宅女们一直面对着一个很大的矛盾,如何以有限的金钱在宿舍宅得尽量久. 外卖店一共有 N 种食物,每种食物有固定的价钱 Pi 与保质期 S ...
- LA 4254 Processor 处理器 【二分 贪心 优先队列】
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21663 二分: 最大值最小的问题通过二分来求解.对处理器速度进行 ...
- hdu 5248(二分+贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5248 解题思路:这道题我原本的思路是动态规划,结果看到数很大,结果放弃了.然后想到二分,思路是对的,只 ...
- poj3111 选取物品(二分+贪心)
题目传送门 题意就是,n个物品,从中选取k个,要按照那个公式所取的值最大. 思路:最大化平均值的时候首先想到的就是二分, 我们设G(x) 为单位的重量不小于X, 我们的目标就是要找到满足条件的最大的X ...
最新文章
- CentOS6.9编译安装Nginx1.12
- 如何部署HTTPS 申请证书 安装证书
- mysql sqlserver 函数_等价于MySQL中的SQLServer函数SCOPE_IDENTITY()??mysql-问答-阿里云开发者社区-阿里云...
- 写作心得——文章标题的重要性之一
- Jzoj4755 快速荷叶叶变换
- ubuntu安装LDAP
- java学习(156):反序列化
- 苹果手机怎么在照片上添加文字_手机照片如何添加花样文字?原来方法这么简单!...
- dart map 转list_Dart 集合类型List Set Map循环forEach map where any every
- 云南大学软件测试,软件测试大赛云南省省赛在软件学院如期举行
- 信息时代不被淘汰,获取成功需有的十种能力
- 使用python原生态的min和max函数实现升序排序和降序排序
- 一年级美术下册教案(新人美版)
- 当BIM遇上GIS-无人机倾斜摄影三维建模(ContextCapture) 建设智慧城市方法详解
- 美团点评 2019校招 前端方向职位试卷在线考试
- AD19原理图的设计流程
- 移动硬盘提示格式化解决办法,未正确删除导致不能读取文件提示格式化解决方案
- 修改手机屏幕刷新率_手机屏幕刷新率真的越高越好吗?
- 为什么大数据平台要回归SQL
- CRC码的编码、解码(循环冗余校验码)