Crisis of HDU 还是母函数

来源:互联网 发布:面试问到java项目上线 编辑:程序博客网 时间:2024/06/05 07:11
D - Crisis of HDU
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit Status

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

21 12 10

Sample Output

1

面对朋友的退出和资金短缺,海东集团能度过难关吗?作为老总的XHD如何来化解这场危机?欲知后事如何,且听下回分解――

解题思路和前几篇博客如出一辙,但需要注意一点当只有当总价值能被3整除时才能分,否则直接输出soory

ac代码:

#include <iostream>#include <cstring>#include <cstdio>#include <cmath>using namespace std;int c1[10000], c2[10000];int val[105][2];int main(){    int n;    while(cin>>n)    {        if(n==0)            break;        int sum=0;        for(int i=1; i<=n; i++)        {            scanf("%d%d",&val[i][0],&val[i][1]);            sum+=val[i][0]*val[i][1];        }        if(sum%3==0)        {            memset(c1,0,sizeof(c1));            memset(c2,0,sizeof(c2));            for(int i=0; i<=val[1][1]; i++)                c1[i*val[1][0]]=1;            for(int i = 2; i <=n; i++)            {                for(int j = 0; j <=sum/3; j++)                {                    for(int k = 0; j+ k*val[i][0]<=sum/3&&k<=val[i][1]; k++)                    {                        c2[j+k*val[i][0]]=(c2[j+k*val[i][0]]+c1[j]%10000)%10000;                    }                }                for(int j = 0; j <=sum/3; ++j)                {                    c1[j] = c2[j];                    c2[j] = 0;                }            }            if(c1[sum/3]==0)            printf("sorry\n");            else            printf("%d\n",c1[sum/3]);        }        else        printf("sorry\n");    }    return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一个字包含的二进制位数 linux面试 【题目2】设计一个结构体类型,包含姓名、出生日期。其中出生日期又包含年、月、日三部分信息。输入n个好 【题目2】设计一个结构体类型,包含姓名、出生日期。其中出生日期又包含年、月、日三部分信息。输入n个好 结构体比较好友中年纪最小的 matlab三维矩阵可视化 使QQ崩溃 scanIP 按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50% c语言输入三个数字 c语言如何输入三个数求平均值 c语言如何输入三个数求和 C语言为什么只录入了第一个数字 输入多个数字 c语言scanf只有第一个数字 scanf三个整数 double double类型 www和http 会计 日记账 myamnatfound IntroductiontoIoT IntroductiontoIoT 使用哪种类型的无线网络连接城市中的设备来创建城域网 傲世九重天绿帽版 节日 第一章《Java》的思维导图 《Java》的思维导图 python登录大华摄像机 2019普通高等学校招生全国统一考试诊断卷a 考前诊断卷 Travelingsalesmenofnhn.(theprestigiousKoreanintern www。qwer123。com Ubuntu --------------------------http://s.jiafeiyun.com/p getpid函数执行过程 增量模型 Hresult:0x80041966 qt音视频 verilig