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 } 
View Code

 

以上是关于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-(模拟+双指针)

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)