找单词

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3711    Accepted Submission(s): 2658

Problem Description
假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值<=50的单词呢?单词的价值就是组成一个单词的所有字母的价值之和,比如,单词ACM的价值是1+3+14=18,单词HDU的价值是8+4+21=33。(组成的单词与排列顺序无关,比如ACM与CMA认为是同一个单词)。
 
Input
输入首先是一个整数N,代表测试实例的个数。
然后包括N行数据,每行包括26个<=20的整数x1,x2,.....x26.
 
Output
对于每个测试实例,请输出能找到的总价值<=50的单词数,每个实例的输出占一行。
 
Sample Input
2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 2 6 2 10 2 2 5 6 1 0 2 7 0 2 2 7 5 10 6 10 2 10 6 1 9
 
Sample Output
7 379297
 
Source

#include <stdio.h>
#include <string.h>
int c1[],c2[];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int s[];
int i,j,k,sum=;
memset(c1,,sizeof(c1));
memset(c2,,sizeof(c2));
for(i=;i<=;i++)
scanf("%d",&s[i]);
for(i=;i<=s[];i++)
c1[i]=;
for(i=;i<=;i++)
{
for(j=;j<=;j++)
for(k=;k<=s[i]&&(j+k*i<=);k++)
{
c2[j+k*i]+=c1[j];
}
for(j=;j<=;j++)
{
c1[j]=c2[j];
//printf("%d ",c2[j]);
c2[j]=;
}
//printf("\n");
}
for(i=;i<=;i++)
sum+=c1[i];
printf("%d\n",sum);
}
return ;
}
//母函数

参考代码:

 #include<iostream>
#include<cstdio>
#include<cstring> using namespace std; const int N=; int c1[N+],c2[N+],num[]; int main(){ //freopen("input.txt","r",stdin); int t;
scanf("%d",&t);
while(t--){
memset(c1,,sizeof(c1)); //c1[ ]保存当前得到的多项式各项系数
memset(c2,,sizeof(c2)); //c2[ ]保存每次计算时的临时结果
for(int i=;i<=;i++)
scanf("%d",&num[i]);
c1[]=; //相当于用X^0去乘以后面的多项式
for(int i=;i<=;i++){ //要乘以26个多项式
for(int j=;j<=N;j++) //c1的各项的指数
for(int k=;k<=num[i] && j+k*i<=N;k++) //k*i表示被乘多项式各项的指数,(X^0*i + X^1*i + X^2*i + ……)
c2[j+k*i]+=c1[j]; //指数相加得j+k*i,加多少只取决于c1[j]的系数,因为被乘多项式的各项系数均为1
for(int j=;j<=N;j++){
c1[j]=c2[j];
c2[j]=;
}
}
int ans=;
for(int i=;i<=N;i++)
ans+=c1[i];
printf("%d\n",ans);
}
return ;
}

hdu_2082_找单词_201404271536的更多相关文章

  1. hdu2082 找单词 (母函数)

    找单词 题意: 中文题,考虑是不是要写个英文题意..(可惜英语水平不够  囧rz)                (题于文末) 知识点: 母函数(生成函数): 生成函数有普通型生成函数和指数型生成函数 ...

  2. hdu acm 2082 找单词

    找单词 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. HDOJ 2082 找单词 (母函数)

    找单词 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  4. HDU 2082 找单词 (普通型 数量有限 母函数)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2082 找单词 Time Limit: 1000/1000 MS (Java/Others)    Me ...

  5. HDU——2083找单词(母函数)

    找单词 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...

  6. HDU 1028 整数拆分 HDU 2082 找单词 母函数

    生成函数(母函数) 母函数又称生成函数.定义是给出序列:a0,a1,a2,...ak,...an, 那么函数G(x)=a0+a1*x+a2*x2+....+ak*xk +...+an* xn  称为序 ...

  7. HDU2082 找单词 【母函数】

    找单词 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. hdu2082 找单词 母函数模板

    找单词 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. HDU 2082 找单词 (普通母函数)

    题目链接 Problem Description 假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26.那么,对于 ...

随机推荐

  1. Python __str__(self)和__unicode__(self)

    object.__str__(self) Called by the str() built-in function and by the print statement to compute the ...

  2. R in action读书笔记(17)第十二章 重抽样与自助法

    12.4 置换检验点评 除coin和lmPerm包外,R还提供了其他可做置换检验的包.perm包能实现coin包中的部分功能,因此可作为coin包所得结果的验证.corrperm包提供了有重复测量的相 ...

  3. Common.Logging.dll----------配置方式,可选引用,用于日志输出

    1.简介common logging是一个通用日志接口,log4net是一个具体实现. common logging可以把输出连接到其他非log类上, 如EntLib的日志.NLog等 2.使用接下来 ...

  4. Java常用工具类---IP工具类、File文件工具类

    package com.jarvis.base.util; import java.io.IOException;import java.io.InputStreamReader;import jav ...

  5. ipv6工具类

    package mapreduce.nat; import java.math.BigDecimal; import java.math.BigInteger; import java.net.Ine ...

  6. 00PostgreSQL

    PostgreSQL PostgreSQL: The World's Most Advanced Open Source Relational Database;PostgreSQL是一个功能强大的开 ...

  7. linux下设置python3.x为默认版本

    rm /usr/bin/python ln -s /usr/local/bin/python3.x /usr/bin/python sybomlic 安装目录 系统目录

  8. Android图像处理之BitMap(2)

    Bitmap 相关 1. Bitmap比较特别 因为其不可创建 而只能借助于BitmapFactory 而根据图像来源又可分以下几种情况: * png图片 如:R.drawable.tianjin J ...

  9. C++暂停黑窗口

    C++中采用system("pause");来暂停黑窗口,那么操纵系统就会将窗口暂停,显示“请按任意键继续. . .” 我们用VS执行代码是,若直接按键盘的F5(开始调试),那么窗 ...

  10. [Luogu] P4838 P哥破解密码

    题目背景 P哥是一个经常丢密码条的男孩子. 在ION 8102赛场上,P哥又弄丢了密码条,笔试满分的他当然知道这可是要扣5分作为惩罚的,于是他开始破解ION Xunil系统的密码. 题目描述 定义一个 ...