BZOJ4325&&洛谷P2668[NOIP2015]斗地主

毒瘤大模拟,披着搜索的皮。。。没错,就是皮。。恶心死了,,,PoPoQQQ大爷说的没错,JB题

//By AcerMo 
#include
#include
#include
#include
#include
using namespace std;
int n,m,num[200],ans=0;
int get(int e[])
{
	int gay[50]={0},cnt=0;
	for (int i=0;i<14;i++) gay[e[i]]++;
	while (gay[4]&&gay[2]>1) gay[4]--,gay[2]-=2,cnt++;
	while (gay[4]&&gay[1]>1) gay[4]--,gay[1]-=2,cnt++;
	while (gay[4]&&gay[2]>0) gay[4]--,gay[2]--,cnt++;
	while (gay[3]&&gay[2]>0) gay[3]--,gay[2]--,cnt++;
	while (gay[3]&&gay[1]>0) gay[3]--,gay[1]--,cnt++;
	return cnt+gay[1]+gay[2]+gay[3]+gay[4];//最优情况下组合出牌&&单张牌 
}
void dfs(int e[],int x)
{
	int emm=get(e);
	if (!ans||emm+xans) return ;
	int k[200]={0};
	for (int i=0;i<14;i++) k[i]=e[i];
	for (int i=2;i<14;i++)
	{
		int j=i;while (e[j]>2) j++;
		if (j-i>=2)
		{
			for (int o=j;o-i>=2;o--)
			{
				for (int p=i;p1) j++;
		if (j-i>=3)
		{
			for (int o=j;o-i>=3;o--)
			{
				for (int p=i;p0) j++;
		if (j-i>=5)
		{
			for (int o=j;o-i>=5;o--)
			{
				for (int p=i;p>n>>m;
	while (n--)
	{
		memset(num,0,sizeof(num));
		for (int i=1;i<=m;i++)
		{
			int a,b;cin>>a>>b;
			if (a==1) a=13;
			else if (a) a--;
			num[a]++;
		}
		ans=0;dfs(num,0);
		cout<

 

你可能感兴趣的:(暴力-杂题,爆搜)