[BZOJ3195] [Jxoi2012]奇怪的道路

[BZOJ3195] [Jxoi2012]奇怪的道路

图论是不可能的

题目限定了距离,所以直接按点编号的顺序dp下来,记录连了几条边,之前的点每个点的所连边数是不是奇数

每个点转移时就是向之前的点连边,保证最后能连的边连完每个点都满足条件即可

 

const int N=80,P=1000000007;
 
 
int n,m,k;
 
ll dp[31][1<<8][31];
ll C[N][N];
 
 
 
int main(){
    n=rd(),m=rd(),k=rd();
    k=min(k,n);
    C[0][0]=1;
    rep(i,1,N-1) {
        C[i][0]=1;
        rep(j,1,N-1) C[i][j]=(C[i-1][j-1]+C[i-1][j])%P;
    }
    dp[0][0][0]=1;
    rep(i,1,k-1) {
        int A=(1<>1)|((t&1)<<(k-1));
                rep(j,0,m) {
                    for(reg int d=j+t;d<=m;d+=2) {
                        (dp[i][NS][d]+=C[(d-j-t)/2+k-1][k-1]*dp[i-1][R][j]%P)%=P;
                    }
                }
            }
        }
    }
    ll ans=dp[n-1][0][m];
    printf("%lld\n",ans);
}
 
 

你可能感兴趣的:([BZOJ3195] [Jxoi2012]奇怪的道路)