云南省青少年编程挑战赛动态规划专项赛提高组

Done IOI Start at: 2026-3-28 14:00 4 hour(s) Host: 33
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 505, Mod = 1e9+7;
int n,a[N][N],f[N][N][2];
signed main(){
	freopen("duobianxing.in","r",stdin);
	freopen("duobianxing.out","w",stdout);
	cin>>n;
	for(int i = 1; i<=n; i++) for(int j = 1; j<=n; j++) cin>>a[i][j];
	for(int i = 1; i<=n; i++) f[i][i][0] = 1;
	for(int len = 2; len<=n; len++){
		for(int i = 1; i+len-1<=n; i++){
			int j = i+len-1;
			for(int k = i+1; k<=j; k++) (f[i][j][0] += (f[i][k][1])*(f[k][j][0]+f[k][j][1])%Mod)%=Mod;
			if(a[i][j]) for(int k = i; k<j; k++) (f[i][j][1] += (f[i][k][0]+f[i][k][1])*(f[k+1][j][0]+f[k+1][j][1])%Mod)%=Mod;
		}
	}
	cout<<(f[1][n][0]+f[1][n][1])%Mod<<"\n";
	return 0;
}
Status
Done
Rule
IOI
Problem
4
Start at
2026-3-28 14:00
End at
2026-3-28 18:00
Duration
4 hour(s)
Host
Partic.
33