【Codeforces Round #552 (Div. 3)】C.Gourmet Cat
题意:傲娇的小猫在星期1/4/7只吃鱼,在星期2/6只吃兔,在星期3/5只吃鸡。现在有鱼兔鸡各a,b,c份,问小猫最多能连续吃几天。
题解:如果鱼兔鸡的比例在3:2:2那么不管从哪天开始吃,都可以吃7天,所以我们先把整周算出来,然后剩下的就从星期一开始枚举能吃几天。最后取最大值。
My_Feeling:
就这么简单的一道题,在比赛的时候都没有做出来,tcl,我tcl
QAQ
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstring>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <list>
#include <map>
#define P(x) x>0?x:0
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
typedef vector<int>:: iterator VITer;
const int maxn=105;
int a,b,c;
int aa,bb,cc;
int min_,ans[8],day;
void init()
{
min_=INF;
day=0;
memset(ans,0,sizeof(ans));
}
void update()
{
a=aa;
b=bb;
c=cc;
}
int main()
{
while(~scanf("%d%d%d",&a,&b,&c))
{
init();
if(a>=3&&b>=2&&c>=2)
{
min_=min(min_,a/3);
min_=min(min_,b/2);
min_=min(min_,c/2);
for(int i=1;i<=7;i++)
ans[i]+=min_*7;
a-=min_*3;
b-=min_*2;
c-=min_*2;
}
aa=a;
bb=b;
cc=c;
for(int i=1;i<=7;i++)//从周几开始
{
update();
for(int week=i;week<=7;week++)
{
if (week == 1 || week == 4 || week == 7)
{
if (a == 0)
break;
a--;
ans[i]++;
}
else if (week == 2 || week == 6)
{
if (b == 0)
break;
b--;
ans[i]++;
}
else
{
if (c == 0)
break;
c--;
ans[i]++;
}
if(week==7)
week=0;
}
}
for(int i=1;i<=7;i++)
{
day=max(day,ans[i]);
}
printf("%d\n",day);
}
return 0;
}