设$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. C#线性表

    线性表是线性结构的抽象 线性结构的特点是结构中的数据元素之间存在一对一的线性关系 一对一的关系指的是数据元素之间的位置关系 (1)除第一个位置的数据元素外,其它数据元素位置的前面都只有一个数据元素 ( ...

  2. SqlServer 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

    CREATE TABLE [dbo].[Order]( [ID] [int] IDENTITY(1,1) NOT NULL, [UserId] [int] NOT NULL, [TotalPrice] ...

  3. iptables命令

    iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分.可以直接配置,也可以通过许多前端和图形界面配置. 语法 iptables(选项)(参数) 选项 -t<表&g ...

  4. debian 下deb包的制作

    http://page.renren.com/601230663/note/817856769?op=next&curTime=1333642042000

  5. 清北合肥day2-day5

    day2:215这一天的题目相对比较模板化t1:50看错了数据范围求n个点到给出的点哈夫曼距离的最小值我想到的是一种非常zz的做法我们二分答案,然后判断是否在这个距离内有点但是这样前缀和不是很好维护于 ...

  6. Python_set集合部分功能介绍

    set:无序集合,不能出现重复的元素 set的创建:s1=set() #访问速度快 #解决重复问题 x.add():添加一个新的元素,添加的重复的元素自动过滤掉 x.clear():清空集合 x.di ...

  7. 伪分布式hadoop1.1.2和hbase0.94.11配置

    Hadoop 1.1.2 和Hbase 0.94.11版本配置 测试时ip  172.19.32.128 这个版本需要把/etc/hosts的aa-vm改成127.0.0.1,也就是和localhos ...

  8. ansible Invetory(管理主机信息)

    1. 定义组机和组 inventory文件可以是许多格式之一,具体取决于您拥有的inventory插件. 对于这个例子, /etc/ansible/hosts的格式是一个INI(类似于Ansible的 ...

  9. {}动态规划}记忆化dp

    先搞个模板 #include<stdio.h> #include<string.h> using namespace std; typedef long long ll; ]; ...

  10. spring开发需要的配置文件

    1,applicationContext-dao.xml <?xml version="1.0" encoding="UTF-8"?><bea ...