题目大意:有$n$个点,每个点最开始有$a_i$个弓箭手,在第$i$个位置的弓箭手可以给$[i-r,i+r]$区间加上$1$的防御,你还有$k$个弓箭手,要求你最大化最小防御值

题解:二分答案,从右向左扫,显然得知,给一个位置增加防御值最好方式是在最右段加一些弓箭手。

卡点:

C++ Code:

#include <cstdio>
#define maxn 500010
const long long inf = 0x3f3f3f3f3f3f3f3f;
int n, R;
long long k, protect1[maxn], s[maxn], protect2[maxn], protect3[maxn], p[maxn], protect4[maxn];
inline int min(int a, int b) {return a < b ? a : b;}
inline bool check(long long mid) {
__builtin_memset(p, 0, sizeof p);
int l = -R, r = R;
long long now = 0, K = k;
for (int i = 0; i < r; i++) now += s[i];
for (int i = 0; i < n; i++) {
now += s[r], now -= s[l - 1] + p[l - 1];
if (now < mid) {
p[r] = mid - now;
K -= p[r];
if (K < 0) return false;
now = mid;
}
r++, l++;
}
return true;
}
int main() {
scanf("%d%d%lld", &n, &R, &k);
for (int i = 0; i < n; i++) scanf("%lld", s + i);
long long l = 0, r = inf, ans;
while (l <= r) {
long long mid = l + r >> 1;
if (check(mid)) {
l = mid + 1;
ans = mid;
} else r = mid - 1;
}
printf("%lld\n", ans);
return 0;
}

  

[CF954G]Castle Defense的更多相关文章

  1. Educational Codeforces Round 40 G. Castle Defense (二分+滑动数组+greedy)

    G. Castle Defense time limit per test 1.5 seconds memory limit per test 256 megabytes input standard ...

  2. Codeforces 954 G. Castle Defense

    http://codeforces.com/problemset/problem/954/G 二分答案 检验的时候,从前往后枚举,如果发现某个位置的防御力<二分的值,那么新加的位置肯定是越靠后越 ...

  3. [CodeForces954G]Castle Defense(二分答案+差分)

    Description 题目链接 Solution 二分答案,套一个差分标记即可 每次放弓箭手显然越右边越优 Code #include <cstdio> #include <alg ...

  4. Educational Codeforces Round 40 (Rated for Div. 2) 954G G. Castle Defense

    题 OvO http://codeforces.com/contest/954/problem/G 解 二分答案, 对于每个二分的答案值 ANS,判断这个答案是否可行. 记 s 数组为题目中描述的 a ...

  5. Educational Codeforces Round 40 (Rated for Div. 2) Solution

    从这里开始 小结 题目列表 Problem A Diagonal Walking Problem B String Typing Problem C Matrix Walk Problem D Fig ...

  6. Educational Codeforces Round 40 A B C D E G

    A. Diagonal Walking 题意 将一个序列中所有的\('RU'\)或者\('UR'\)替换成\('D'\),问最终得到的序列最短长度为多少. 思路 贪心 Code #include &l ...

  7. Castle Core 4.0.0 alpha001发布

    时隔一年多以后Castle 项目又开始活跃,最近刚发布了Castle Core 4.0.0 的alpha版本, https://github.com/castleproject/Core/releas ...

  8. 对Castle Windsor的Resolve方法的解析时new对象的探讨

    依赖注入框架Castle Windsor从容器里解析一个实例时(也就是调用Resolve方法),是通过调用待解析对象的构造函数new一个对象并返回,那么问题是:它是调用哪个构造函数呢? 无参的构造函数 ...

  9. AOP之Castle DynamicProxy 动态代理

    这里主要介绍使用castle这个动态代理,在.net一些开源的框架里可以找到它的影子,就连微软的rchard也是使用这个进行方法拦截等可以基于这个进行方法拦截,在这个方面PostSharp算是比较好用 ...

随机推荐

  1. LeetCode706. Design HashMap

    题目  不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对.如果键对应的值已经存在,更新这个值. get ...

  2. 如何在maven中的项目使用tomcat插件

    在pom.xml中引入tomcat7插件,具体示例代码如下: <project> <build> <plugins> <plugin> <grou ...

  3. linux系统批量创建用户和生成8位随机密码

    1.1    脚本案例 批量创建20个用户,用户名为user1-user20,并生成8位随机登录密码,用户组采用键盘输入的方式,并将用户名及登录密码保存到/tmp/create_user.txt普通文 ...

  4. Python类与对象--基础

    ## 类 - 具体事物的抽象和总结,是事物的共性,由属性和方法两个部分构成,比如一个Person类,有是身高.体重.肤色等属性,也有吃饭.睡觉.观察.等方法 ## 对象 - 具体的事物,单一.个体.特 ...

  5. php mysql find_in_set函数 检索单子段 逗号分隔序列

    FIND_IN_SET($kwd,field) 例如在 表 AA中 numbers 字段  保存列数据 1,4,8,75,41,7 就可以使用  FIND_IN_SET(8,numbers)  查询记 ...

  6. 实用jquery插件

    jquery toast 一个弹窗插件 jquery.form.min.js 一个Ajax表单插件

  7. strak组件(10):批量操作

    效果图: 批量删除只是一个例子,可以根据需求定制自己想要的批量操作. 新增函数 def get_action_list(self) 钩子方法,获取要处理的批量操作的函数 def action_mult ...

  8. linux-shell——03

    mkdir 创建一个新目录格式: mkdir [选项-p][路径]目录名 -p 递归创建多级目录 mkdir -p b/c/e/f/g rmdir 删除一个空目录 touch 创建一个空文件,更新文件 ...

  9. C# 设置窗口大小为不可调、取消最大化、最小化窗口按键

    this.FormBorderStyle = FormBorderStyle.FixedDialog;//设置边框为不可调节 this.MaximizeBox = false; //取消最大化按键 t ...

  10. HyperLedger Fabric 1.4 区块链技术形成(1.2)

    在比特币诞生之时,没有区块链技术概念,当人们看到比特币在无中心干预的前提下,还能安全.可靠的运行,比特币网络打开了人们的想象空间:技术专家们开始研究比特币的底层技术,并抽象提取出来,形成区块链技术,或 ...