HDU 5117 Fluorescent 수학적 배치 DP

2662 단어 압축dp수학.
이 문제는 너에게 스위치 제어등이 켜진 모형을 하나 줄게.
먼저 기대치가 E(x)*2^m인 상황을 고려하면 0으로 불이 꺼진 것을 표시하고 1로 불이 켜진 것을 나타내는 간단한 상압의 사상을 고려하여 각각 불이 켜진 상황에 몇 가지 방법이 있는지 추측하기 어렵지 않다.
기대치가 E(x^3)*2^m인 확장, 즉 원제가 요구하는 것은 사실 수학 전개 모델이 될 수 있다.
X=(X0+X1+X2+X3+...+Xn-1), Xi는 i호등이 꺼졌는지 켜졌는지 표시한다.
X^3=(X0+X1+X2+X3+...+Xn-1)^3 수학이 전개된 후 사실은 모든 Cijk*Xi*Xj*Xk(0<=i, j, k그래서 개상압 dp[si][sj][sk]로 계산하면 현재 ijk 삼등불이 켜진 상태는sisjsk이고 상태 S로 압축되어 m개 스위치로 상태 이동을 제어하고 이동하면서 답을 누적할 수 있다.
13532250
2015-04-23 09:02:28
Accepted
5117
187MS
1572K
1585 B
G++
howardcn
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;

const int mod = 1000000007;
typedef long long LL;
LL dp[2][8];
int f[51][51];

int main()
{
//    freopen("data.in","r",stdin);
    int T,N,M,K,l,now;
    LL tmp;
    scanf("%d",&T);
    for(int cas=1;cas<=T;cas++){
        LL ans=0;
        scanf("%d%d",&N,&M);
        memset(f,0,sizeof f);
        for(int i=0;i<M;i++){
            scanf("%d",&K);
            for(int j=0;j<K;j++){
                scanf("%d",&l);
                f[i][l-1]++;
            }
        }
        for(int i=0;i<N;i++){
            for(int j=i;j<N;j++){
                for(int k=j;k<N;k++){
                    memset(dp,0,sizeof dp);
                    dp[0][0]=1;
                    now=1;
                    for(int s=0;s<M;s++,now^=1){
                        tmp=0;
                        if(f[s][i]) tmp|=1;
                        if(f[s][j]) tmp|=2;
                        if(f[s][k]) tmp|=4;
                        for(int t=0;t<8;t++){
                            dp[now][t]=dp[now^1][t];
                            dp[now][t]+=dp[now^1][t^tmp];
                            dp[now][t]%=mod;
                        }
                    }
#define u dp[now^1][7]
                    tmp = u;
                    if(i!=j&&j!=k) u*=6;
                    else if(i==j&&j==k) ;
                    else u*=3;
                    ans=(ans+u)%mod;
                }
            }
        }

        printf("Case #%d: %I64d
",cas,ans); } return 0; }

13532250
2015-04-23 09:02:28
Accepted
5117
187MS
1572K
1585 B
G++
howardcn

좋은 웹페이지 즐겨찾기