题目链接:https://codeforces.com/problemset/problem/1154/C
题意:有一只猫1,4,7吃第一种食物,2,6吃第二种食物,3,5吃第三种食物,给出三种食物的种数,问这只猫最多可以吃几天。
思路:首先可以想到先把整周的个数给求出来,余下的在做处理。对于余下的,我开始以为是有规律,可是找了很久都没有找到,所以看了题解,才知道余下的直接枚举就行。emmmm。因为一共才七天,余下的食物不会吃的超过一周,所以余下的直接枚举就行。
AC代码:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define LL long long
LL a[10],b[10];
int w[]={0,1,2,0,2,1,0};
int main()
{
while(cin>>a[0]>>a[1]>>a[2])
{
LL x=min(a[0]/3,min(a[1]/2,a[2]/2));
LL ans=x*7LL;
a[0]-=x*3,a[1]-=x*2,a[2]-=x*2;
for(int i=0;i<7;i++)
{
LL cnt=0;
for(int i=0;i<3;i++) b[i]=a[i];
for(int j=i;b[w[j]]>0;j=(j+1)%7)
{
b[w[j]]--;
cnt++;
}
ans=max(ans,x*7LL+cnt);
}
cout<<ans<<endl;
}
return 0;
}