D. Blocking Elements
题解
最大值最小化,想到了二分
而对于一个二分到的
对于一个给定的二分值而言,要想成功有两个约束条件,一个是间断值不超过
由此我们让第一个条件作为约束条件来寻找第二个条件是否成立
这里太巧妙了!!!!
设
然后判断
真的太巧妙了!!!
code
···
include<bits/stdc++.h>
define ll long long
using namespace std;
ll n;
ll a[100005]={0};
ll pres[100005]={0};
ll dp[100005]={0};
struct node
{
ll x;
bool operator<(const node &b) const{return dp[x]>dp[b.x];}
};
ll check(ll maxlen)
{
priority_queue<node> q;
q.push({0});
a[n+1]=0;
for(ll i=1;i<=n+1;i++)
{
while(q.size()&&pres[i-1]-pres[q.top().x]>maxlen) q.pop();
ll x=q.top().x;
dp[i]=dp[x]+a[i];
q.push({i});
}
if(dp[n+1]>maxlen) return 0;
return 1;
}
int main()
{
ll t;
cin>>t;
while(t--)
{
cin>>n;
for(ll i=1;i<=n;i++)
{
cin>>a[i];
pres[i]=pres[i-1]+a[i];
}
ll l=0,r=pres[n];
while(l+1<r)
{
ll mid=(l+r)/2;
if(check(mid))r=mid;
else l=mid;
}
cout<<r<<endl;
}
return 0;
}
···
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~