Codeforces Round #552 (Div. 3) C题

题目网址:http://codeforces.com/contest/1154/problem/C

题目意思:小猫吃三种食物,A,B,C,一周吃食物的次序是,A,B,C,A,C,B,A,当小猫该天无食物可吃时,就会饿死,现给出a,b,c三个数,表示A,B,C的食物数量,

选择一天开始,问小猫最多可以活到多少天。

题解:首先,在一周时间,A要吃三天,B要吃两天,C要吃两天,先随便选一天开始,当剩下食物不足以撑过一周时停止,再细分剩下的食物数量,看小猫饿

死是经过的最多天数。选择的天数用暴力写即可。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int k[10]={1,2,3,1,3,2,1};
 4 int main()
 5 {
 6     int a,b,c,flag,days=-1;
 7     cin>>a>>b>>c;
 8     int minn=min(min(a/3,b/2),c/2);
 9     a-=minn*3,b-=minn*2,c-=minn*2;
10     minn=minn*7;
11 //    cout<<a<<endl;cout<<b<<endl;cout<<c<<endl;
12     for(int i=0;i<7;i++)
13     {
14         flag=0;
15         int sa=a,sb=b,sc=c;
16         for(int j=0;j<7;j++)
17         {
18             if(k[(i+j)%7]==1)
19             {
20                 if(sa==0) flag=1;
21                 sa--;
22             }
23             else if(k[(i+j)%7]==2)
24             {
25                 if(sb==0) flag=1;
26                 sb--;
27             }
28             else if(k[(i+j)%7]==3)
29             {
30                 if(sc==0) flag=1;
31                 sc--;
32             }
33             if(flag==1) {
34                 days=max(days,j);break;
35             }
36         }
37     }
38     cout<<days+minn<<endl;
39 } 
View Code

猜你喜欢

转载自www.cnblogs.com/duxing201806/p/10726493.html