标签:out cin round pre with cout 去旅行 一起 最大

题意:你要带着你的喵咪一起去旅行,你的喵在星期\(1,4,7\)吃喵粮\(x\),在星期\(2,6\)吃喵粮\(y\),在星期\(3,5\)吃喵粮\(z\),你只有\(a\)个\(x\),\(b\)个\(y\),\(c\)个\(z\),一旦吃完旅行就结束了,问你选择星期几出发能使旅行的天数最长.
题解:这已经是这个星期第三次碰到这种idea的题了,我们一定是旅行了几个(或者0)星期的循环后才会结束,所以先求出最多能跑几个循环,然后剩下的枚举求个最大值即可.
代码:
int a,b,c;
// a:1 4 7 
// b:2 6
// c:3 5
int d[7]={1,2,3,1,3,2,1};
int ans;
 
int main() {
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin>>a>>b>>c;
 
    int mi=min({a/3,b/2,c/2});
 
    a-=mi*3;
    b-=mi*2;
    c-=mi*2;
 
    int cnt=0;
 
    rep(i,0,6){
    	int a1=a;
    	int b1=b;
    	int c1=c;
    	cnt=0;
    	rep(j,i,i+6){
    		int cur=j%7;
    		if(d[cur]==1) a1--;
    		if(d[cur]==2) b1--;
    		if(d[cur]==3) c1--;
    		if(a1==-1 || b1==-1 || c1==-1){
    			ans=max(ans,mi*7+cnt);
    			break;
    		}
    		cnt++;
    	}
    }
 
    cout<<ans<<‘\n‘;
 
    return 0;
}
Codeforces Round #552 (Div. 3) C. Gourmet Cat (数学,模拟)
标签:out cin round pre with cout 去旅行 一起 最大
原文地址:https://www.cnblogs.com/lr599909928/p/13974049.html