社区讨论
WA on #2求调
P9691[GDCPC 2023] Base Station Construction参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mdd3i090
- 此快照首次捕获于
- 2025/07/21 20:41 8 个月前
- 此快照最后确认于
- 2025/11/04 03:59 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define int long long
const int M=5e5+5;
int T,n,m,a[M],q[M],pre[M];
int dp[M];
void solve()
{
scanf("%lld",&n);
for(int i=1;i<=n;++i) scanf("%lld",&a[i]),pre[i]=0;a[++n]=0;
scanf("%lld",&m);
for(int i=1;i<=m;++i)
{
int l,r;
scanf("%lld%lld",&l,&r);
pre[r+1]=max(pre[r+1],l);
}
pre[1]=0;
for(int i=2;i<=n;++i) pre[i]=max(pre[i],pre[i-1]);
int l=1,r=1;q[0]=0;
for(int i=1;i<=n;++i)
{
while(l<=r&&q[l]<pre[i]) l++;
dp[i]=dp[q[l]]+a[i];
while(l<=r&&dp[q[r]]>=dp[i]) r--;
q[++r]=i;
}
printf("%lld\n",dp[n]);
return;
}
signed main()
{
// freopen("data2.in","r",stdin);
// freopen("answer.out","w",stdout);
scanf("%lld",&T);
while(T--) solve();
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...