【uoj147】NOIP2015—斗地主
http://uoj.ac/problem/147 (题目链接)
题意
打牌。。。
Solution
其实很简单的搜索,当年还是太年轻了。稍微想一想,顺子肯定是要先打掉的,因为顺子所包含的牌最多,所以我们可以以打出了多少张顺子为状态进行搜索,每一种状态,贪心去计算一下对于当前状态还需要打多少次才能将牌打完,不断更新答案即可。
代码
// uoj147
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<queue>
#define MOD 1000000007
#define inf 2147483640
#define LL long long
#define free(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout);
using namespace std; const int maxn=30;
int c[5],a[maxn],n,T,ans; int cal() {
memset(c,0,sizeof(c));
for (int i=0;i<=13;i++) c[a[i]]++;
int tot=0;
while (c[4] && c[2]>1) c[4]--,c[2]-=2,tot++;
while (c[4] && c[1]>1) c[4]--,c[1]-=2,tot++;
while (c[4] && c[2]) c[4]--,c[2]--,tot++;
while (c[3] && c[2]) c[3]--,c[2]--,tot++;
while (c[3] && c[1]) c[3]--,c[1]--,tot++;
return tot+c[1]+c[2]+c[3]+c[4];
}
void dfs(int x) {
if (x>=ans) return;
int tmp=cal();
ans=min(ans,tmp+x);
for (int i=2;i<=13;i++) {
int j=i;
while (a[j]>=3) j++;
if (j-i>=2) {
for (int k=i+1;k<=j-1;k++) {
for (int l=i;l<=k;l++) a[l]-=3;
dfs(x+1);
for (int l=i;l<=k;l++) a[l]+=3;
}
}
}
for (int i=2;i<=13;i++) {
int j=i;
while (a[j]>=2) j++;
if (j-i>=3) {
for (int k=i+2;k<=j-1;k++) {
for (int l=i;l<=k;l++) a[l]-=2;
dfs(x+1);
for (int l=i;l<=k;l++) a[l]+=2;
}
}
}
for (int i=2;i<=13;i++) {
int j=i;
while (a[j]>=1) j++;
if (j-i>=5) {
for (int k=i+4;k<=j-1;k++) {
for (int l=i;l<=k;l++) a[l]--;
dfs(x+1);
for (int l=i;l<=k;l++) a[l]++;
}
}
}
}
int main() {
int T;scanf("%d%d",&T,&n);
while (T--) {
memset(a,0,sizeof(a));
for (int x,y,i=1;i<=n;i++) {
scanf("%d%d",&x,&y);
if (x==1) x=13;
else if (x) x--;
a[x]++;
}
ans=n;
dfs(0);
printf("%d\n",ans);
}
return 0;
}
【uoj147】NOIP2015—斗地主的更多相关文章
- NOIP2015斗地主[DFS 贪心]
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
- BZOJ 4325: NOIP2015 斗地主
4325: NOIP2015 斗地主 Time Limit: 30 Sec Memory Limit: 1024 MBSubmit: 684 Solved: 456[Submit][Status] ...
- NOIP2015 斗地主(搜索+剪枝)
4325: NOIP2015 斗地主 Time Limit: 30 Sec Memory Limit: 1024 MBSubmit: 270 Solved: 192[Submit][Status] ...
- [补档][NOIP2015] 斗地主
[NOIP2015] 斗地主 题目 传送门:http://cogs.pro/cogs/problem/problem.php?pid=2106 INPUT 第一行包含用空格隔开的2个正整数Tn,表示手 ...
- LOJ2422 NOIP2015 斗地主 【搜索+贪心】*
LOJ2422 NOIP2015 斗地主 LINK 题目大意很简单,就是问你斗地主的一分手牌最少多少次出完 然后我们发现对于一种手牌状态,不考虑顺子的情况是可以贪心做掉的 然后我们直接枚举一下顺子出牌 ...
- 【BZOJ4325】NOIP2015 斗地主 搜索+剪枝
[BZOJ4325]NOIP2015 斗地主 Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗 ...
- 2106. [NOIP2015] 斗地主
2106. [NOIP2015] 斗地主 ★★★☆ 输入文件:landlords.in 输出文件:landlords.out 简单对比 时间限制:2 s 内存限制:1025 M ...
- NOIP2015斗地主题解 7.30考试
问题 B: NOIP2015 斗地主 时间限制: 3 Sec 内存限制: 1024 MB 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共 ...
- [NOIP2015] 斗地主(搜索)
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
随机推荐
- jdbc连接数据库总结
jdbc支持多种数据库,比如说oracle, mysql, mssql,现在总结一下连接各种数据库的相关知识 1,mysql连接,代码如下 Class.forName("com.mysql. ...
- 深入运用js
1,eval()函数 这个函数是获取参数的字符串,并将其作为js来处理,所以这里就有可能有人用这个来搞破坏(比如注入JS脚本文件等),所以最好的是方法是尽量少用,或者可以用new function() ...
- U3D屏幕空间到世界空间变换
using UnityEngine; using System.Collections; public class FPSCam : MonoBehaviour { Vector3 lastPos; ...
- hadoop: hive 1.2.0 在mac机上的安装与配置
环境:mac OS X Yosemite + hadoop 2.6.0 + hive 1.2.0 + jdk 1.7.0_79 前提:hadoop必须先安装,且处于运行状态(伪分式模式或全分布模式均可 ...
- C“中断” 与 JS“异步回调” 横向对比
在底层C语言中,有一个非常重要而特别的概念,叫做“中断”.用比喻来说,我正在写着博客,突然我妈打个电话过来,我就离开了键盘去接电话了,然后写博客就中断了,我聊完电话回来再继续写.乍一听似乎并没有什么大 ...
- 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ
前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...
- 我的开发框架之ORM框架
今天我想分享一下我自己的ORM框架,虽然谈不是很好,但我个人认为还是蛮好用的,跟大家分享交流一下. 首先说说我对现在主流的ORM框架的一些看法: 优点: 让程序员不再关注数据库细节,专心在业务逻辑上, ...
- 什么是web框架?
英文原文:http://jeffknupp.com/blog/2014/03/03/what-is-a-web-framework/ 在原文基础上加上了自己在翻译过程中,查看的资料和自己的一些理解,同 ...
- JavaScript instanceof 运算符深入剖析
简介: 随着 web 的发展,越来越多的产品功能都放在前端进行实现,增强用户体验.而前端开发的主要语言则是 JavaScript.学好 JavaScript 对开发前端应用已经越来越重要.在开发复杂产 ...
- BroadcastReceiver之发送自定义无序广播
首先,发送一个自定义广播:(用sendBroadcast(intent)发送一条无序广播) public void click(View v){ Intent intent = new Intent( ...