题目网址: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 }