TLE0分求改

P1896 [SCOI2005] 互不侵犯

A了QwQ ```cpp #include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=1<<9; ll n,m,dp[10][maxn][90],st[maxn],cnt,ext[maxn],num[maxn],ans=0; int main(){ cin>>n>>m; for(int i=0;i<(1<<n);++i){ if(!(i&(i>>1))&&!(i&(i<<1))) st[cnt++]=i; ext[i]=i|(i<<1); num[i]=num[i>>1]+(i&1); } dp[0][0][0]=1; for(int i=1;i<=n;++i){ for(int j=0;j<cnt;++j){ for(int k=0;k<=m;++k){ if(dp[i-1][j][k]){ for(int l=0;l<cnt;++l){ if((ext[st[j]]&ext[st[l]])==0) dp[i][l][k+num[st[l]]]+=dp[i-1][j][k]; } } } } } for(int i=0;i<cnt;++i){ ans+=dp[n][i][m]; } cout<<ans; return 0; } ```
by joseph0530 @ 2023-08-11 10:01:21


|