Codeforces Round #552 (Div. 3) C. Gourmet Cat (數學,模擬)
阿新 • • 發佈:2020-11-14
-
題意:你要帶著你的喵咪一起去旅行,你的喵在星期\(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; }