poj 3046
来源:互联网 发布:虚拟歌姬软件下载 编辑:程序博客网 时间:2024/06/04 18:18
大溼教我暴力過dp >.<
可重組合計數,是一個典型的生成函數求解的題目。另外,題目的famliy標號是 1 到 t ,沒有這一點的話要用map
最後,題目要求輸出最後6位>.< 差點沒看到。。
#include<stdio.h>#include<string.h>#include<map>using namespace std;#define CLEAR(a) memset(a,0,sizeof(a))#define ET getchar()#define GETS(a) fgets(a,sizeof(a),stdin);a[strlen(a)-1]='\0'//map<int,int>ant;//map<int,int>::iterator ite;const int maxn=100000+5;const int mod=1000000;int ans[maxn],hep[maxn],fam[1005];int main(){ //freopen("1.txt","r",stdin); int t,a,s,e; while(~scanf("%d%d%d%d",&t,&a,&s,&e)) { int id; CLEAR(fam); CLEAR(ans); CLEAR(hep); //ant.clear(); for(int i=1;i<=a;i++) { scanf("%d",&id); fam[id]++; //ant[id]++; } ans[0]=1; //for(ite=ant.begin();ite!=ant.end();ite++) for(int k=1;k<=t;k++) { //int x=ite->second; //for(int i=0;i<=x;i++) for(int i=0;i<=fam[k];i++) { for(int j=0;ans[j]!=0;j++) { hep[i+j]+=ans[j]; hep[i+j]%=mod; } } for(int i=0;hep[i]!=0;i++) { ans[i]=hep[i]; hep[i]=0; } } int answer=0; for(int i=s;i<=e;i++) { answer+=ans[i]; answer%=mod; } printf("%d\n",answer); } return 0;}
0 0
- POJ 3046
- POJ 3046
- poj 3046
- poj 3046
- poj 3046
- POJ 3046 Ant Counting
- Poj 3046(dp)
- POJ-3046-Ant Counting
- poj 3046 Ant Counting
- poj 3046 Ant Counting
- poj 3046 分组背包
- POJ 3046 Ant Counting
- POJ 3046 DP
- ***POJ 3046 Ant Counting
- POJ
- poj
- POJ
- POJ
- 自己编写的计算图像直方图的函数
- The Famous Clock
- MFC 把一个对话框贴到另一个对话框
- 啊马蜂蜜哦我阿达十米台内又热偶爱
- HDU 1728 逃离迷宫 BFS
- poj 3046
- 下载超星或读秀图书时,怎么搞定完整书签?
- 同步I/O 和 异步I/O
- 算法上机2(java)
- Linux下查看和踢除正在登陆的其他用户
- 《黑马程序员》 TCP端复制文件
- C#基础语法总结
- 《黑马程序员》 TCP端图片复制
- 第三讲:JavaMail中Session类