社区讨论
JT4赛时混分代码玄关求调
学术版参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhqm3ddh
- 此快照首次捕获于
- 2025/11/09 02:22 3 个月前
- 此快照最后确认于
- 2025/11/16 14:04 3 个月前
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=998244353;
int n,a[5500],dp[5500],ans;
bool bl=1;
signed main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],bl=(bl&&(a[i]==1));
if(n<3){cout<<"0";return 0;}
if(n==3){
if(a[1]+a[2]+a[3]>2*max(a[1],max(a[2],a[3]))) cout<<"1";
else cout<<"0";
return 0;
}
if(n<=21){
for(int i=0;i<(1<<n);i++){
int f[25]={0},k=i,maxn=-1,s=0,l=0;
for(int j=n;j;j--){
f[j]=k&1;
if(k) k>>=1;
}
for(int j=1;j<=n;j++){
if(f[j]) l++,maxn=max(maxn,a[j]),s+=a[j];
}
if(l<3) continue;
if(s>2*maxn) ans++,ans%=mod;
}
cout<<ans%mod;
return 0;
}
//1~10
if(bl){
int x=n,f=2;
ans=1;
while(x){
if(x&1) ans*=f,ans%=mod;
f*=f;x>>=1;
}
cout<<(((ans-1-n+mod)%mod)-n*(n-1)/2+mod)%mod;
return 0;
}
//15~20
return 0;
}
15~20的那串代码总是WA掉,但是我手算了十几遍都是这个式子,准备搞完这个问题就去写正解,能帮忙看一下吗?
回复
共 2 条回复,欢迎继续交流。
正在加载回复...