【BZOJ1028】[JSOI2007]麻将(贪心)

题面

BZOJ

洛谷

题解

感觉好久没打过麻将了,似乎都快不会打了。

这个数据范围看着就觉得是\(O(n^2m)\)。

那么就枚举听哪张牌,然后枚举哪张是一对牌

考虑如何\(check\)剩下的牌是否能够构成顺子或者刻子(这叫法好别扭啊)。

那就从前往后搞,能够组成刻子就全组了,不行就组顺子(平时打麻将似乎也是这样的,虽然只有\(4\)张相同的)

#include<iostream>
#include<cstdio>
using namespace std;
#define MAX 404
inline int read()
{
int x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int a[MAX],b[MAX],n,m,S[MAX],top;
bool check()
{
for(int i=1;i<=n;++i)
{
b[i]%=3;
if(b[i+1]<b[i]||b[i+2]<b[i])return false;
b[i+1]-=b[i];b[i+2]-=b[i];b[i]=0;
}
for(int i=1;i<=n;++i)if(b[i])return false;
return true;
}
int main()
{
n=read();m=read();
for(int i=1;i<=3*m+1;++i)a[read()]+=1;
for(int i=1;i<=n;++i)
{
bool fl=false;
for(int j=1;j<=n;++j)
{
for(int k=1;k<=n;++k)b[k]=a[k];
b[i]+=1;if(b[j]<2)continue;b[j]-=2;
if(check()){fl=true;break;}
}
if(fl)S[++top]=i;
}
if(!top)puts("NO");
else for(int i=1;i<=top;++i)printf("%d ",S[i]);
return 0;
}

【BZOJ1028】[JSOI2007]麻将(贪心)的更多相关文章

  1. bzoj1028 [JSOI2007]麻将

    1028: [JSOI2007]麻将 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1337  Solved: 601[Submit][Status][ ...

  2. bzoj千题计划118:bzoj1028: [JSOI2007]麻将

    http://www.lydsy.com/JudgeOnline/problem.php?id=1028 枚举等待牌 枚举对是哪个 判断 #include<cstdio> #include ...

  3. BZOJ.1028.[JSOI2007]麻将(贪心)

    题目链接 枚举对子,枚举每张牌,先出完它的刻子,剩下的出顺子.\(O(n^3)\). 不是这样 -> 出完所有刻子,最后出顺子.(日常zz) 优先仨相同的,然后顺子,有一次且一定要用一次机会补顺 ...

  4. BZOJ 1028: [JSOI2007]麻将 暴力

    1028: [JSOI2007]麻将 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/prob ...

  5. BZOJ 1028 [JSOI2007]麻将

    1028: [JSOI2007]麻将 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1270  Solved: 576[Submit][Status][ ...

  6. 1028: [JSOI2007]麻将

    1028: [JSOI2007]麻将 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2638  Solved: 1168[Submit][Status] ...

  7. 【BZOJ】1028: [JSOI2007]麻将(贪心+暴力)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1028 表示不会贪心QAQ 按顺序枚举,如果能形成刻子那么就形成刻子,否则形成顺子.orz 证明?:因 ...

  8. [BZOJ 1028] [JSOI2007] 麻将 【枚举+贪心判断】

    题目链接:BZOJ - 1028 题目分析 枚举听的是哪种牌,再枚举成对的是哪种牌,再贪心判断: 从1到n枚举每一种牌,如果这种牌的个数小于0,就返回不合法. 将这种牌的张数 % 3, 剩下的只能和 ...

  9. [JSOI2007]麻将 模拟 BZOJ1028

    题目描述 麻将是中国传统的娱乐工具之一.麻将牌的牌可以分为字牌(共有东.南.西.北.中.发.白七种)和序数牌(分为条子.饼子.万子三种花色,每种花色各有一到九的九种牌),每种牌各四张. 在麻将中,通常 ...

随机推荐

  1. cocos2d-x 2.2.3 建工程

    2.2以后不再使用模板安装了. 打开终端,进入cocos2d-x目录下的tools/project-creator,执行命令 ./create_project.py -project [项目名] -p ...

  2. 关于this指向,翻到的

    关于JavaScript函数执行环境的过程,IBM developerworks文档库中的一段描述感觉很不错,摘抄如下: “JavaScript 中的函数既可以被当作普通函数执行,也可以作为对象的方法 ...

  3. China Cloud Computing Conference(2018.07.24)

    时间:2018.07.24地点:北京国家会议中心

  4. flask使用sqlit3的两种方式

    方式一:raw_sql import sqlite3 from flask import Flask, request, jsonify app = Flask(__name__) DATABASE_ ...

  5. Ubuntu中程序部署时无法加载动态库的解决方法

    Ubuntu下修改环境变量的三种方法 添加环境变量无法解决,可尝试如下操作: sudo vim /etc/ld.so.conf 在ld.so.conf中加入动态库的目录... 然后 sudo ldco ...

  6. 使用 restTemplate 实现get/post 请求

    get 请求(这里是在 idea 的 test包中,所以需要直接 new RestTemplate() ) 即:RestTemplate restTemplate = new RestTemplate ...

  7. Linux 入门记录:十二、Linux 权限机制

    一.权限 权限是操作系统用来限制资源访问的机制,权限一般分为读.写.执行. 系统中每个文件都拥有特定的权限.所属用户及所属组,通过这样的机制来限制哪些用户.哪些组可以对特定的文件进行什么样的操作. 每 ...

  8. Jq_$.getJSON( )

    jQuery中的$.getJSON( )方法函数主要用来从服务器加载json编码的数据,它使用的是GET HTTP请求.使用方法如下: $.getJSON( url [, data ] [, succ ...

  9. tomcat设置开机自启动和后台运行

    前言:当浏览器页面显示不出来的时候,重启装在服务器上的tomcat可以正常使用,是通过进入tomcat的bin目录,双击startup.bat运行启动的程序,这时会弹出启动窗口(tomcat的运行日志 ...

  10. linux一切皆文件之tcp socket描述符(三)

    一.知识准备 1.在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列) 2.操作这些不同的类型就像操作文件一样,比如增删改查等 二.环境准备 ...