zoj1610 Count the Colors

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define N 8001
 4 int color[N],cnt[N];//这个cnt是用来记录颜色i出现的段数 ,注意cnt里的这个N真的需要好大,我以为就几百种呢,结果WA好多次 
 5 int main()
 6 {
 7     int i,j,a,b,c,max,n;
 8     while(~scanf("%d",&n)){
 9         for(max=i=0;i<n;++i){
10             scanf("%d%d%d",&a,&b,&c);
11             for(j=a;j<b;++j)
12                 color[j]=c+1;
13             if(max<b) max=b;
14         }
15         for(i=0;i<max;++i){
16             while(i!=0&&color[i]&&color[i]==color[i-1]) //假如颜色不为空且与前一段相同,则继续读下一段 
17                 ++i;
18             if(color[i])
19                 cnt[color[i]-1]++;  //颜色为color[i]-1的段数加一 
20         }
21         for(i=0;i<N;++i)
22         if(cnt[i]) printf("%d %d\n",i,cnt[i]);//从小到大输出颜色及出现次数 
23         memset(color,0,max*sizeof(int));//记得清空 
24         memset(cnt,0,sizeof(cnt));
25         putchar('\n');
26     }
27     return 0;
28 }
原文地址:https://www.cnblogs.com/shihuajie/p/2630638.html