
莫队
文章平均质量分 73
x_1023
这个作者很懒,什么都没留下…
展开
-
BZOJ 4129 Haruna’s Breakfast - 带修树上莫队+分块
感觉关于树的不管是啥都200+行。。。一口老血。。。 首先树上分个块(大概就是BZOJ1086王室联邦的套路,此处应有链接,可惜这道题还在坑里233),然后每次暴力移动点,尤其是关于lca的处理需要很注意(见下图): (假装有图) 然后这里需要求mex值。对于mex值暴力当然会TLE,于是需要分块。将n个数分成sqrt(n),查询时从头查看哪个块数未满,然后在块中暴力寻找数,原创 2017-09-03 20:44:25 · 209 阅读 · 0 评论 -
BZOJ 2120 数颜色 - 带修莫队/树状数组套主席树+平衡树
大概是一道带修莫队的裸题,然而还是WA了无数次,真是太弱了...... 千万要记得带修的话前驱和后驱都要记录 都要记录! 要记录! 记录! 录! ! #include #include #include #include #include #include using namespace std; const int maxn=10005; const int max原创 2017-08-31 20:42:28 · 581 阅读 · 0 评论 -
BZOJ 3289 Mato的文件管理 - 一般莫队+树状数组
很好想的一个思路是:一个以排列好的数组,在开头添加一个数,那么需要互换的次数恰等于此数在数列中应有的rank值;而在末尾则是数组长度减去rank值。而一个混乱的序列在上一状态已经使用res的次数排成有序数列,因此每次插入一个值只需要通过rank改变res即可。 rank即为数列中有多少数小于它,这里需要注意有多少数小于它可以利用树状数组。这种计数题利用树状数组的+1,-1表示状态的情况很常见。原创 2017-08-30 22:50:59 · 196 阅读 · 0 评论 -
BZOJ 3585 mex - 莫队+(分块/树状数组+二分/乱搞/主席树)
首先注意到大于n的数可以忽略,因其对答案绝无影响。 自己想出来了两种方法:1.分块大法好 就是把n分块,如果数添加之前不存在则把数填进去,块的计数++,统计时扫一遍块,找到第一个未填满的块,在其中找数 复杂度:O(qn√+qn√)O(q\sqrt{n}+q\sqrt{n}) (其实我也不太会算) 用时:13768ms#include<iostream> #include<cstdlib>原创 2017-09-26 00:06:10 · 308 阅读 · 0 评论 -
BZOJ 4397 Breed Counting - 前缀和/莫队
多水的一道题啊,枉费了我辛辛苦苦码的莫队。。。 目测线段树啥的都能搞,不过好蠢。。。 #include #include #include #include #include using namespace std; const int maxn=100005; int n,m; int pre[4][maxn]; int main() { scanf("%d%原创 2017-10-03 23:42:12 · 203 阅读 · 0 评论