这道题输出特别坑。。。。

题目的意思也不太好理解。。

就解释一下输出吧。。

它让你 从下往上输出。

如果有多种情况,按照字典序从小往大输出。。。

就是这个多种情况是怎么产生的呢。

下面给一组样例。



很明显 A在最底下且A在Z下,Y和这个连通块 没有相交。

答案是:

AYZ

AZY

YAZ

所以题目的意思是让你输出可能的方案。 并不管它是在第几层上。

前几次WA的原因:没有考虑多种情况

后几次WA的原因:把这个块分层以后按照层排好序以后next_permutation

现在看看真是被我自己蠢哭了、、、

最后附一个无解数据吧(把所有结果输出就会超时)

(但是测试数据里没有这样的数据):

15

18

AAABBBCCCDDDEEEFFF

A.AB.BC.CD.DE.EF.F

AAABBBCCCDDDEEEFFF

GGGHHHIIIJJJKKKLLL

G.GH.HI.IJ.JK.KL.L

GGGHHHIIIJJJKKKLLL

MMMNNNOOOPPPQQQRRR

M.MN.NO.OP.PQ.QR.R

MMMNNNOOOPPPQQQRRR

SSSTTTUUUVVVWWWXXX

S.ST.TU.UV.VW.WX.X

SSSTTTUUUVVVWWWXXX

YYYZZZ…………

Y.YZ.Z…………

YYYZZZ…………

// by SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
#define mem(ARRAY,NUM) memset(ARRAY,NUM,sizeof(ARRAY))
using namespace std;
int n,m,tot,N;
char a[30][30],s[30],lm[30],lx[30],rm[30],rx[30],in[30],v[999];
int first[30],next[999];
bool vis[30],map[30][30],VIS[30];
void add(char x,char y){v[tot]=y;next[tot]=first[x];first[x]=tot++;}
void dfs(int t){
if(t==N+1){
for(char i=1;i<=N;i++)printf("%c",s[i]+'A');putchar('\n');
}
for(char i=0;i<26;i++)
if(!in[i]&&vis[i]&&!VIS[i]){
VIS[i]=1,s[t]=i;
for(char j=first[i];~j;j=next[j])in[v[j]]--;
dfs(t+1);
for(char j=first[i];~j;j=next[j])in[v[j]]++;
VIS[i]=0;
}
}
int main(){
while(~scanf("%d%d",&n,&m)){
mem(lm,0x3f);mem(rm,0x3f);mem(first,-1);tot=N=0;
mem(lx,0);mem(rx,0),mem(map,0);mem(vis,0);mem(in,0);
for(char i=1;i<=n;i++)
for(char j=0;j<=m;j++){
scanf("%c",&a[i][j]);
if(a[i][j]!='.'&&a[i][j]!='\n'){
a[i][j]-='A';
if(!vis[a[i][j]])vis[a[i][j]]=1,N++;
lm[a[i][j]]=min(lm[a[i][j]],j);
rm[a[i][j]]=min(rm[a[i][j]],i);
lx[a[i][j]]=max(lx[a[i][j]],j);
rx[a[i][j]]=max(rx[a[i][j]],i);
}
}
for(char i=0;i<26;i++)
if(vis[i]){
for(char j=lm[i];j<=lx[i];j++){
if(a[rm[i]][j]!=i&&!map[a[rm[i]][j]][i])map[a[rm[i]][j]][i]=1;
if(a[rx[i]][j]!=i&&!map[a[rx[i]][j]][i])map[a[rx[i]][j]][i]=1;
}
for(char j=rm[i];j<=rx[i];j++){
if(a[j][lm[i]]!=i&&!map[a[j][lm[i]]][i])map[a[j][lm[i]]][i]=1;
if(a[j][lx[i]]!=i&&!map[a[j][lx[i]]][i])map[a[j][lx[i]]][i]=1;
}
}
for(char i=0;i<26;i++)
for(char j=0;j<26;j++)
if(map[i][j])add(j,i),in[i]++;
dfs(1);
}
}

成功WA了一屏,,,,,,

POJ 1128 Frame Stacking 拓扑排序+暴搜的更多相关文章

  1. POJ 1128 Frame Stacking (拓扑排序)

    题目链接 Description Consider the following 5 picture frames placed on an 9 x 8 array. ........ ........ ...

  2. POJ 1128 Frame Stacking(拓扑排序&#183;打印字典序)

    题意  给你一些矩形框堆叠后的鸟瞰图  推断这些矩形框的堆叠顺序  每一个矩形框满足每边都至少有一个点可见  输入保证至少有一个解 按字典序输出全部可行解 和上一题有点像  仅仅是这个要打印全部的可行 ...

  3. Frame Stacking 拓扑排序 图论

    Description Consider the following 5 picture frames placed on an 9 x 8 array. ........ ........ .... ...

  4. POJ 2367 (裸拓扑排序)

    http://poj.org/problem?id=2367 题意:给你n个数,从第一个数到第n个数,每一行的数字代表排在这个行数的后面的数字,直到0. 这是一个特别裸的拓扑排序的一个题目,拓扑排序我 ...

  5. poj 3687 Labeling Balls(拓扑排序)

    题目:http://poj.org/problem?id=3687题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小.(先保证1号球最轻 ...

  6. [ACM] POJ 3687 Labeling Balls (拓扑排序,反向生成端)

    Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10161   Accepted: 2810 D ...

  7. poj 2762(强连通分量+拓扑排序)

    题目链接:http://poj.org/problem?id=2762 题意:给出一个有向图,判断任意的两个顶点(u,v)能否从u到达v,或v到达u,即单连通,输出Yes或No. 分析:对于同一个强连 ...

  8. POJ 2585.Window Pains 拓扑排序

    Window Pains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1888   Accepted: 944 Descr ...

  9. POJ 1270 Following Orders 拓扑排序

    http://poj.org/problem?id=1270 题目大意: 给你一串序列,然后再给你他们部分的大小,要求你输出他们从小到大的所有排列. 如a b f g 然后 a<b ,b< ...

随机推荐

  1. innerHTML的用法

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  2. python tips:类的动态绑定

    使用实例引用类的属性时,会发生动态绑定.即python会在实例每次引用类属性时,将对应的类属性绑定到实例上. 动态绑定的例子: class A: def test1(self): print(&quo ...

  3. PHP SPL 文件处理(SplFileInfo和SplFileObject)

    SplFileInfo用来获取文件详细信息.SplFileObject遍历.查找指定行.写入csv文件等内容 SplFileInfo用来获取文件详细信息: $file = new SplFileInf ...

  4. Bash中文速查表

    最好用的中文速查表(Cheatsheet) 来源:https://github.com/skywind3000/awesome-cheatsheets 感谢网友们的贡献! ############## ...

  5. 【BZOJ3451】Tyvj1953 Normal - 点分治+FFT

    题目来源:NOI2019模拟测试赛(七) 非原题面,题意有略微区别 题意: 吐槽: 心态崩了. 好不容易场上想出一题正解,写了三个小时结果写了个假的点分治,卡成$O(n^2)$ 我退役吧. 题解: 原 ...

  6. IOS与h5交互记录

    博主之前做过移动端app嵌入网页,与Android和IOS有交互,一直没有时间分享过程.这里不多说Android交互啦-很简单,详细了解IOS与h5的交互吧. IOS不同语法和h5的交互所建立的JSB ...

  7. POJ3984-迷宫问题【BFS】

    定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, ...

  8. 解决SpringBoot+JPA中使用set方法时自动更新数据库问题

    项目进行了三分之二了,突然出现一个很诡异的bug,数据库存储的用户表中密码信息总是自动消失一部分,头疼了几天后突然想起同事有个对低权限用户查询的用户信息向前台传送时会把密码设成null后再传输,心想是 ...

  9. linux基础正则

    1.^word #匹配word开头的内容,vi/vim编辑器里^代表一行的开头. 2.word$ #匹配以word结尾的内容,vi/vim编辑器里$代表一行的结尾. 3.^$ #表示空行 4.. #代 ...

  10. Python设计模式--单例模式(懒汉式)

    1. 单例模式 --> 单一(唯一)的实例. 在整个运行时间内, 内存中只有一个对象, 一般该对象涉及网络,资源等操作. 2. 单例模式一般分为懒汉式和饿汉式 懒汉式内存占用更加合理. 3. 调 ...