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列\)的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放 ...
随机推荐
- BZOJ3129/洛谷P3301方程(SDOI2013)容斥原理+扩展Lucas定理
题意:给定方程x1+x2+....xn=m,每个x是正整数.但是对前n1个数做了限制x1<=a1,x2<=a2...xn1<=an1,同时对第n1+1到n1+n2个数也做了限制xn1 ...
- 随笔2 AbstractMap<K,V>
上一篇写了Map接口的源码分析,这一篇写一下Map接口的一个实现类AbstractMap,从名字就可以看出这是一个抽象类,提供了Map接口的骨架实现,为我们实现Map接口的时候提供了很大的便利.在这里 ...
- [CF] 8C Looking for Order
状压模板题 CF难度2000? 我得好好了解一下CF的难度机制了 反正CF的难度比洛谷真实就好了 Code #include<algorithm> #include<iostream ...
- 【串线篇】spring boot页面模板引擎
如JSP.Velocity.Freemarker.Thymeleaf SpringBoot推荐的Thymeleaf:语法更简单,功能更强大: 一.引入thymeleaf <dependency& ...
- 每次当浏览到网页,点击tab标签又回到顶部去了!
通常tab的标签使用a链接,而a链接的href值为#,这是一个锚点的属性,因此他会跳转到网页的顶端.如果你的tab包含一个id=tab,也可以设置为href="#tab"这样他就会 ...
- OC + RAC (十) 常用宏
. RAC(TARGET, [KEYPATH, [NIL_VALUE]]) :用于给某个对象的某个属性绑定. // 只要文本框文字改变,就会修改label的文字 RAC(self.labelView, ...
- java中super的用法总结
package com.ssm.java; /** * Super * usage1:super. 直接去调用父类的方法和属性. * usage2:放在构造器中的第一位,代表引用父类的构造器. */ ...
- 20180716-Java正则表达式
import java.util.regex.Matcher;import java.util.regex.Pattern; public class RegexMatches{ public sta ...
- 576 C
C. MP3 爆ll == #include<bits/stdc++.h> using namespace std; typedef long long ll; #define P pai ...
- 和风api爬取天气预报数据
''' 和风api爬取天气预报数据 目标:https://free-api.heweather.net/s6/weather/forecast?key=cc33b9a52d6e48de85247779 ...