BZOJ4267 : 小强的颜色
首先剔除$1$号心情不能到达的无用心情,然后采用分割法进行DFA的最小化。
每次遍历所有集合,将集合中和集合中第一个心情行为或者转移所在集合不同的心情放入新集合中。
最后按字典序依次给每个集合编号即可。
因为最多$O(N)$次分离,每次遍历时间复杂度为$O(NP)$。
故总时间复杂度为$O(N^2P)$。
#include<cstdio>
const int N=1010;
int p,m,n,i,j,k,x,a[N][30],cnt,len[N],g[N][N],pos[N],id[N],q[N],all;bool vis[N],flag;
inline bool equal(int x,int y){
if(a[x][0]!=a[y][0])return 0;
for(int i=1;i<=p;i++)if(pos[a[x][i]]!=pos[a[y][i]])return 0;
return 1;
}
void dfs(int x){
if(vis[x])return;
vis[x]=1;
g[1][++len[1]]=x;
for(int i=1;i<=p;i++)dfs(a[x][i]);
}
int main(){
scanf("%d%d%d",&p,&m,&n);
for(i=1;i<=n;i++)for(j=1;j<=p;j++)scanf("%d",&a[i][j]);
for(i=1;i<=n;i++)scanf("%d",&a[i][0]);
dfs(cnt=1);
while(1){
flag=0;
for(i=1;i<=cnt;i++)for(j=1;j<=len[i];j++)pos[g[i][j]]=i;
for(i=1;i<=cnt;i++)if(len[i]>1){
for(j=2;j<=len[i];j++)if(!equal(g[i][1],g[i][j]))break;
if(j>len[i])continue;
cnt++,k=1;
for(j=2;j<=len[i];j++)if(!equal(g[i][1],g[i][j]))g[cnt][++len[cnt]]=g[i][j];
else g[i][++k]=g[i][j];
len[i]=k;
flag=1;
break;
}
if(!flag)break;
}
printf("%d\n",cnt);
id[1]=q[1]=all=1;
for(i=1;i<=cnt;i++){
x=g[q[i]][1];
for(j=1;j<=p;j++){
k=pos[a[x][j]];
if(!id[k])q[id[k]=++all]=k;
printf("%d%c",id[k],j<p?' ':'\n');
}
}
for(i=1;i<=cnt;i++)printf("%d%c",a[g[q[i]][1]][0],i<cnt?' ':'\n');
return 0;
}
BZOJ4267 : 小强的颜色的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- ie6背景透明的设置方法 ie6背景颜色透明和png图像透明解决方法
IE6浏览器,让我们又爱又恨.爱它的是,可以让我们写的代码的时候,可以更标准,恨的是,它有太多无厘头的IE6常见bug(详情点击),让我们焦头烂额.现在现在用百度浏览器调查,国内占有率不到6%了,但是 ...
- 小强学渲染之OpenGL渲染管线详析
什么是OpenGL? OpenGL是一套图形硬件的软件API接口库,它直接和GPU交互,将3D场景渲染绘制到2D屏幕上.总结说,OpenGL的功能是将程序中定义的各种2D或3D模型绘制到帧缓存中,或者 ...
- 小强学渲染之OpenGL的CPU管线
读到这里,应该对OpenGL渲染管线有了初步简单了解.下面着重分析CPU管线,即逻辑控制中心做了什么,这部分还是容易理解的.如下图: 一,将数据加载到显存中. 这是由GPU是访问显存中的数据决定的.因 ...
- 用神奇的currentColor制作简洁的颜色动画效果
先上一个兼容性总结图:老版本ie可以直接用复杂方法了,套用某表情包的话: 2016年了,做前端你还考虑兼容IE6?你这简直是自暴自弃! 好了,知道了兼容性,我们可以放心的使用了. 在CSS3中扩展了 ...
- HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置
在做搜索框的时候无意间发现html5的input里有个placeholder属性能轻松实现提示文字点击消失功能,之前还傻傻的在用js来实现类似功能... 示例 <form action=&quo ...
- 深入理解CSS六种颜色模式
前面的话 赏心悦目的颜色搭配让人感到舒服,修改元素颜色的功能让人趋之若鹜.但颜色规划不当,会让网站用户无所适从.颜色从<font color="">发展至今,保留了很多 ...
- EasyPR--开发详解(5)颜色定位与偏斜扭转
本篇文章介绍EasyPR里新的定位功能:颜色定位与偏斜扭正.希望这篇文档可以帮助开发者与使用者更好的理解EasyPR的设计思想. 让我们先看一下示例图片,这幅图片中的车牌通过颜色的定位法进行定位并从偏 ...
- 为革命保护视力 --- 给 Visual Studio 换颜色
“为革命,保护视力,预防近视,眼保健操开始......” 这个应该是最老版本的眼保健操了,你听过? 一堆废话 且不说上面这个眼保健操到底有木有用,让眼睛放松下还是很有必要的,尤其是现在天天对着不是手机 ...
随机推荐
- Python内置模块之random
random的方法有 random.random # 返回一个随机的小数 ramdom.uniform # 按照一个区间返回一个小数 random.randint # 返回一个整数 random.ra ...
- linux:安装Memcache并使用
1.Linux安装Memcache : curl -O http://memcached.org/files/memcached-1.5.4.tar.gz 解压 2.启动Memcache: memca ...
- urls.py路由系统分发的本质
路由系统分发的本质 反向生成redirect跳转url 1.在urls.py中指定url的name from django.conf.urls import url from django.contr ...
- python-中缀转换后缀并计算
这个好像比较简单. 前缀规则好像还没有理清楚. # coding = utf-8 class Stack: def __init__(self): self.items = [] # 是否为空 def ...
- Redis监控和告警
https://blog.csdn.net/isoleo/article/details/52981140
- 用webstorm搭建vue项目
本文只针对新手. 首先要明白几个名词(概念). Node.js: Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 ...
- C#操作windows服务
本文主要说明了Windows服务的安装.卸载.启动.停止.获取服务安装路径.获取服务状态.检查服务是否存在.获取服务版本. 我们需要引用命名空间using System.Configuration.I ...
- NEST 之旅 · 开启
NEST 之旅 · 开启 Version:5.x 英文原文地址:Getting started 说实话,这篇文章翻译的很糟糕.但是我的能力有限,目前只有这个水平,还望各位多指导. NEST 是 Ela ...
- python 进阶读书笔记1 -- 理解python一切皆对象
理解python一切皆对象: 1.所有的类都是由type创建的 2.所有的类的基类都是object 3.type是类,也是实例,type的基类是object,type对象是由type创建的 4.obj ...
- 12px以下字体显示问题
刚接到广告公司出的设计稿,里面很多内容均是12px以下得字体,现在来总结一下解决办法,方便以后使用 1.使用png图片 但是会影响页面响应速度 2.使用transform: scale(0.x); 注 ...