zoukankan      html  css  js  c++  java
  • <HAOI2008>硬币购物

    和神奇dp的战斗

    还有容斥原理

    终于get到了

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<cstdlib>
    using namespace std;
    int c[5],d[5],tot,s;
    long long dp[100010];
    int main()
    {
        int i,j,k;
        for(i=1;i<=4;i++)scanf("%d",&c[i]);
        dp[0]=1;
        for(i=1;i<=4;i++)
            for(j=c[i];j<=100010;j++) dp[j]+=dp[j-c[i]];//背包aoaoaoaoaoaoao
        scanf("%d",&tot);
        
        for(k=1;k<=tot;k++)
        { 
            long long ans=0;
            
            for(i=1;i<=4;i++)scanf("%d",&d[i]);
            scanf("%d",&s);
            for(i=0;i<=15;i++)
            {
                long long t=s;
                int cnt=0;
                for(j=1;j<=4;j++)if((i>>(j-1))&1)t-=c[j]*(d[j]+1),cnt^=1;
                if(t<0) continue;
                if(!cnt) ans+=dp[t];else ans-=dp[t];
            }
            printf("%lld
    ",ans);
        }
        
    return 0;
    }

     

     

  • 相关阅读:
    CodeForces 514B
    CodeForces 514A
    UVa 818
    HDU 1003
    UVa百题总结
    UVa 11526
    UVa 12412
    UVa 211
    UVa 1587
    UVa 225 – Golygons [DFS+剪枝]
  • 原文地址:https://www.cnblogs.com/pile8852/p/9342096.html
Copyright © 2011-2022 走看看