HDU 2110 Crisis of HDU

Crisis of HDU

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 3766    Accepted Submission(s): 1066

Problem Description

话说上回讲到HDU大战东洋小苟,结果自然是中方大胜,这一战也使得海东集团在全球同行业中的地位更加巩固。随着集团的发展,很多创业时期的元老逐步功成身退,先是8600移民海外,然后是linle夫妇退隐山林,逐渐的,最初众多的元老只剩下XHD夫妇和Wiskey三人了。

到了2020年,因为扩张过度加上老鼠数量逐年减少,公司的发展遇到了前所未有的危机,此时集团已经没有任何流动资金,更可怕的是,这个时候,wiskey也决定退出了!

退出本身并不麻烦,麻烦的是,退出的人需要取走相应比例(1/3)金额的资产。

假设公司此时一共有n种价值的资产,每种价值的资产数量已知,请帮助心烦意乱的XHD夫妇计算一共有多少种分割资产的方法。

Input

输入包含多个测试实例,每个实例的第一行是一个整数n(n<100),表示一共有n种价值的资产,接着的n行每行包含两个整数pi和mi(0<pi,mi<10),分别表示某种价值和对应的数量,n为0的时候结束输入。

Output

对于每个测试实例,请输出分割资产的方案数%10000,如果不能分割,请输出“sorry”,每个实例的输出占一行。

Sample Input

2
1 1
2 1
0

Sample Output

1

面对朋友的退出和资金短缺,海东集团能度过难关吗?作为老总的XHD如何来化解这场危机?欲知后事如何,且听下回分解——
#include <iostream>
#include <stdio.h>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#define N 100000

using namespace std;

int c1[N],c2[N];
int a[N],b[N];

int main()
{
    int n;
    while(scanf("%d",&n),n)
    {
        int sum=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d %d",&a[i],&b[i]);
            sum+=a[i]*b[i];
        }
        if(sum%3)
        {
            cout<<"sorry"<<endl;
            continue;
        }

        memset(c1,0,sizeof c1);
        memset(c2,0,sizeof c2);

        c1[0]=1;

        sum/=3;

        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<=sum;j++)
            {
                for(int k=0;k+j<=sum && k<=a[i]*b[i];k+=a[i])
                 c2[j+k]+=c1[j];
            }
            for(int j=0;j<=sum;j++)
            {
                c1[j]=(c2[j]%10000);
                c2[j]=0;
            }
        }

        if(c1[sum])
        printf("%d\n",c1[sum]);
        else
        cout<<"sorry"<<endl;

    }
    return 0;
}
时间: 2024-08-02 23:39:27

HDU 2110 Crisis of HDU的相关文章

Crisis of HDU(母函数)

Crisis of HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4258    Accepted Submission(s): 1197 Problem Description 话说上回讲到HDU大战东洋小苟,结果自然是中方大胜,这一战也使得海东集团在全球同行业中的地位更加巩固.随着集团的发展,很多创业时期的元老逐步功成身退,

hdu 2108 Shape of HDU (数学)

Shape of HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5059    Accepted Submission(s): 2294 Problem Description 话说上回讲到海东集团推选老总的事情,最终的结果是XHD以微弱优势当选,从此以后,"徐队"的称呼逐渐被"徐总"所取代,海东集

HDU 4311 Meeting point-1 &amp;&amp; HDU 4312 Meeting point-2

这俩个题  题意::给出N(<1e5)个点求找到一个点作为聚会的地方,使每个点到达这里的距离最小.4311是 曼哈顿距离 4312是 切比雪夫距离: 曼哈顿距离 :大家都知道 对于二维坐标系a(xa,yb),b(xb,yb)的曼哈顿距离是abs(xa-xb)+abs(ya-yb): 看的出来这个距离和x,y 都有关,但是X,Y并不相互影响,所以可以分开计算这样,分开计算的好处如下: 如果 只给一个维度的坐标系 ,我们是不可以再什么养的复杂度的时间内处理出来呢? 大难还是很好想的先排序一下,会发现

HDU - 1232 畅通工程 HDU - 1874畅通工程续 HDU - 1875畅通工程再续

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1232 题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1874 题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1875 畅通工程属于水题,直接用并查集就行,加个路径压缩那就更好. 畅通工程续这道题WA了N次,因为有一个地方没注意到就是一个城镇到另外一个城镇的有多条道路, 所以你一开始就要把最短的道路选出来.

hdu 1853 Cyclic Tour &amp;&amp; hdu 3435 A new Graph Game(简单KM算法)

Cyclic Tour Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others) Total Submission(s): 1478    Accepted Submission(s): 750 Problem Description There are N cities in our country, and M one-way roads connecting them. Now L

HDU 4911 http://acm.hdu.edu.cn/showproblem.php?pid=4911(线段树求逆序对)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 解题报告: 给出一个长度为n的序列,然后给出一个k,要你求最多做k次相邻的数字交换后,逆序数最少是多少? 因为每次相邻的交换操作最多只能减少一个逆序对,所以最多可以减少k个逆序对,所以我们只要求出原来的序列有多少个逆序对然后减去k再跟0取较大的就可以了. 因为数据范围是10的五次方,所以暴力求肯定会TLE,所以要用n*logn算法求逆序对,n*logn算法有几种可以求逆序对的: 线段树,树状数

HDU2110 Crisis of HDU【母函数】

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2110 题目大意: 公司有N种价值的资产,每种价值的资产数量已知,问能否得到总资产1/3的分割资产方法. 问:分割资产的方案数是多少(mod 10000). 思路: 给定N种价值的资产,设每种价值Pi的数量为Mi,则总资产为sum = Σ Pi*Mi (1 <= i <= N). 可得母函数g(x) = Π(1 + x^Pi + x^(2*Pi) + - + x^(Pi*Mi) ) (1 <

HDU 2108 Shape of HDU (判断是不是凸多边形 叉乘)

Shape of HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5575    Accepted Submission(s): 2531 Problem Description 话说上回讲到海东集团推选老总的事情,最终的结果是XHD以微弱优势当选,从此以后,“徐队”的称呼逐渐被“徐总”所取代,海东集团(HDU)也算是名副其实了.

hdu 2109 (Fighting for HDU)

http://acm.hdu.edu.cn/showproblem.php?pid=2109 水题 #include <iostream> #include <algorithm> #include <cstdio> using namespace std; int data1[105]; int data2[105]; int main() { int m; while(cin>>m,m) { int sum1=0,sum2=0; for(int i=0;