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

hihocoder-1135-Magic Box

时间:2016-09-10 16:20:27      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

三种颜色的球一次放入盒子,当数量差满足x,y,z时盒子中的球的个数清零,求盒子中出现数量最多的球的个数

数据范围:球的数量<=20000

分析:直接跟踪一遍放入球的过程,判断是否满足x,y,z,并更新答案

注意:在for循环中是当满足条件是更新答案,退出循环后还要更新一遍答案,这是最后一轮的盒子中剩下的球的数量

 1 #include<iostream>
 2 #include<cstring>
 3 #include<string>
 4 #include<cmath>
 5 #include<vector>
 6 #include<algorithm>
 7 using namespace std;
 8 
 9 int x,y,z;
10 string s;
11 
12 bool chk(int a,int b,int c)
13 {
14     int u=abs(a-b);
15     int v=abs(a-c);
16     int t=abs(b-c);
17     if(u==x&&v==y&&t==z) return true;
18     if(u==x&&v==z&&t==y) return true;
19     if(u==y&&v==x&&t==z) return true;
20     if(u==y&&v==z&&t==x) return true;
21     if(u==z&&v==x&&t==y) return true;
22     if(u==z&&v==y&&t==x) return true;
23     return false;
24 }
25 
26 int main()
27 {
28     while(cin>>x>>y>>z){
29         cin>>s;
30         int cr=0,cb=0,cy=0;
31         int sum=0;
32         int ans=0;
33         for(int i=0;i<s.size();i++){
34             sum++;
35             if(s[i]==R) cr++;
36             else if(s[i]==B) cb++;
37             else cy++;
38             if(chk(cr,cb,cy)){
39                 ans=max(ans,sum);
40                 sum=0;
41                 cr=cb=cy=0;
42             }
43         }
44         ans=max(ans,sum);
45         cout<<ans<<endl;
46     }
47 }

 

hihocoder-1135-Magic Box

标签:

原文地址:http://www.cnblogs.com/0summer/p/5859489.html

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