你需要最大化被数量最少的弓箭手保护的墙被弓箭手保护的数量。想到什么,对了,二分答案。

对 $check$ 函数进行思考。

令答案为 $m$。

如果一个点的值小于 $m$,则考虑将其变成 $m$,那么将这一段加在哪里呢?

设位置为:$x$,要加的值为 $y$。贪心一下很显然要将以 $x$ 为起点向右的一段长度为 $2r$ 的区间都加上 $y$。

那么如何维护当前的值呢?看到单点查询,和区间加,相信很多人会想到线段树,但其实不用,差分数组即可维护。

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,r,k;
const int N=(5e5+7)*2;
int a[N],b[N],c[N];
int max(int a,int b){
return (a>b?a:b);
}
bool check(int k2){
int sum=0;
for(int i=1;i<=n;i++) c[i]=b[i];
for(int i=1;i<=n;i++){
c[i]+=c[i-1];
if(c[i]<k2){
//将以x为起点向右的一段长度为2r的区间都加上y.代码中i是x,x是y。
int x=k2-c[i];
sum+=x;
c[i]+=x;
c[i+2*r+1]-=x;
if(sum>k) return 0;
}
}
return 1;
}
signed main() {
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int l=0,r2=0,mid,ans;
cin>>n>>r>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i+r+1]-=a[i];
b[max(1,i-r)]+=a[i];
r2+=a[i]+k;
}
while(l<=r2){
mid=(l+r2)>>1;
if(check(mid)) l=mid+1,ans=mid;
else r2=mid-1;
}
cout<<ans;
return 0;
}

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. [CF954G]Castle Defense

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

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

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

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

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

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

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

  8. Castle Core 4.0.0 alpha001发布

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

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

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

  10. AOP之Castle DynamicProxy 动态代理

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

随机推荐

  1. ssh: connect to host github.com port 22: Connection timed out----git问题记录

    今天使用git命令提交代码,git add .,git commit -m '',git push 一顿操作猛如虎啊,嘴角一勾,邪魅一笑像往常一样期待着等着进度条100%,然后直接出现ssh: con ...

  2. 第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp

    第十八届全国大学生信息安全竞赛暨第二届"长城杯"铁人三项赛web方向部分wp hello_web 查看源代码发现有两个文件,访问一下 Tips是phpinfo 里面可以看到disa ...

  3. Oracle 对 Json 数据进行增删改

    1.背景: 由于项目要求,需要对大型的 Json 数据入库到DB中(clob 类型),由于内容过长或者 oracle 版本限制,有一些熟知的处理方法是不能使用的. 精确解决问题,可以直接看第四步:[4 ...

  4. GPU的硬件组成及运行原理

    GPU的硬件组成 GPU 是一种专门为图形处理而设计的处理器,它的设计目标是在处理大规模.高并发的图形数据时提供高效的计算能力.与 CPU 相比,GPU 的处理器数量更多,每个处理器的计算能力相对较弱 ...

  5. leetcode3208. 交替组 II

    循环数组问题,指针问题 代码 比较好实现的,只需要对右端点维护,如果达到了>=k便可以被计数,循环数组可以两边循环做到 点击查看代码 class Solution { public int nu ...

  6. C 语言内存布局深度剖析:从栈到堆,你真的了解吗?

    大家好,我是小康. 今天咱们聊点看似复杂实则简单的东西 -- C 语言的内存布局. 别急着翻页!相信我,读完这篇文章,你会拍着大腿说:"原来这么简单!" 微信搜索 「跟着小康学编程 ...

  7. JBoltAI 与 AIGS 的深度融合:重构企业数智化未来

    在企业数智化转型浪潮中,JBoltAI 凭借其独特的 AIGS(AI Generate Service)解决方案,正成为连接大模型能力与企业实际需求的桥梁.其核心价值在于通过技术框架的重构,将 AI ...

  8. 感觉程序员要被 AI 淘汰了?学什么才有机会?

    感觉程序员要被 AI 淘汰了?学什么才有机会? ️ 推荐观看视频版:https://www.bilibili.com/video/BV1i9Z8YhEja AI 会淘汰程序员么? 我的答案是 &quo ...

  9. 面试的信心来源于过硬的基础 viewport、跨域、 渲染优化、数组乱序、盒子垂直水平居中、meta、消除transition闪屏、JS 判断设备来源

    原文:面试的信心来源于过硬的基础 在过去的一年很多人不满于公司没有福利.人际关系不好相处.没有发展前途的境遇等等,想着在开年来换一份工作来重新开始自己,那么 你 准备好了吗? 下面是本人整理的一份面试 ...

  10. nexus私有仓库与maven集成

    首先搭建maven 下载maven,并解压,移动到/usr/local/,重命名为 maven-3.5.4 配置环境变量:vim /etc/profileexport MAVEN_HOME=/usr/ ...