HDU 2085 核反应堆

解题报告:题目大意,在第0微秒的时候有一个高能质子,定义有如下反应,当一个高能质子撞击核子时,质子被吸收,同时放出3个高能质子和一个低能质子,如果一个低能质子撞击核子的话,可以放出两个高能质子和一个低能质子,问在第n微秒的时候一共有多少个高能质子和低能质子。超级简单DP题,打表就可以了,不打表也行,假如定义一个数组high[34]表示高能质子的个数,和一个数组low[34]表示低能质子的个数,那么递推的公式就是:

high[i] = 3*high[i-1] + low[i-1];

low[i] = high[i-1] + low[i-1];

本题要注意的就是数据范围可能比较大,所以要__int64(交C++);

 1 #include<cstdio>
 2 #include<cstring>
 3 int times[1000005];
 4 
 5 int main() {
 6     int N,d;
 7     while(scanf("%d",&N)!=EOF) {
 8         memset(times,0,sizeof(times));
 9         for(int i = 1;i<=N;++i) {
10             scanf("%d",&d);
11             times[d]++;
12         }
13         int max = 0;
14         for(int i = 0;i<=1000000;++i)
15         if(times[i]>times[max])
16         max = i;
17         printf("%d
",max);
18     }
19     return 0;
20 } 
21              
22     
View Code
原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3174673.html