题目描述

9102

年伊始,小a觉得山羊模拟器,乞丐模拟器之类的都太低级了,所以想自己建立一个征战天下的军团模拟器。
军团模拟器是在一个城市数为N的国家中运行的,每个城市都会通过一些道路和其他所有城市相连,道路总数为N−1。 开始时,每个城市中都会有一个军队,每个军队有着自己的编号。
定义军团为相邻的同种编号军队的最大联通块,有些时候某种编号的军队会改变自己的编号,小a想要知道这些时候整个国家有多少军团。 形式化的,我们会有Q次操作,每次操作为以下形式
一行两个正整数a,b表示所有编号为a的军队编号变成b

 

输入描述:

第一行两个整数N,Q
接下来一行N
个非负整数,表示初始时N
个城市上军队的编号是多少,如果为0
那么无军队。
接下来N−1
行每行两个正整数u,v
表示城市u
和城市v
之间有道路相连。
接下来Q
行,两个整数x,y
表示询问操作。

输出描述:

对于每次询问,输出一行一个整数,表示询问过后的军团数。
示例1

输入

5 2
1 1 3 2 2
1 2
1 3
2 4
2 5
3 2
2 1

输出

复制

4
1

说明

初始时共有四个军团,分别为{1,2}{3}{4}{5}
操作一使得3号节点的编号由3改为2,此时仍有四个军团
操作二使得4,5号节点的编号由2改为1,此时只有一个军团
示例2

输入

5 6
1 2 3 4 9
1 2
2 3
3 4
4 5
1 2
2 1
2 3
1 3
3 4
4 5

输出

4
4
4
3
2
2

备注:

保证1⩽N,Q,所有编号最大值⩽200000
 
保证输入数据合法
 
思路:启发式合并
暴力做法是存一下每一种颜色对应的节点,然后统计一下和它相邻的颜色不同的节点个数并减去,修改之后再统计一遍相邻的不同颜色的节点个数,再加上。
如果把节点很多的修改成很少的,这样还是会炸。
考虑启发式合并,把颜色少的并到多的上,再用一个数组映射一下该颜色对应的是什么颜色就行了
我不会复杂度分析。
题解原话:每个点的复杂度是他的度数乘以它被统计答案的次数,最差情况下每个点也只会被统计logN次答案,最终复杂度为O(

小a与军团模拟器的更多相关文章

  1. Windows Phone 8.1 Update1 支持中文“小娜”及开发者模拟器更新

    千呼万唤的 Windows Phone 8.1 Update1 在 developer Perview 发布了还没有升级的朋友随我先睹为快吧.升级了的朋友们来看看 WP8.1 update1 还有哪些 ...

  2. 微信小程序开发调试工具

    为了帮助开发者简单和高效地开发微信小程序,我们推出了全新的 开发者工具 ,集成了开发调试.代码编辑及程序发布等功能. 扫码登录 启动工具时,开发者需要使用已在后台绑定成功的微信号扫描二维码登录,后续所 ...

  3. 全栈开发工程师微信小程序-中(中)

    全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...

  4. HoloLens开发手记 - 使用HoloLens模拟器 Using HoloLens emulator

    首先下载HoloLens模拟器 HoloLens模拟器运行在没有真机的情况下在你的PC上测试应用,属于HoloLens开发工具系列.模拟器使用了Hyper-V虚拟机.通常通过传感器获取的人体和环境输入 ...

  5. 使用android模拟器开发程序

    自从android studio升级到3.0之后自带的模拟器已经很好用了,尤其是升级后可以想vmware那样休眠,再次开启就可以快速启动了 以下是几点可以更方便地使用系统模拟器进行开发的小技巧,毕竟模 ...

  6. 反编译获取线上任何微信小程序源码(转)

    看到人家上线的小程序的效果,纯靠推测,部分效果在绞尽脑汁后能做出大致的实现,但是有些细节,费劲全力都没能做出来.很想一窥源码?查看究竟?看看大厂的前端大神们是如何规避了小程序的各种奇葩的坑?那么赶紧来 ...

  7. 如何开启解决android studio的模拟器的问题

    来自:http://jingyan.baidu.com/article/03b2f78c0a19e75ea237ae24.html 有的时候因为电脑系统或者是安装的一些问题我们可能需要对症下药的解决模 ...

  8. 微信小程序(二)框架的基本组成

    安装好 微信web开发者工具后. 让我们来了解一下工具的框架,上图: 工具总共分为三个部分,左上角红框框: 模拟器:模拟手机小程序界面,模拟器左上角可以选择手机型号,右上角红框处,千万别选成Offic ...

  9. 解决android模拟器连接本机服务器”Connection refused”问题

      在本机用模拟器连接 localhost 的服务器不成功,经查询是我反了一个小错误. android 模拟器其本身的localhost就是它自己的ip,而如果我要连接本机的localhost则需要将 ...

随机推荐

  1. shoshana-摄影文集

    20190331 冬宫之油画 20190427 [遇见•梦露]画展 20190428 [三极探索之旅]公益摄影 20190504  赏美-第[000]期 20190505 赏美-第[001]期 201 ...

  2. PAT甲级1006水题飘过

    题目分析:由于不存在相同的两个时间(24:00:00和00:00:00不会同时存在),则我们假设两个全局变量存放到达的最早的时间和达到的最晚的时间,设置最早的初值为“23:59:59”,设置最晚的初值 ...

  3. 山峰和山谷 Ridges and Valleys

    题目描述 思路 一开始看这道题目,也不是很会,谁会把统计之类的问题和bfs联系在一起,没有开始的状态,没有结束的状态,题目中连一个最短之类的词也没有出现. 然后统计嘛,题目中说了方格高度都相同,就把周 ...

  4. go标准库I/O模型:epoll+多协程

    本文为linux环境下的总结,其他操作系统本质差别不大.本地文件I/O和网络I/O逻辑类似. epoll+多线程的模型 epoll+多线程模型和epoll 单进程区别.优点     对比于redis这 ...

  5. OracleVM桥接网卡无法获取本地连接网卡

    问题现象 VM虚拟机采用桥接网卡时,界面名称为"未指定",无法获取本地连接对应网卡信息: 处理方式: 进入本地连接,选择本地连接右键进入属性设置窗口; 选择安装,单击服务选项后点击 ...

  6. vue SPA设计 history hash

    <body> <h3>Histort api</h3> <a class="api a">a,html</a> < ...

  7. redis - redis安装与启动

    redis安装 下载redis安装包 wget http://download.redis.io/releases/redis-5.0.7.tar.gz 解压缩 tar -xzf redis-5.0. ...

  8. java之hibernate之hibernate缓存

    这篇主要讲 hibernate缓存 1.缓存的作用是为了提高效率 2.Hibernate的开发效率比较高,但是执行效率相对较低. 3.Hibernate提供了缓存来提高效率.hibernate缓存分为 ...

  9. C# vb .net图像合成-合成文字

    在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...

  10. shell 遍历目录下的所有文件

    dir=/usr/local/nginx/logs for file in $dir/*; do echo $file done //结果 ./test.sh /usr/local/nginx/log ...