codeforces #262 DIV2 C称号Present(二分法+贪婪)
职务地址:http://codeforces.com/contest/460/problem/C
这个题是用二分枚举最小值。然后推断是否能在规定的次数内使得全部的数都达到这个值。推断的时候要用贪心的方法推断,从左往右遍历。这时候须要让每次浇花的范围尽量向右。所以当到达一个不得不浇花的地方时,要继续占用所须要的浇花次数。当浇花次数不够用的时候,就说明无法达到。
在我的代码中,c数组是记录当前到了该点的时候浇花范围的最右界。表示到了这个地方的时候少了多少次覆盖。y就代表当前这个数被多少个浇花范围覆盖。x是指还剩余的浇花次数。
忘了初始化。。二分非常明显不好调试。
。调了将近20分钟才发现忘了对C数组初始化。。
。sad。
。。。
代码例如以下:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <algorithm>
#include <queue>
using namespace std;
#define LL __int64
LL a[110000], b[110000], c[110000];
int main()
{
LL n, m, i, w, ans, x, y;
scanf("%I64d%I64d%I64d",&n,&m,&w);
for(i=0;i<n;i++)
{
scanf("%I64d",&a[i]);
}
memset(c,0,sizeof(c));
LL low=1, high=1e10, mid;
while(low<=high)
{
mid=(high+low)/2;
//printf("%I64d\n",mid);
x=m;
y=0;
memset(c,0,sizeof(c));
int flag=0;
for(i=0;i<n;i++)
{
b[i]=mid-a[i];
if(b[i]<0)
b[i]=0;
}
for(i=0;i<n;i++)
{
y+=c[i];
b[i]-=y;
if(b[i]>0)
{
if(x-b[i]<0)
{
flag=1;
break;
}
else
{
x-=b[i];
y+=b[i];
if(i+w<n)
c[i+w]-=b[i];
}
}
}
//printf("%I64d %d\n",mid, flag);
if(flag)
{
high=mid-1;
}
else
{
ans=mid;
low=mid+1;
}
//printf("%I64d\n",ans);
}
printf("%I64d\n",ans);
return 0;
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
codeforces #262 DIV2 C称号Present(二分法+贪婪)的更多相关文章
- codeforces #262 DIV2 B题 Little Dima and Equation
题目地址:http://codeforces.com/contest/460/problem/B 这题乍一看没思路.可是细致分析下会发现,s(x)是一个从1到81的数,不管x是多少.所以能够枚举1到8 ...
- Codeforces #180 div2 C Parity Game
// Codeforces #180 div2 C Parity Game // // 这个问题的意思被摄物体没有解释 // // 这个主题是如此的狠一点(对我来说,),不多说了这 // // 解决问 ...
- Codeforces #541 (Div2) - E. String Multiplication(动态规划)
Problem Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...
- Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)
Problem Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...
- Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)
Problem Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...
- Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)
Problem Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...
- 【Codeforces #312 div2 A】Lala Land and Apple Trees
# [Codeforces #312 div2 A]Lala Land and Apple Trees 首先,此题的大意是在一条坐标轴上,有\(n\)个点,每个点的权值为\(a_{i}\),第一次从原 ...
- Codeforces Round #262 (Div. 2) 460C. Present(二分)
题目链接:http://codeforces.com/problemset/problem/460/C C. Present time limit per test 2 seconds memory ...
- Codeforces #263 div2 解题报告
比赛链接:http://codeforces.com/contest/462 这次比赛的时候,刚刚注冊的时候非常想好好的做一下,可是网上喝了个小酒之后.也就迷迷糊糊地看了题目,做了几题.一觉醒来发现r ...
随机推荐
- JavaScript 初识Promise 对象
什么是Promise? 其实, Promise就是一个类,而且这个类已经成为ES6的标准,是 ECMAScript 6 规范的重要特性之一.这个类目前在chrome32.Opera19.Firefox ...
- 读改善c#代码157个建议:建议10~12
目录: 建议10:创建对象时需要考虑是否实现比较器 建议11:区别对待==与Equals 建议12:重写Equals时也要重写GetHashCode 一.建议10:创建对象时需要考虑是否实现比较器 比 ...
- POJ 3982 序列 塔尔苏斯问题解决
而且还加入了大量的主题,直接或模板Java我们能够在水. 除了循环33它的时间,计算A99它是第几,输出准确回答. #include <stdio.h> #include <stri ...
- ASP.NET MVC(C#)和Quartz.Net组件
ASP.NET MVC(C#)和Quartz.Net组件 在之前的文章<推荐一个简单.轻量.功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler>和&l ...
- imagick获取图片的大小bug
<? php /* imagick的获取图片的高度和宽度函数有问题,使用GD函数可获得正确结果 gd函数 array getimagesize ( string $filename [, arr ...
- urlrewrite使用地址重写
地址重写: 主要是为了站点的安全. 比如我们平时的地址请求 地址重写前,訪问路径是: /read.egov?action=read&bid=2 地址重写后,訪问路径是:/read-read-2 ...
- NVCC编译器
http://blog.csdn.net/bendanban/article/details/8518382 mark一下 几个方案可以用: 方案1: 将所有文件分别编译,最后统一合并! 对于C程序 ...
- MyEclipse中将项目导出jar包,以及转化成EXE文件
1.对于项目如何导出jar文件,和生成exe,解答目录如下: 首先生成jar文件,单击项目名称CF-users(这是我的协同过滤项目文件名称)右击--->Export如下图: 单击下一步 Sel ...
- 漂浮广告代码兼容ie、firefox,多个漂浮不冲突,调用只需两行代码
原文:漂浮广告代码兼容ie.firefox,多个漂浮不冲突,调用只需两行代码 将广告内容放在div中,设置一个id,然后用下面方法调用var adcls=new AdMove("div的id ...
- 十天学Linux内核之第八天---构建Linux内核
原文:十天学Linux内核之第八天---构建Linux内核 今天是腊八节,说好的女票要给我做的腊八粥就这样泡汤了,好伤心,好心酸呀,看来代码写久了真的是惹人烦滴,所以告诫各位技术男敲醒警钟,不要想我看 ...