bzoj2558
哈希+拓扑排序
题意比较绕,先开始没看懂就看了发程序,发现好像理解的不太一样,后来找到了一个题目解释。。。
摘自jcvb:其实就是说颜色相同且三个出口分别对应相同(注意有可能是合并后才相同)两个结点是相同的,可以合并,求最后合并完后剩下几个结点。
所以我们倒着计算一个房间是否和以前相同,因为有可能合并(这是看了题意才知道)导致两个房间变成一个,然后可一个到这个房间的房间的邻接表发生变化,导致其他房间可能相邻,又因为原先图就是拓扑的,前面不会影响后面,所以可以倒着合并。
#include<bits/stdc++.h>
using namespace std;
const int N = , seed = ;
int n, ans;
char key[N], t[N];
int id[N], Map[N][];
map<int, int> mp;
int main()
{
scanf("%d", &n);
ans = n;
for(int i = ; i < n; ++i)
{
scanf("%s", t);
key[i] = t[];
id[i] = i;
for(int j = ; j < ; ++j) scanf("%d", &Map[i][j]);
}
for(int i = n - ; i; --i)
{
int h = key[i];
for(int j = ; j < ; ++j) h = h * seed + id[Map[i][j]];
if(mp.find(h) != mp.end()) id[i] = mp[h], --ans;
else mp[h] = id[i];
}
printf("%d\n", ans);
return ;
}
bzoj2558的更多相关文章
- 【BZOJ2558】Count on a tree
又是因为傻逼错误浪费了半天时间 原题: 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个 ...
随机推荐
- 集训第五周动态规划 C题 编辑距离
Description Let x and y be two strings over some finite alphabet A. We would like to transform x int ...
- SSH配置—Linux下实现免密码登录
首先,假设我们有两台服务器,服务器名称分别是 master 和 slave1,我们现在需要做的就是在服务器 master 上面登录 服务器 slave1 不需要输入密码就可以登录成功,如下图所示. 下 ...
- Postman 安装与使用
本文是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 1. 官网安装(容易打开出错) 打开官网,https://www.getpostman.com 点击那个灰灰色的「Chro ...
- HDU 3749 Financial Crisis(点-双连通分量)
Because of the financial crisis, a large number of enterprises go bankrupt. In addition to this, oth ...
- Ubuntu 16.04修改显示字体大小(包括GNOME/Unity)
在Ubuntu中字体都基本偏大,且和分辨率无关. Unity: 安装Unity Tweak Tool sudo apt-get install unity-tweak-tool GNOME: 打开优化 ...
- mysql: reinit the password
You can reinit the password : 1.stop mysql /etc/init.d/mysql stop 2.start mysql safe : mysqld_safe - ...
- Symantec Backup Exec部署手册
转载 http://xiaxiaoguo.blog.51cto.com/858884/402810 Symantec Backup Exec部署手册 目录 1.Backup Exec 12.5安装. ...
- PowerDesinger15设置字体大小
使用PowerDesigner时,它默认table的字体大小颜色等很难看: 假设通过 Symbol ---> Format进行设置.仅仅能对选中的最改动,新建的Table无效. 能够通过例如以下 ...
- C#中Stack<T>类的使用及部分成员函数的源代码分析
Stack<T>类 Stack<T> 作为数组来实现. Stack<T> 的容量是 Stack<T> 能够包括的元素数. 当向 Stack<T&g ...
- C# VS如何整个项目中查找字符串
Ctrl+F打开查找对话框,然后输入查找字符串,电机右边的小三角,选择整个解决方案,就可以遍历所有文件查找指定字符了