zoukankan      html  css  js  c++  java
  • 2110 ACM Crisis of HDU 母函数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2110

    题意:分出1/3的价值,有几种可能?

    思路:母函数

    与之前的题目2079相似,复习笔记再来写代码:

    https://www.cnblogs.com/CheeseIce/p/9595315.html

    代码:

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    #define min(a,b) ((a)<(b)?(a):(b))
    
    int N,n[101],v[101],i,last,last2,sum;
    int a[5000],b[5000];
    
    int main()
    {
        while ((cin>>N)&&N!=0)
        {
            sum=0;
            for (i=0;i<N;i++)
            {
                cin>>v[i]>>n[i];
                sum+=v[i]*n[i];
            }
            if (sum%3!=0)
            {
                cout<<"sorry"<<endl;
                continue;
            }
            sum/=3;
            a[0]=1;
            last=0;
            int j,k;
            for (i=0;i<N;i++)
            {
                last2=min(last+n[i]*v[i],sum);
                memset(b,0,sizeof(int)*(last2+1));
                for (j=0;j<=n[i]&&j*v[i]<=last2;j++)
                    for (k=0;k<=last&&k+j*v[i]<=last2;k++)
                    {
                        b[k+j*v[i]]+=a[k];
                        b[k+j*v[i]]%=10000;
                    }
                memcpy(a,b,sizeof(int)*(last2+1));
                last=last2;
            }
            if (a[sum]>0)
                cout<<a[sum]<<endl;
            else
                cout<<"sorry"<<endl;
        }
    }
  • 相关阅读:
    第2次实践作业
    第1次实践作业
    软工实践个人总结
    2019 SDN大作业
    第08组 Beta版本演示
    第八章学习小结
    第七章学习小结
    第六章学习小结
    第五章学习小结
    第4章学习小结
  • 原文地址:https://www.cnblogs.com/CheeseIce/p/9642479.html
Copyright © 2011-2022 走看看