日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Stone Game

發布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。