社区讨论
Wa在哪,出题人我爱死你了
P15289「YLLOI-R3-T4」止战之殇参与者 4已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @mljbw3ek
- 此快照首次捕获于
- 2026/02/12 18:41 7 天前
- 此快照最后确认于
- 2026/02/15 10:20 4 天前
悬棺。
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
const int ri=1e6+5;
int n,a,b[ri],d,cnt[ri],cnt1[ri],ans,ans1;
signed main(){
cin>>n>>a>>d;
for(int i=1;i<=n-1;i++){
cin>>b[i];
cnt[i]=cnt1[i]=(b[i]-2)/(2*d);
// cout<<cnt[i]<<" ";
}
// cout<<endl;
// ans+=max(0ll,cnt[a]-1);
// ans1+=max(0ll,cnt1[a]-1);
// if(cnt[a]>1) cnt[a]=cnt1[a]=1;
// else ans1++,ans++;
int i=a;
while(1<=i){
if(i==1){
ans+=cnt[1];
cnt[1]=0;
break;
}
if(cnt[i-1]<=1){
if(cnt[i-1]<=0&&cnt[i-2]<=0){
ans+=cnt[i];
cnt[i]=0;
break;
}
if(cnt[i-2]<=1&&i-2>=1){
ans+=1;
cnt[i-2]=0;
i=i-2;
}else if(i-2>=1){
ans+=cnt[i-2]-1;
cnt[i-2]=1;
i=i-2;
}else{
break;
}
}else{
ans+=cnt[i-1]-1;
cnt[i-1]=1;
i=i-1;
}
}
// for(int i=1;i<=n-1;i++){
// cout<<cnt[i]<<" ";
// }
// cout<<endl;
while(i<n){
if(i==n-1){
ans+=cnt[n-1];
cnt[n-1]=0;
break;
}
// if(cnt[i+1]<=0&&cnt[i+2]<=0){
// ans+=cnt[i];
// cnt[i]=0;
// break;
// }
if(cnt[i+1]>0){
ans+=cnt[i+1];
cnt[i+1]=0;
i+=1;
continue;
}
else if(cnt[i+2]>0&&i+2<n){
ans+=cnt[i+2];
cnt[i+2]=0;
i=i+2;
}else{
break;
}
}
// for(int i=1;i<=n-1;i++){
// cout<<cnt[i]<<" ";
// }
// cout<<endl;
i=a;
while(i<n){
if(i==n-1){
ans1+=cnt1[n-1];
cnt1[n-1]=0;
break;
}
if(cnt1[i+1]<=1){
if(cnt1[i+1]<=0&&cnt1[i+2]<=0){
ans1+=cnt1[i];
cnt1[i]=0;
break;
}
if(cnt1[i+2]<=1&&i+2<n){
ans1+=1;
cnt1[i+2]=0;
i=i+2;
}else if(i+2<n){
ans1+=cnt1[i+2]-1;
cnt1[i+2]=1;
i=i+2;
}else{
break;
}
}else{
ans1+=cnt1[i+1]-1;
cnt1[i+1]=1;
i=i+1;
}
}
while(1<=i){
if(i==1){
ans1+=cnt1[1];
cnt1[1]=0;
break;
}
// if(cnt1[i-1]<=0&&cnt1[i-2]<=0){
// ans1+=cnt1[i];
// cnt1[i]=0;
// break;
// }
if(cnt1[i-1]>0){
ans1+=cnt1[i-1];
cnt1[i-1]=0;
i-=1;
}else if(cnt1[i-2]>0&&i-2>=1){
ans1+=cnt1[i-2];
cnt1[i-2]=0;
i=i-2;
}else{
break;
}
}
// cout<<ans<<" "<<ans1<<endl;
cout<<max(ans1,ans)<<endl;
return 0;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...