Codeforces Round #552 (Div. 3) C题
Posted duxing201806
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
以上是关于Codeforces Round #552 (Div. 3) C题的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #552 (Div. 3)-D-Walking Robot-(贪心)
Codeforces Round #552 (Div. 3) Editorial 1154C - Gourmet Cat
Codeforces Round #552 (Div. 3) C. Gourmet Cat (数学,模拟)
Codeforces Round #552 (Div. 3)-1154E-Two Teams-(模拟+双指针)