社区讨论

调到比赛结束最后一秒的暴力代码

P14360[CSP-J 2025] 多边形参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhixo6e0
此快照首次捕获于
2025/11/03 17:24
4 个月前
此快照最后确认于
2025/11/08 07:49
4 个月前
查看原帖
原本64分的代码因为差了4个字符变成了40分
CPP
#include <iostream>
#include <algorithm>
using namespace std;
const int N=5005,mod=998244353;
typedef long long ll;
int n,a[N];
ll c[N][N];
int f=1;
ll ans;
void init(){
	c[1][1]=1;
	for(int i=2;i<=5003;i++){
		for(int j=1;j<=5003;j++){
			c[i][j]=(c[i-1][j]+c[i-1][j-1])/*%mod*/;
		}
	}
	return;
}
void dfs(int u,int v,int cnt){
	if(u==v){
		if(cnt>a[v]) ans=(ans+1)%mod;
		return;
	}
	for(int i=u+1;i<=v;i++){
		dfs(i,v,cnt+a[u]);
	}
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		if(a[i]!=1) f=0;
	}
	if(f){
		init();
		for(int i=3;i<=n;i++){
			ans=(ans+c[n+1][i+1])%mod;
		}
		printf("%lld",ans);
		return 0;
	}
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		for(int j=1;j<i;j++){
			dfs(j,i,0);
		}
	}
	printf("%lld",ans);
	return 0;
} 

回复

1 条回复,欢迎继续交流。

正在加载回复...