CF1901D Yet Another Monster Fight
GDKOI PJ DAY1 T2 原。
终于有时间来补题了。
还是考虑二分答案,因为他要求最大值最小。
然后考虑怎么检验,考虑求出 表示打死当前这个怪物的最慢的时刻。如果 则说明小于 的位置都不可取,(因为题目要求用任意的攻击顺序,如果取了 以前的话可以把 以前的全部打完再来打 ,但这不合法。)同理,如果 ,则说明大于 的位置都不可取。
所以对每个怪物遍历求最后可以施展攻击的交集即可。
时间为 。
#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
#define int long long
int a[N],n;
bool check(int x){
int l=1,r=n;
for(int i=1;i<=n;i++){
if(x<a[i]) return false;
int lst=x-a[i]+1;
if(lst<i) l=max(l,i);
if(lst<n-i+1) r=min(r,i);
}
if(l<=r) return true;
return false;
}
void Find(){
int l=1,r=2e9,ans=0;
while(l<r){
int mid=(l+r)>>1;
if(check(mid)) ans=mid,r=mid;
else l=mid+1;
}
cout<<ans<<endl;
}
signed main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
Find();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现