社区讨论
dp做法,求条
P14360[CSP-J 2025] 多边形参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mhz4jbmz
- 此快照首次捕获于
- 2025/11/15 01:20 3 个月前
- 此快照最后确认于
- 2025/11/16 14:03 3 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
long long n,a[5001],f[5001],ans,g[5001];
const int mod=998244353 ;
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+1+n);
int maxl=a[n];
//求1-maxl f数组 f[j]加起来长度=j的方案数
f[0]=1;
for(int i=1;i<=n;i++)
for(int j=maxl;j>=a[i];j--) f[j]=(f[j]+f[j-a[i]])%mod;
//求g数组 g[i]=f[1]+f[2]+....f[i]
g[0]=1;
for(int i=1;i<=maxl;i++) g[i]=(g[i-1]+f[i])%mod;
//枚举最长边 累加方案数
//最长边为a[i]方案数求法:
// 2^(i-1)-g[a[i]]
long long x=2;
for(int i=3;i<=n;i++){
x=(x*2)%mod;
ans=(ans+x-g[a[i]]+1)%mod;
}
cout<<ans;
return 0;
}
28求条QAQ
回复
共 4 条回复,欢迎继续交流。
正在加载回复...