codeforces 460C - Present 二分加模拟
代码有详细解释,二分模拟寻找结果,贪心选择从哪开始浇花,原则就是遇到需要浇花的就浇,至于w可以用线段树来维护线段,但也可以用一个数组标记一下,二分总是有很多问题啊,所以写很多输出用来调试,jiong
/*************************************************************************> File Name: 460c.cpp> Author: yang> Mail:826123027@qq.com > Created Time: 2014年08月22日 星期五 11:17:43************************************************************************/#include<iostream>
using namespace std;
#include<memory.h>
#include<stdio.h>
#define N 100005
int a[N];
int main(){int n,m,w,memory[N],b[N];while(cin>>n>>m>>w){int l=0x7FFFFFFF,r=0;for(int i=0;i<n;i++){cin>>a[i];if(a[i]<l) l=a[i];if(a[i]>r) r=a[i];}r+=m;//最长的高度while(l<=r){//这里一开始没有=号,wa了一次int tempm=m;int mid=(l+r)>>1;for(int i=0;i<n;i++){b[i]=mid-a[i];//b数组用来记录每朵花需要的天数if(b[i]<=0) b[i]=0;}memset(memory,0,sizeof(memory));//记住什么时候结束w长度的浇花int index=0,x=0;//x表示每朵花在因为前面浇花的的影响,也应该得到的浇花天数,例如前面i花浇x天,w为3,那么i+1,i+2的花也得到了x天的浇花for(int i=0;i<n;i++){x+=memory[i];if((b[i]-x)>0){b[i]-=x;tempm-=b[i];if(tempm<0){break;}x+=b[i];//x累计能从前面浇花时得到浇花天数memory[i+w]-=b[i];//长度活了w之后将的得到的浇花天数还回去} }if(tempm>=0)l=mid+1;else r=mid-1;}printf("%d\n",l-1);}
}
codeforces 460C - Present 二分加模拟相关推荐
- Codeforces 460C Present
题意:有n多初始高度不同的花,每次浇水可以浇相邻的w朵花,每一次浇水花都会长高一个单位,可以浇m次,问怎样浇水才能使最低的那朵花最高.最高是多少. 思路:很显然的最大化最小值问题.仔细观察可以发现并没 ...
- *codeforces 460C Present
新技能get!感谢杰神指导! 题意: 给你一个序列,每次你能让连续的w个值+1,你最多只能执行m次这样的操作.让你使得m次操作后最小值最大. 思路: 最小最大值,二分. 但怎么维护一个序列?可以开这样 ...
- CodeForces 1463 C. Busy Robot 模拟
CodeForces 1463 C. Busy Robot 模拟 题目大意: 有一个一维坐标轴,在最初时刻有个机器人位于坐标 0 0 0 位置,有 n n n 个命令,对于每一个命令在 t i t_i ...
- 牛客小白月赛28 E-会当凌绝顶,一览众山小 线段树+二分暴力模拟
牛客小白月赛28 E-会当凌绝顶,一览众山小 线段树+二分暴力模拟 题意 思路 Code 传送门: https://ac.nowcoder.com/acm/contest/16081/E 题意 登山顺 ...
- 运用二分加验证解决 华华给月月准备礼物
链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 二月中旬虐狗节前夕,华华决定给月月准备一份礼物.为了搭建礼物的底座,华华需要若干根同样长的木棍.华华手头上有一些长度参差不齐的木棍 ...
- 制袋机横切机程序威纶通触摸屏和三菱3UPLC加模拟量4DA模块,控制两台变频器
制袋机横切机程序威纶通触摸屏和三菱3UPLC加模拟量4DA模块,控制两台变频器(主机和给料辊筒)和一台送料伺服. 通过触摸屏设定一分钟张数,程序自动算出伺服送料速度,和后面给料速度. 主要是参数计算思 ...
- Codeforces Round #262 (Div. 2) 460C. Present(二分)
题目链接:http://codeforces.com/problemset/problem/460/C C. Present time limit per test 2 seconds memory ...
- 【CodeForces - 460C】Present(二分+树状数组)
题干: 给定N朵花的原先的高度,从左到右排列,最多浇水m天,每天只能浇一次,每次使得连续的w朵花的高度增长1,问最后最矮的花的高度最高是多少. Examples Input 6 2 3 2 2 2 2 ...
- Codeforces Round #262 (Div. 2) 460C. Present
题目连接:http://codeforces.com/problemset/problem/460/C C. Present time limit per test 2 seconds memory ...
- CodeForces #379(734A|734B|734C|734D|734E|734F)|二分查找|模拟|树的半径|位运算
734A: Anton and Danik 题目大意 给定字符串中,D多输出Danik,A多输出Anton,一样多输出Friendship 题解 #include <cstdio> cha ...
最新文章
- IOS之TableViewCell重用机制避免重复显示问题
- leetcode 365. Water and Jug Problem | 365. 水壶问题(Java)
- matlab工程计算及应用 课程名称,《 MATLAB 工程计算及应用》教学大纲课程名称MATLAB 工程计算及应用.pdf...
- php fpm www.conf,PHP7中php.ini、php-fpm和www.conf 配置
- python 配置文件类库_将自定义python模块增加到类库搜索路径下面
- aix oracle版本查看命令,AIX 常用命令
- Java获取接口所有实现类的方式
- a标签href不跳转 禁止跳转
- 【解决】关于sscom不能保存当前窗口到文本文件的问题
- 为什么低通滤波器的作用相当于积分器
- Typecho独立下载插件安装与使用
- 最终结束漂泊的身份-我办理北京人才引进的经历
- 坚持#第235天~哎呀,最近培训云计算忙得都把写博客的大事给忘了,赶快捡起来
- 图片降噪免费软件有什么?快把这些软件收好
- 当“国风综艺”遇上“数字金融”,看国有大行解锁营销新范式
- 计算机cdef盘无法显示,win7计算机不显示硬盘分区盘符
- 嵌入式心得 (转载)
- vue实现购物车简单的功能-单选全选总价计算、批量删除
- python10个骚操作
- 【Python网络爬虫】实战#181024