BZOJ.1028.[JSOI2007]麻将(贪心)
枚举对子,枚举每张牌,先出完它的刻子,剩下的出顺子。\(O(n^3)\).
不是这样 -> 出完所有刻子,最后出顺子。(日常zz)
优先仨相同的,然后顺子,有一次且一定要用一次机会补顺子的空位,即把刻子换成对子。这样好像是\(O(n^2)\).
不写\(O(n^2)\)的了,特判之类大概非常麻烦。。
//828kb	396ms
#include <cstdio>
#include <cctype>
#include <cstring>
#define gc() getchar()
const int N=407;
int n,m,tot,tmp[N],num[N],Ans[N];
inline int read()
{
	int now=0;register char c=gc();
	for(;!isdigit(c);c=gc());
	for(;isdigit(c);now=now*10+c-'0',c=gc());
	return now;
}
bool Check()
{
	for(int i=1; i<=n+2; ++i)//处理完前面的 才处理这张出刻子!
		if((num[i]%=3)>0) num[i+1]-=num[i], num[i+2]-=num[i], num[i]=0;//直接给减掉就行啊,判什么
		else if(num[i]<0) return 0;
	return 1;
}
int main()
{
	n=read(),m=read(),tot=3*m+1;
	for(int i=1; i<=tot; ++i) ++tmp[read()];
	int cnt=0;
	for(int i=1; i<=n; ++i)
	{
		++tmp[i];
		for(int j=1; j<=n; ++j)
			if(tmp[j]>=2)
			{
				tmp[j]-=2, memcpy(num,tmp,sizeof num), tmp[j]+=2;
				if(Check()) {Ans[++cnt]=i; break;}
			}
		--tmp[i];
	}
	if(cnt) for(int i=1; i<=cnt; ++i) printf("%d ",Ans[i]);
	else puts("NO");
	return 0;
}
BZOJ.1028.[JSOI2007]麻将(贪心)的更多相关文章
- BZOJ 1028: [JSOI2007]麻将 暴力
		1028: [JSOI2007]麻将 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/prob ... 
- BZOJ 1028 [JSOI2007]麻将
		1028: [JSOI2007]麻将 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1270 Solved: 576[Submit][Status][ ... 
- [BZOJ 1028] [JSOI2007] 麻将 【枚举+贪心判断】
		题目链接:BZOJ - 1028 题目分析 枚举听的是哪种牌,再枚举成对的是哪种牌,再贪心判断: 从1到n枚举每一种牌,如果这种牌的个数小于0,就返回不合法. 将这种牌的张数 % 3, 剩下的只能和 ... 
- 1028: [JSOI2007]麻将
		1028: [JSOI2007]麻将 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2638 Solved: 1168[Submit][Status] ... 
- 【BZOJ】1028: [JSOI2007]麻将(贪心+暴力)
		http://www.lydsy.com/JudgeOnline/problem.php?id=1028 表示不会贪心QAQ 按顺序枚举,如果能形成刻子那么就形成刻子,否则形成顺子.orz 证明?:因 ... 
- 1028: [JSOI2007]麻将 - BZOJ
		Description 麻将是中国传统的娱乐工具之一.麻将牌的牌可以分为字牌(共有东.南.西.北.中.发.白七种)和序数牌(分为条子.饼子.万子三种花色,每种花色各有一到九的九种牌),每种牌各四张.在 ... 
- BZOJ 1028 BZOJ 1029   //贪心
		1028: [JSOI2007]麻将 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2197 Solved: 989[Submit][Status][ ... 
- bzoj千题计划118:bzoj1028: [JSOI2007]麻将
		http://www.lydsy.com/JudgeOnline/problem.php?id=1028 枚举等待牌 枚举对是哪个 判断 #include<cstdio> #include ... 
- bzoj1028 [JSOI2007]麻将
		1028: [JSOI2007]麻将 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1337 Solved: 601[Submit][Status][ ... 
随机推荐
- 网络报错:“The connection is not for this device.”
			网络报错:“The connection is not for this device.” 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 记得在前几天工作的时候,有一个同时通过微信 ... 
- Pycharm使用详解
			Pycharm使用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 古人云,工欲善其事,必先利其器.想要学好Python且拥有高效的开发效率,这个时候每个程序员都有自己的开发方式 ... 
- GUI起头
			package com.lovo.frame; import java.awt.Color;import java.awt.Container;import java.awt.Font;import ... 
- jquery的json对象与字符串之间转换
			json对象----- >>字符串 JSON.stringify(obj) json字符串------>>json对象 JSON.parse(string) 公众号 欢迎关注我 ... 
- Codeforces 923 C. Perfect Security
			http://codeforces.com/contest/923/problem/C Trie树 #include<cstdio> #include<iostream> us ... 
- NAT地址转换
			2017年1月12日, 星期四 NAT地址转换 SNAT:源地址转换 DNAT:目标地址转换 null 
- VMware Linux 下 Nginx 安装配置 (一)
			资源准备 1. pcre-8.34.tar.gz: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 2. zlib-1.2.8.tar.g ... 
- 使用storyboard显示UITableView时,如果不修改系统默认生成的tableView:cellForRowAtIndexPath:方法中的代码,则必须为UITableViewCell注册(填写)重用标识符:identifier.必须要代码方法中的标识符一致.
			CHENYILONG Blog 使用storyboard显示UITableView时,如果不修改系统默认生成的tableView:cellForRowAtIndexPath:方法中的代码,则必须为UI ... 
- yii2框架目录
			框架目录结构 [目录] backend——后台web程序 common——公共的文件 console——控制台程序 environments——环境配置 frontend——前台web程序 [文件] ... 
- deeplearning.ai学习RNN
			一.RNN基本结构 普通神经网络不能处理时间序列的信息,只能割裂的单个处理,同时普通神经网络如果用来处理文本信息的话,参数数目将是非常庞大,因为如果采用one-hot表示词的话,维度非常大. RNN可 ... 
