设$f[i][j][k]$表示从房间$j$的第$k$扇门进去探索不超过$i$步的情况。

对于$0$步的情况,可以用每个房间的度数来表示。

否则可以绕着那个房间走一圈,将所有情况依次hash来表示。

最后对于每个房间求出$f$的最小表示,即可完成hash。

时间复杂度$O(n^4)$。

#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
typedef unsigned long long ll;
const int N=105;
int n,m,i,j,k,t,o,x,d[N],a[N][N],b[N][N],q[N];ll f[2][N][N];
vector<ll>g[N];vector<int>ans[N];
inline bool cmp(int x,int y){return g[x]==g[y]?x<y:g[x]<g[y];}
int main(){
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&d[i]);
for(j=1;j<=d[i];j++)scanf("%d",&a[i][j]),b[i][a[i][j]]=j;
}
for(i=1;i<=n;i++)for(j=1;j<=d[i];j++)f[0][i][j]=d[i]+1;
for(i=1;i<=n;i++){
o^=1;
for(j=1;j<=n;j++)for(k=1;k<=d[j];k++){
f[o][j][k]=f[o^1][j][k]*10007+13331;
x=a[j][k];
for(t=b[x][j];t<=d[x];t++)f[o][j][k]=f[o][j][k]*233+f[o^1][x][t];
for(t=1;t<b[x][j];t++)f[o][j][k]=f[o][j][k]*233+f[o^1][x][t];
}
}
for(i=1;i<=n;i++){
for(j=1;j<=d[i];j++)g[i].push_back(f[o][i][j]);
for(j=2;j<=d[i];j++){
vector<ll>h;
for(k=j;k<=d[i];k++)h.push_back(f[o][i][k]);
for(k=1;k<j;k++)h.push_back(f[o][i][k]);
g[i]=max(g[i],h);
}
g[i].push_back(d[i]);
q[i]=i;
}
sort(q+1,q+n+1,cmp);
for(i=1;i<=n;i=j){
for(j=i;j<=n&&g[q[i]]==g[q[j]];j++);
if(i+1==j)continue;
for(m++,k=i;k<j;k++)ans[m].push_back(q[k]);
}
if(!m)puts("none");
else{
sort(ans+1,ans+m+1);
for(i=1;i<=m;i++){
printf("%d",ans[i][0]);
for(j=1;j<ans[i].size();j++)printf(" %d",ans[i][j]);
puts("");
}
}
return 0;
}

  

BZOJ4076 : [Wf2014]Maze Reduction的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. Backtracking algorithm: rat in maze

    Sept. 10, 2015 Study again the back tracking algorithm using recursive solution, rat in maze, a clas ...

  3. Lattice Reduction (LLL) 算法C代码实现

    废话不多说,大名鼎鼎的Lenstra-Lenstra-Lovasz(LLL) 算法.实现参考论文:Factoring Polynomials with Rational Coefficients, 作 ...

  4. (期望)A Dangerous Maze(Light OJ 1027)

    http://www.lightoj.com/volume_showproblem.php?problem=1027 You are in a maze; seeing n doors in fron ...

  5. Stanford机器学习笔记-10. 降维(Dimensionality Reduction)

    10. Dimensionality Reduction Content  10. Dimensionality Reduction 10.1 Motivation 10.1.1 Motivation ...

  6. CUDA中并行规约(Parallel Reduction)的优化

    转自: http://hackecho.com/2013/04/cuda-parallel-reduction/ Parallel Reduction是NVIDIA-CUDA自带的例子,也几乎是所有C ...

  7. 1204. Maze Traversal

    1204.   Maze Traversal A common problem in artificial intelligence is negotiation of a maze. A maze ...

  8. uva705--slash maze

    /*这道题我原本是将斜线迷宫扩大为原来的两倍,但是在这种情况下对于在斜的方向上的搜索会变的较容易出错,所以参考了别人的思路后将迷宫扩展为原来的3倍,这样就变成一般的迷宫问题了*/ #include&q ...

  9. HDU 4048 Zhuge Liang's Stone Sentinel Maze

    Zhuge Liang's Stone Sentinel Maze Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/327 ...

随机推荐

  1. 目标检测中的mAP

    一.IOU的概念 交集和并集的比例(所谓的交集和并集,都是预测框和实际框的集合关系).如图: 二.Precision(准确率)和Recall(召回率)的概念 对于二分类问题,可将样例根据其真实类别和预 ...

  2. zookeeper都有哪些使用场景

    分布式协调 这个其实是zk很经典的一个用法,比如,A系统发送个请求到mq,然后B拿到消息消费之后处理了.那A系统如何知道B系统的处理结果? 用zk就可以实现分布式系统之间的协调工作.A系统发送请求之后 ...

  3. 一脸懵逼学习Hive的使用以及常用语法(Hive语法即Hql语法)

    Hive官网(HQL)语法手册(英文版):https://cwiki.apache.org/confluence/display/Hive/LanguageManual Hive的数据存储 1.Hiv ...

  4. .net remoting(1)简单例子

    1.例子(程序间的通讯) class Program { static void Main(string[] args) { HttpChannel _channel = ); ChannelServ ...

  5. csv导入数据到mongodb3.2

    mongoimport.exe -d paper -c paper K:\paper.csv --type csv -f id,name 数据库名 表名      文件所在位置      文件类型   ...

  6. HTML5漫谈(7)——如何保护HTML5应用代码

    独家供稿:移动Labs HTML5应用采用的仍然是Javascript(JS).HTML.CSS 等Web语言,因而其代码保护就是这些Web代码的保护,而HTML5应用主要功能一般采用JS实现,因此J ...

  7. MaterialEditText——Android Material Design EditText控件

    MaterialEditText是Android Material Design EditText控件.可以定制浮动标签.主要颜色.默认的错误颜色等. 随着 Material Design 的到来, ...

  8. keepalived当主节点切换时脚本通知 lvs

    脚本 在keepalived.conf中添加 mail  查看邮件 实验dr实验模型 给director 做主从 4台服务器 rip:192.168.0.103 rip2:192.168.0.104 ...

  9. Loadbalancer

    LoadBalancer 可以将来自客户端的请求分发到不同的服务器,通过将一系列的请求转发到不同的服务器可以提高服务器的性能,并可以自动地寻找最优的服务器转发请求,这样不仅提高了系统性能,同时达到了负 ...

  10. UOJ#33. 【UR #2】树上GCD 点分治 莫比乌斯反演

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ33.html 题解 首先我们把问题转化成处理一个数组 ans ,其中 ans[i] 表示 d(u,a) 和 ...