传送门 名字起得很高端实际上很简单的算法hhh 启发式合并 简单讲就是一些合并一堆队列的题可以用启发式合并,或者说这是一个思想。每次把小的合并到大的部分,均摊复杂度$O(MlogN)$。 ...
分类:
其他好文 时间:
2016-10-25 14:33:35
阅读次数:
170
bzoj1483 题意: N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色。 题解: 给每个颜色建一个链表。先预处理出答案,然后每次修改颜色时将两个链表合并,同时将修改后颜色对答案的贡献重新计算(如果两个节点的位置相差大于1说明中间有一段颜色, ...
分类:
其他好文 时间:
2016-07-09 23:48:43
阅读次数:
588
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std; 6 #define maxn 1000005 7 int n,m,ans,fa[m ...
分类:
其他好文 时间:
2016-06-26 12:43:44
阅读次数:
168
启发式合并。 启发式合并就是每次将小的合并进大的里面。每次合并复杂度为O(n),因为每回大小都会翻倍,所以总复杂度就是O(nlogn)。 首先用链表维护每一种颜色。 询问直接输出答案。 否则合并(要记住,如果俩个其中一个是空的,直接特判,否则会浪费时间导致tle)。 #include #includ... ...
分类:
其他好文 时间:
2016-05-28 20:34:53
阅读次数:
176
启发式合并链表。。 我写的是链式邻接表那种写法= = 记录下每个节点上的颜色,颜色相同的就塞进同一个链表,每次合并两个链表的时候,就遍历其中一个,如果某节点两边颜色和另一个链表的相同就减一下答案。 然后每次如果遍历节点数少的那个链表时间复杂度就是O(nlogn)的了。。 但因为节点数少的那种颜色不一
分类:
其他好文 时间:
2016-03-21 14:07:26
阅读次数:
210
DescriptionN个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色.Input第一行给出N,M表示布丁的个数和好友的操作次数. 第二行N个数A1,A2...An表示第i个布丁的颜色从第三...
分类:
其他好文 时间:
2015-05-28 13:50:03
阅读次数:
120
DescriptionN个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色.Input第一行给出N,M表示布丁的个数和好友的操作次数. 第二行N个数A1,A2...An表示第i个布丁的颜色从第三...
分类:
其他好文 时间:
2015-03-12 20:48:24
阅读次数:
125
题目大意:给定n个布丁,每个布丁有一个颜色,多次将某种颜色的所有布丁变为另一种颜色,多次询问颜色段数
数据范围:n
链表的启发式合并0.0 一直没写明白 其实就是开个链表记录每种颜色的位置,合并时撸一遍短的链看看两边是不是长链的颜色就行
不过交换比较麻烦0.0 要开个数组记录每个数字代表的真实颜色 交换时把数组的这两个位置也交换下就可以了
注意用过的垃圾不要留在原位 size合并掉就清零 ...
分类:
其他好文 时间:
2014-10-24 14:40:30
阅读次数:
146
1483: [HNOI2009]梦幻布丁Time Limit:10 SecMemory Limit:64 MBSubmit:1076Solved:452[Submit][Status]DescriptionN个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有...
分类:
其他好文 时间:
2014-08-07 22:59:55
阅读次数:
297