社区讨论
40分求助
P1880[NOI1995] 石子合并参与者 5已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo7k80fi
- 此快照首次捕获于
- 2023/10/27 03:10 2 年前
- 此快照最后确认于
- 2023/10/27 03:10 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,a[1001],f[1001],he[1001],maxx,minn=949992,hebing[1001];
int main(){
cin>>n;
for(int i=1;i<=n;i++) {
cin>>a[i];
a[i+n]=a[i];
}
for(int st=1;st<=n;st++){
f[st]=0;
f[st+1]=a[st]+a[st+1];
for(int t=st;t<=n+st;t++){
he[t]=he[t-1]+a[t];
he[t+n]=he[t];
}
he[st]=0;
for(int i=st+2;i<=n+st+2;i++){
// hebing[i]=min(he[i-1]+he[i],he[i-2]+)
f[i]=min(f[i-1]+he[i],f[i-2]+he[i]+a[i]+a[i-1]);
}
minn=min(minn,f[n+st-1]);
memset(he,0,sizeof(he));
}
for(int st=1;st<=n;st++){
f[st]=0;
f[st+1]=a[st]+a[st+1];
for(int t=st;t<=n+st;t++){
he[t]=he[t-1]+a[t];
he[t+n]=he[t];
}
he[st]=0;
for(int i=st+2;i<=n+st;i++){
f[i]=max(f[i-1]+he[i],f[i-2]+he[i]+a[i]+a[i-1]);
}
maxx=max(maxx,f[n+st-1]);
memset(he,0,sizeof(he));
}
cout<<minn<<endl<<maxx;
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...