Gourmet Cat )
题目链接
题面
题目大意
已知一只猫周一、周四、周日吃鱼,周二、周六吃炖兔肉,周三、周五吃鸡扒。(默默吐槽为啥一只猫吃的这么好,好好吃鱼不好么(⊙﹏⊙))现有鱼可吃a天,炖兔肉可吃b天,鸡扒可吃c天。问这些食物最多可以吃多少天。
题目分析
简单模拟。先看现有的食物最多可供几周,然后在现有食物减去可供应的周数需要的量。然后遍历从周一开始到从周日开始,剩下的食物最多可连续供应几天。答案就是周数 * 7 + 剩下食物连续供应天数。
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int tmp1=a/3,tmp2=b/2,tmp3=c/2;
int week=min(tmp1,min(tmp2,tmp3));
int ans1=week*7;
a-=week*3;
b-=week*2;
c-=week*2;
int ans2=0;
int aa=a,bb=b,cc=c;
//cout<<a<<" "<<b<<" "<<c<<endl;
for(int j=0;j<7;j++){
int cnt1=0;
a=aa;b=bb;c=cc;
for(int i=0;i<7;i++){
if((i+j)%7+1==1||(i+j)%7+1==4||(i+j)%7+1==7){
if(a){
a--;cnt1++;
}else break;
}
else if((i+j)%7+1==2||(i+j)%7+1==6){
if(b){
b--;cnt1++;
}else break;
}
else{
if(c){
c--;cnt1++;
}else break;
}
}
ans2=max(ans2,cnt1);
}
//cout<<cnt1<<" "<<cnt2<<endl;
ans1+=ans2;
printf("%d\n",ans1);
return 0;
}