HDU 1028 Ignatius and the Princess III(传说中的母函数求方案数)
2013-05-27 17:59
453 查看
很有成就感的说。。现在再看简直觉得难以想象,当时居然能用bfs做。。。虽然TLE了。。
Ignatius and the Princess IIITime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9048 Accepted Submission(s): 6366 [align=left]Problem Description[/align] "Well, it seems the first problem is too easy. I will let you know how foolish you are later." feng5166 says. "The second problem is, given an positive integer N, we define an equation like this: N=a[1]+a[2]+a[3]+...+a[m]; a[i]>0,1<=m<=N; My question is how many different equations you can find for a given N. For example, assume N is 4, we can find: 4 = 4; 4 = 3 + 1; 4 = 2 + 2; 4 = 2 + 1 + 1; 4 = 1 + 1 + 1 + 1; so the result is 5 when N is 4. Note that "4 = 3 + 1" and "4 = 1 + 3" is the same in this problem. Now, you do it!" [align=left]Input[/align] The input contains several test cases. Each test case contains a positive integer N(1<=N<=120) which is mentioned above. The input is terminated by the end of file. [align=left]Output[/align] For each test case, you have to output a line contains an integer P which indicate the different equations you have found. [align=left]Sample Input[/align] 4 10 20 [align=left]Sample Output[/align] 5 42 627 [align=left]Author[/align] Ignatius.L Statistic | Submit | Discuss | Note 呵呵,用BFS和set,multiset,直接爆表了。。思路和那个第一次见很难理解的蛇出洞题很像,但这里用的是multiset,来保存访问信息。爆表爆表。。 [align=left]#include<iostream>[/align] [align=left]#include<queue>[/align] [align=left]#include<set>[/align] [align=left]using namespace std;[/align] #define MAXN 120 [align=left]int n,CNT; //输入的规模n和结果CNT[/align] set<multiset< char> > S[MAXN+1]; //存储访问信息 [align=left]struct node[/align] [align=left]{[/align] [align=left] int x; //当前位置[/align] 4000 multiset< char> s; //节点自身路径 [align=left]}init,now,nextt; [/align] [align=left]queue<node> Q;[/align] [align=left]int BFS()[/align] [align=left]{[/align] for(int j=0;j<MAXN+1;++j) S[j].clear(); [align=left] CNT = 0;[/align] for(int k=1;k<=n;++k) //先放n个初始节点进去 [align=left] {[/align] [align=left] node nod;[/align] [align=left] nod.x = k;[/align] [align=left] nod.s.insert(k);[/align] [align=left] Q.push(nod);[/align] [align=left] S[k].insert(nod.s);[/align] [align=left] }[/align] [align=left] init.x = 0;init.s.clear();[/align] [align=left] Q.push(init);[/align] [align=left] while(!Q.empty())[/align] [align=left] {[/align] [align=left] now = Q.front();Q.pop();[/align] if(now.x==n) {CNT++;continue ;} [align=left] for(int i=1;i<=n;++i)[/align] [align=left] {[/align] [align=left] nextt.x = now.x+i;[/align] [align=left] nextt.s = now.s;[/align] [align=left] nextt.s.insert(i); [/align] [align=left] if(nextt.x<=n&&S[nextt.x].count(nextt.s)==0) [/align] [align=left] { [/align] [align=left] Q.push(nextt); [/align] [align=left] S[nextt.x].insert(nextt.s); [/align] [align=left] }[/align] [align=left] }[/align] [align=left] }[/align] [align=left] return CNT;[/align] [align=left]}[/align] [align=left]int main()[/align] [align=left]{[/align] [align=left] while(cin>>n)[/align] [align=left] cout<<BFS()<<endl;[/align] [align=left] return 0;[/align] [align=left]}[/align] |
相关文章推荐
- HDU 1028 Ignatius and the Princess III(dp 母函数)
- 从hdu 1028 Ignatius and the Princess III看母函数
- HDU 1028 Ignatius and the Princess III(母函数)
- Ignatius and the Princess III 【HDU--1028-母函数】
- HDU 1028 Ignatius and the Princess III(母函数)
- hdu 1028 Ignatius and the Princess III ( 母函数)
- hdu 1028 Ignatius and the Princess III(母函数)
- hdu 1028 Ignatius and the Princess III 整数拆分 母函数/dp
- (简单母函数模板)hdu 1028 Ignatius and the Princess III
- [hdu 1028] Ignatius and the Princess III (母函数)
- HDU 1028 Ignatius and the Princess III (母函数,或者DP)
- hdu 1028 Ignatius and the Princess III +hdu 1085 Holding Bin-Laden Captive!(母函数)
- HDU --- 1028 Ignatius and the Princess III 【母函数入门】
- HDU 1028 Ignatius and the Princess III (母函数)
- hdu 1028 Ignatius and the Princess III(母函数)
- HDU 1028 Ignatius and the Princess III 母函数
- hdu 1028 Ignatius and the Princess III(母函数,完全背包)
- HDU 1028 Ignatius and the Princess III(母函数模板)
- HDU 1028 Ignatius and the Princess III|母函数
- [HDU 1028] Ignatius and the Princess III 母函数