选课时间(题目已修改,注意读题)

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

Problem Description
又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合。你来帮帮他吧。(xhd认为一样学分的课没区别)
 
Input
输入数据的第一行是一个数据T,表示有T组数据。
每组数据的第一行是两个整数n(1 <= n <= 40),k(1 <= k <= 8)。
接着有k行,每行有两个整数a(1 <= a <= 8),b(1 <= b <= 10),表示学分为a的课有b门。
 
Output
对于每组输入数据,输出一个整数,表示学n个学分的组合数。
 
Sample Input
2 2 2 1 2 2 1 40 8 1 1 2 2 3 2 4 2 5 8 6 9 7 6 8 8
 
Sample Output
2 445
这题是组合数学问题,所以用母函数就能OK
AC代码+解释:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<string>
#include<cstring>//母函数方法
#include<iomanip>
#include<cmath>
#include<map>
#include<queue>
#include<stack>
const int MAX=1000;
int c1[MAX];//代表n学分的组合数
int c2[MAX];//过渡
int g[MAX];//代表每一种学分有几门课
int n;
using namespace std;
int main()
{int i,j,t,k,a,b;cin>>t;while(t--){cin>>n>>k;memset(g,0,sizeof(g));//初始化for(i=1;i<=k;i++){cin>>a>>b;g[a]=b;//a学分课程有b门}memset(c1,0,sizeof(c1));//初始化memset(c2,0,sizeof(c2));for(i=0;i<=g[1];i++)c1[i]=1;//先初始化,一个学分的它的g[1]门课都是一种for(i=2;i<=8;i++)//然后从2学分课程开始一直到8学分课程{for(j=0;j<=40;j++)//拥有的学分最多是40分{for(int k=0,s=0;s<=g[i]&&k+j<=40;k+=i,s++)//母函数核心,k是学分,s是选课数量{c2[k+j]+=c1[j];}}for(j=0;j<=40;j++){c1[j]=c2[j];c2[j]=0;}}cout<<c1[n]<<endl;}return 0;
}

 

杭电2079-选课时间(题目已修改,注意读题)相关推荐

  1. HDU 2079 选课时间(题目已修改,注意读题) 母函数 || 多重背包

    今天做这题才知道原来母函数的原型不是从第二个括号开始,那不过是优化而已,除了1^n,2^n那种类型可以从2开始外其他都要从1开始.好了,上代码吧. #include<stdio.h> in ...

  2. HDU 2152 选课时间(题目已修改,注意读题) (母函数)

    选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. HDU-2079 选课时间(题目已修改,注意读题) -母函数

    选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. HDU 2076 夹角有多大(题目已修改,注意读题)

    Problem Description 时间过的好快,一个学期就这么的过去了,xhd在傻傻的看着表,出于对数据的渴望,突然他想知道这个表的时针和分针的夹角是多少.现在xhd知道的只有时间,请你帮他算出 ...

  5. hdu(杭电oj)第一页题目题解

    第一页有几题没写,有机会补上(嗯,忘了就是另一回事了). 这个是无聊的时候刷了第一页..存到博客上当做纪念吧.. hdu1000 简单题 难度1 计算a+b的值 hdu1001 简单题 难度1 计算1 ...

  6. HDU1290 献给杭电五十周年校庆的礼物【水题】

    献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  7. 杭电ACM hdu 2079 选课时间 (模板)

    Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合.你来帮帮他吧.(xhd认为一样学分的课没区别)   Input ...

  8. HDU 2079 选课时间

    http://acm.hdu.edu.cn/showproblem.php?pid=2079 Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点, ...

  9. 杭电2078复习时间

    Problem Description 为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑.xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课 ...

  10. HDU杭电OJ经典100题2000-2099_Java版详细题解(持续更新)

    今年寒假打算用Java把杭电2000-2099全部AC(现在持续更新),如下是题目链接,之后是我的题解,全部做完后我会把所有AC的题解打包上传的 题号 题名 题号 题名 2000 ASCII码排序 2 ...

最新文章

  1. [置顶] 单例模式lua实现
  2. python中的点表示什么_Python里面这些点,新手看完之后完全不知道这些点
  3. 依图创始人朱珑《人民日报》刊文:未来10年是人工智能算力的“超摩尔时代”...
  4. linux下查找文件及内容 grep
  5. POJ 1321 棋盘问题(DFS 状压DP)
  6. 【数理知识】方程一阶二阶及常用词语含义
  7. Jenkins+SonarQube6.5.5+SonarScanner2.5代码质量管理平台
  8. Storm tick 功能
  9. oracle case套case,,套用when case
  10. 测试监视器锁的等待/通知机制
  11. roslaunch与param使用
  12. 神奇的margin之豆瓣豆瓣么么哒
  13. colorpicker插件和使用(直接能用真美好)
  14. PICT-测试用例生成工具
  15. JAVA解析xml文件(DOM)
  16. 机智云开源框架二次开发之换皮肤,几乎不用改代码
  17. sublime JS Format js格式化工具
  18. 曾号称永久免费的知名国产浏览器推出 VIP 会员模式,网友吵翻天
  19. php项目怎么配置admin,PHPadmin配置
  20. python爬取文章_[Python]爬取微信公众号文章

热门文章

  1. OpenStack环境下安装Mistral
  2. 如何保留5个有效数字输出c不4舍5入_好吃好喝不发胖,这样过年才健康团
  3. linux命令get命令使用,Linux apt-get命令使用方法
  4. mysql数据文件后缀名_数据文件的后缀名_MySQL
  5. ZPL II 命令参考
  6. java无法双击打开.jar文件/jar包以压缩文件显示
  7. 油价上涨后,「两轮电动车」还是没有找到正确的出路?
  8. 无人机航拍VR全景图拍摄制作教程
  9. stata面板数据单位根检验llc_stata面板单位根检验怎样看结果?LLC、ADF_Fisher以及IPS,求助...
  10. python 开发管理软件 ERP