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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【NOIP2015】斗地主 题解

發(fā)布時(shí)間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NOIP2015】斗地主 题解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接

思路:

大模擬,爆搜30分。

加一個(gè)貪心就能過。

單張和對(duì)子不用打,留到最后把散牌都打掉,無(wú)論怎么都會(huì)出現(xiàn)只剩單張和對(duì)子的情況,這種情況只能打散牌。

代碼:

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define R register using namespace std; const int N=50; int n,t,a[N],b[N],flag[N],ans,ton[N],tot; inline void dfs(R int cnt,R int use){if(cnt>=ans)return;if(use==n){ans=min(ans,cnt);return;}R int lst=0;for(R int i=3;i<=14;++i){if(!ton[i])lst=0;else{++lst;if(lst>=5){for(R int k=i-lst+1;k<=i;++k)--ton[k];dfs(cnt+1,use+lst);for(R int k=i-lst+1;k<=i;++k)++ton[k];}}}lst=0;for(R int i=3;i<=14;++i){if(ton[i]<2)lst=0;else{++lst;if(lst>=3){for(R int k=i-lst+1;k<=i;++k)ton[k]-=2;dfs(cnt+1,use+lst*2);for(R int k=i-lst+1;k<=i;++k)ton[k]+=2;}}}lst=0;for(R int i=3;i<=14;i++){if(ton[i]<3)lst=0;else{++lst;if(lst>=2){for(R int k=i-lst+1;k<=i;++k)ton[k]-=3;dfs(cnt+1,use+lst*3);for(R int k=i-lst+1;k<=i;++k)ton[k]+=3;}}}for(R int i=3;i<=15;++i){if(ton[i]==4){ton[i]-=4;for(R int j=3;j<=15;++j){for(R int k=1;k<j;++k){if(ton[j]>=2&&ton[k]>=2){ton[j]-=2;ton[k]-=2;dfs(cnt+1,use+8);//四帶二對(duì)ton[j]+=2;ton[k]+=2;}if(ton[j]>=1&&ton[k]>=1){--ton[j];--ton[k];dfs(cnt+1,use+6);//四帶二單++ton[j];++ton[k];}}if(ton[j]>=2){ton[j]-=2;dfs(cnt+1,use+6);//四帶二 同ton[j]+=2;}}ton[i]+=4;ton[i]-=4;dfs(cnt+1,use+4);//炸彈ton[i]+=4;}if(ton[i]>=3){ton[i]-=3;for(R int k=3;k<=15;++k){if(ton[k]&&i!=k){--ton[k];dfs(cnt+1,use+4);//三帶一++ton[k];}if(ton[k]>=2){ton[k]-=2;dfs(cnt+1,use+5);//三帶二ton[k]+=2;}}ton[i]+=3;ton[i]-=3;dfs(cnt+1,use+3);//三張ton[i]+=3;}}for(R int i=3;i<=15;++i)if(ton[i]>=1)++cnt;ans=min(ans,cnt); } int main(){scanf("%d%d",&t,&n);while(t--){ans=0x3f3f3f3f;memset(ton,0,sizeof(ton));for(R int i=1;i<=n;i++){scanf("%d%d",&a[i],&b[i]);if(a[i]==1)a[i]=14;if(a[i]==2)a[i]=15;if(a[i]==0)a[i]=16;ton[a[i]]++;}if(ton[16]){//火箭R int k=ton[16];ton[16]=0;dfs(1,k);}elsedfs(0,0);printf("%d\n",ans);}return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/sky-zxz/p/9897038.html

總結(jié)

以上是生活随笔為你收集整理的【NOIP2015】斗地主 题解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。