社区讨论
数据过水请求添加 hack
P13754 【MX-X17-T3】Distraction参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhjgv4ej
- 此快照首次捕获于
- 2025/11/04 02:21 4 个月前
- 此快照最后确认于
- 2025/11/04 02:21 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int _,n,p[5000006],v[5000005],weizhi[2];
long long caozuo,sum;
int main(){
scanf("%d",&_);
while(_--){
sum=0;//v[i]的和
caozuo=0;//一次操作所带来的收益
weizhi[1]=weizhi[0]=0;//之前前缀和的最大值的下标的奇偶性
long long qjh=0,lastmin=0x3f3f3f3f3f3f3f3f;//前缀和,之前前缀和的最小值
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&p[i]);
v[i]=abs(p[i]-i)%2;
sum+=v[i];
caozuo=max(caozuo,qjh-lastmin-v[i]+weizhi[(p[i]+1)%2]);
if(v[i]==1)qjh--;
else qjh++;
if(qjh<lastmin){
lastmin=qjh;
weizhi[1]=weizhi[0]=0;
weizhi[(i+1)%2]=1;
}
else if(qjh==lastmin){
weizhi[(i+1)%2]=1;
}
}
printf("%lld\n",max(caozuo+sum,sum));
}
}
第二个样例不过但题过了。。。。
本质问题在于测试点没有包含操作是将一个数调到数组头的情况
回复
共 2 条回复,欢迎继续交流。
正在加载回复...