洛谷P2668 斗地主 贪心+搜索
来源:互联网 发布:网络推广经典案例 编辑:程序博客网 时间:2024/05/17 22:47
题目连接
https://www.luogu.org/problem/show?pid=2668
只要出去顺子后,剩下的牌出的最优顺序是固定的,可以用贪心从四带2对,四带2张,三带1对,三带1张,剩下的对子和单张依次打出去,再特判一下王炸算一次出去就可以了。
然后就是对顺子进行搜索,单顺子,双顺子,三顺子一次搜索与回溯。
在搜索顺子过程中可以剪枝,如果当前出牌次数大于了ans,就不往下搜索了
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int t,n,ans,a,b;int card[20],cnt[20];void dfs(int x){ if (x>ans) return ; memset(cnt,0,sizeof(cnt)); int rest=0; for (int i=0;i<=14;i++) cnt[card[i]]++; while(cnt[4]){ cnt[4]--; rest++; if (cnt[2]>=2) cnt[2]-=2; else if (cnt[1]>=2) cnt[1]-=2; } while(cnt[3]){ cnt[3]--; rest++; if (cnt[2]) cnt[2]--; else if (cnt[1]) cnt[1]--; } if (card[0]&&card[1]&&cnt[1]>=2) rest--; rest+=cnt[1]+cnt[2]; ans=min(ans,rest+x); for (int i=3;i<=15;i++){ int j; for ( j=i;card[j]&&j<=14;j++) { card[j]--; if (j-i+1>=5) dfs(x+1); } while(j>i) card[--j]++; } for (int i=3;i<=15;i++){ int j; for (j=i;card[j]>=2&&j<=14;j++) { card[j]-=2; if (j-i+1>=3) dfs(x+1); } while(j>i) card[--j]+=2; } for (int i=3;i<=15;i++){ int j; for ( j=i;card[j]>=3&&j<=14;j++) { card[j]-=3; if (j-i+1>=2) dfs(x+1); } while(j>i) card[--j]+=3; }}int main(){ cin>>t>>n; while(t--){ memset(card,0,sizeof(card)); ans=n; for (int i=1;i<=n;i++) { cin>>a>>b; if (a==0) card[b-1]++; else if (a==1) card[14]++; else card[a]++; } dfs(0); cout<<ans<<endl; } return 0;}
阅读全文
0 0
- 洛谷P2668 斗地主 贪心+搜索
- 洛谷 P2668 斗地主
- 洛谷 P2668 斗地主
- 洛谷 P2668 斗地主
- 洛谷 P2668 斗地主
- NOIP2015 斗地主 洛谷P2668
- 洛谷 P2668 [NOIP2015 D1T3] 斗地主
- P2668 斗地主
- [P2668]斗地主
- 【p2668】斗地主
- Noip2015 斗地主【搜索】【贪心】
- [NOIP2015]斗地主 搜索+贪心
- 洛谷P2668 斗地主(NOIp2015)(BZOJ4325)
- (noip 2015 斗地主)<搜索+贪心>
- UOJ 147|NOIP 2015|斗地主|搜索|贪心
- 【NOIP 2015】斗地主 贪心+迭代加深搜索
- UOJ #151. 【NOIP2015】斗地主“加强”版【搜索+贪心
- UOJ147 [NOIP2015]斗地主 解题报告【搜索】【贪心】
- Eclipse运行C++问题Launch failed,Binary not found
- bootstrap中怎么样使按钮居中
- Kotlin第二学
- webdriver中元素查找常用方法(全集)
- 注入的花式绕过姿势--向鸡哥学习
- 洛谷P2668 斗地主 贪心+搜索
- 手机音频调试工具
- 【Linux】UDP 服务器端与客户端通信
- 剑指offer:(32)时间效率 :整数中1出现的次数(从1到n整数中1出现的次数)
- Json初学
- 信用有点“污”的他,竟然也能贷款50万!
- 关于结构体的一些讲解,恳请大家指正
- 在Linux下重启Oracle数据库及监听器:
- 异步的脚本加载