
莫队
make_it_for_good
这个作者很懒,什么都没留下…
展开
-
codeforces 700D 哈夫曼树 莫队
题意:给一个长度为n的数列a,q组询问,每组询问求将li到ri的区间中的数哈夫曼编码的长度。莫队,对于每一个询问处理该区间内出现次数为x的字符个数。 对于次数小于n√\sqrt{n} 的字符,从小到大枚举出现次数,对于一种出现次数x两两配对,在x∗2x*2 插入x的个数/2。 对于出现次数大于n√\sqrt{n} 的字符,用构建哈夫曼树的方法处理。时间复杂度O(nn√logn)O(n原创 2016-08-19 20:52:10 · 1023 阅读 · 0 评论 -
bzoj 2754 [SCOI2012]喵星球上的点名 后缀数组+莫队
先把所有串按顺序放到一起,两个串间加非法字符隔开,求一个后缀数组。然后对于询问,满足条件的子串在后缀数组上一定是连续一段区间。 这个区间的左右端点可以在读入的过程中二分求。然后这个问题变成了多组询问求一段区间内不同的数的个数。 莫队裸题。 慢着,每个元素的出现次数怎么求呀? 莫队时维护,设共有cnt个询问,那么第i个询问时一个元素的出现状态的改变会影响到cnt-i+1个询问中该元素的出现状态原创 2016-10-21 18:37:48 · 433 阅读 · 0 评论 -
bzoj 3207 花神的嘲讽计划Ⅰ hash 莫队
hash每个长度为k的串,莫队跑一遍就行了。#include <bits/stdc++.h>using namespace std;#define N 210000#define seed 23333333#define ull unsigned long longint n,m,K,sz,cnt;int a[N],ans[N],pos[N];ull has[N],pw[N],v[N]原创 2016-10-25 11:18:50 · 291 阅读 · 0 评论