Stone Game
生活随笔
收集整理的這篇文章主要介紹了
Stone Game
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
有n堆石頭,每堆石頭最多只有三個石頭(最少1個),每兩堆石頭(這兩堆各含石頭x個和y個)合一起的費用為(x mod 3) * (y mod 3),現在把所有堆合成一堆,問最小費用
題目第一行給出三個數,第i個數表示有i個石頭的堆有多少個
題解:
費用是(x mod 3) * (y mod 3),那也就是說如果x和y有一個是3的倍數,那么費用就是0,那么我們就要將堆內石頭盡可能構造3的倍數
比如:一個石頭和兩個石頭合并,費用是2
三個堆,每個堆都只有一個石頭,費用是1+2 = 3
三個堆,每個堆都只有兩個石頭,費用是4+2 = 6
說明一個石頭和兩個石頭構造更劃算
那么我們一開始就讓1個石頭的堆和兩個石頭的合并,然后多余的自己合并
詳細看代碼
代碼:
#include<bits/stdc++.h> typedef long long ll; using namespace std; inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w; } int main() { ll x,y,z;cin>>x>>y>>z;ll ans=0;ans=min(x,y)*2;if(x>y){x-=y;//還剩下x堆只有一個石頭的石頭堆 ans+=x/3*3;//和成三個石頭的堆if(x%3==1)ans+=0; if(x%3==2)ans+=1; }else if(y>x){y-=x;ans+=y/3*6;if(y%3==2)ans+=4;}cout<<ans; }總結
以上是生活随笔為你收集整理的Stone Game的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信拍一拍在哪里点 需要怎么操作
- 下一篇: 博美犬性格是什么 博美犬性格简述