luoguP1312 Mayan游戏 题解(NOIP2011)
#include<bits/stdc++.h>
#define ll long long
#define rg register
#define il inline
#define inf 1<<30;
using namespace std; int a[][],b[][][];
int tmp[][];
int way[][];
int n,ans,maxn; il ll gi()
{
ll x=,o=;
char ch;ch=getchar();
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') o=-,ch=getchar();
while(ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
return x*o;
}
il void input()
{
n=gi();
for(int i=;i<=;i++)
{
int tmp=gi(),p=;
while(tmp)
a[p--][i]=tmp,tmp=gi();
a[][i]=;
}
}
il void print(int a[][])
{
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
cout<<a[i][j];
cout<<endl;
}
}
il void drop(int y)
{
int p=;
for(int i=;i>=;i--)
{
if(a[i][y]!=)
{
p=i+;
while(a[p][y]==)
p++;
if(p==i+) continue;
p-=;
a[p][y]=a[i][y];
a[i][y]=;
}
}
}
il int del(int i,int j,int deti,int detj)
{
int fi=i,fj=j,s=;
while()
{
i+=deti;j+=detj;
if(i==||i==||j==||j==) break;
if(tmp[i][j]!=tmp[fi][fj]) break;
s++;
if(s==) break;
}
i=fi;j=fj;
while()
{
i-=deti;j-=detj;
if(i==||i==||j==||j==) break;
if(tmp[i][j]!=tmp[fi][fj]) break;
s++;
if(s==) break;
}
if(s>=)
{
a[fi][fj]=;
return ;
}
return ;
}
il int delet()
{
int flag=;
for(int i=;i>=;i--)
for(int j=;j<=;j++)
tmp[i][j]=a[i][j];
for(int i=;i>=;i--)
for(int j=;j<=;j++)
{
if(a[i][j]==) continue;
if(del(i,j,,)) flag=;
if(del(i,j,,)) flag=;
}
for(int i=;i<=;i++)drop(i);
return flag;
}
il void move(int x,int y,int mode)
{
swap(a[x][y],a[x][y+mode]);
drop(y);
drop(y+mode);
while(delet());
}
il bool check(int b[][])
{
for(int i=;i>=;i--)
for(int j=;j<=;j++)
{
if(a[i][j]!=)
return ;
}
return ;
}
il void reset(int k)
{
for(int l=;l<=;l++)
for(int r=;r<=;r++)
a[l][r]=b[k][l][r];
}
il void copy(int k)
{
for(int l=;l<=;l++)
for(int r=;r<=;r++)
b[k+][l][r]=a[l][r];
}
il void dfs(int k)
{
if(k>n)
{
if(check(b[k]))
{
ans=;
for(int i=;i<k;i++)
{
for(int j=;j<=;j++)
cout<<way[i][j]<<' ';
cout<<endl;
}
}
return;
}
if(ans) return;
for(int j=;j<=;j++)
{
for(int i=;i>=;i--)
{
reset(k);
if(a[i][j]==) continue;
if(j!=&&a[i][j+]!=a[i][j])
{
way[k][]=j-;
way[k][]=-i;
way[k][]=;
move(i,j,);
copy(k);
dfs(k+);
}
if(ans) return;
reset(k);
if(j!=&&a[i][j-]==)
{
way[k][]=j-;
way[k][]=-i;
way[k][]=-;
move(i,j,-);
copy(k);
dfs(k+);
}
if(ans) return;
}
}
} int main()
{
input();
for(int i=;i<=;i++)
for(int j=;j<=;j++)
b[][i][j]=a[i][j];
dfs();
if(!ans) cout<<"-1"<<endl;
return ;
}
luoguP1312 Mayan游戏 题解(NOIP2011)的更多相关文章
- [NOIP2011]Mayan游戏 题解
题目大意: 有一个5*7的方格,上面有几种颜色的方块,如果在一横行或者竖列上有连续三个或者三个以上相同颜色的方块,则它们将立即被消除,方块消除之后,消除位置之上的方块将掉落.每步移动可以且仅可以沿横向 ...
- 刷题总结——mayan游戏(NOIP2011提高组day2T3)
题目: 题目背景 NOIP2011提高组 DAY1 试题. 题目描述 Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个 7 行 5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即 ...
- 洛谷P1312 [NOIP2011提高组Day1T3]Mayan游戏
Mayan游戏 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游 ...
- NOIP2011 Mayan游戏
3 Mayan游戏 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上 ...
- $Mayan$游戏
\(Mayan\)游戏 好啊,一年(半年)来的梦魇,终于结束了. 其实我从来没料到整体竟然会如此暴力--做的时候机房里冷得很,感觉晕晕乎乎地做完了,晕晕乎乎地调了好久,晕晕乎乎地听(看了题解的)\(q ...
- 洛谷P1312 Mayan游戏
P1312 Mayan游戏 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他 ...
- Luogu P1312 Mayan游戏(搜索)
P1312 Mayan游戏 题意 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个\(7\)行\(\times 5\)列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必 ...
- noip提高组2011 Mayan游戏
Mayan游戏 描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.**游戏通关 ...
- [题目] Luogu P1312 Mayan游戏
题面 题目描述 $ Mayan puzzle $是最近流行起来的一个游戏.游戏界面是一个 \(7行 \times 5列\)的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放 ...
随机推荐
- 手写符合Promise/A+规范的Promise
const PENDING = "pending"; const RESOLVED = "resolved"; const REJECTED = "r ...
- 2019-8-14-win10-使用-SMB-v1
title author date CreateTime categories win10 使用 SMB v1 lindexi 2019-08-14 08:55:55 +0800 2018-2-13 ...
- 一、模型验证CoreWebApi 管道方式(非过滤器处理)
一.新建.Net Core的MVC项目添加WebApi控制器的方式 using System; using System.Collections.Generic; using System.Linq; ...
- OA是Office Automation
OA是Office Automation OA是Office Automation OA是Office Automation
- Tunnel connection failed: 407 Proxy Authentication Required
报错信息 : Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connecti ...
- python3-filter
Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是 ...
- 阿里云轻应用云服务器配置tomcat
#etc/profile export CATALINA_HOME=/wocloud/tomcat_cluster/tomcat1/apache-tomcat-7.0.57 #查看防火墙状态 fire ...
- 如何使您的Wifi路由器更安全,网络安全专家告诉您!
中国知名“黑客”教父,网络安全专家郭盛华曾说过,Wifi路由器这样设置最安全.因为无线路由器都有不同的接口,不同的设置方式以及可以调整的不同设置.在本文中,我将探讨TP-LinkArcher的界面.您 ...
- DEDECMS编辑器粘贴Word
我司需要做一个需求,就是使用富文本编辑器时,不要以上传附件的形式上传图片,而是以复制粘贴的形式上传图片. 在网上找了一下,有一个插件支持这个功能. WordPaster 安装方式如下: 直接使用Wor ...
- 使用WebAPI流式传输大文件(在IIS上大于2GB)
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...