云南省青少年编程挑战赛动态规划专项赛提高组
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