码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 5241 Friends

时间:2015-09-06 21:32:09      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

http://acm.hdu.edu.cn/showproblem.php?pid=5241

并不太懂,看了题解才知道:留意到,每一种语言的情况其实是独立的,也就是说,每一种语言的集合的包含的情况都是符合要求的。一种语言在图上可以有32种情况(由数据2知),所以,总的数就是32^n;n为语言的个数,本题可以用Java水过,但本人也不会Java。此题主要是想不到是32^n,剩下的就好写了。以下代码借鉴了江锦的。

技术分享

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<string>
 5 #include<cstring>
 6 #include<cmath>
 7 using namespace std;
 8 int cc[3005][6005] ;
 9 int main()
10 {
11 int t,i,j,n,k,cas;
12 scanf("%d",&t);
13 memset(cc,0,sizeof(0));
14 cc[1][0] = 2;
15 cc[1][1] = 3;
16 for(i=2; i<=3000; i++)
17 {
18 for(k=0; k<2; k++)
19 {
20 for(j=0; j<=6000; j++)
21 {
22 cc[i][j+k]+=cc[1][k]*cc[i-1][j] ;
23 }
24 }
25 for(j=0; j<=6000; j++)
26 {
27 cc[i][j+1]+=cc[i][j]/10;
28 cc[i][j]%=10;
29 }
30 }
31 cas=1;
32 while(t--)
33 {
34 scanf("%d",&n) ;
35 printf("Case #%d: ",cas++) ;
36 if(!n)printf("1\n");
37 for(i=6000; i>=0; i--)
38 {
39 if(cc[n][i])
40 {
41 for(j=i; j>=0; j--)
42 {
43 printf("%d",cc[n][j]) ;
44 }
45 printf("\n") ;
46 break;
47 }
48 }
49 }
50 return 0 ;
51 }

 

HDU 5241 Friends

标签:

原文地址:http://www.cnblogs.com/acm31415/p/4787076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!