
莫队
文章平均质量分 59
niiick
OIer/ACMer
展开
-
洛谷P3939 数颜色【主席树 or 莫队】
题目简述 小 C 把她标号从1到n的n只兔子排成长长的一排,来给他们喂胡萝卜吃。 第 i 只兔子的颜色是 a_i 小 C 想知道在区间 [l_j,r_j] 里有多少只颜色为 c_j的兔子。 有时编号为 x_j 和 x_j+1的两只兔子会交换位置 输入格式 输入第 1 行两个正整数 n,m。 输入第 2 行 n 个正整数,第 i 个数表示第 i 只兔子的颜色 a_i 输入接下来 m 行,每行为以下两种中的一种: “1 lj rj cj“1\ l_j\ r_j\ c_j“1&nbs原创 2021-09-29 15:36:31 · 333 阅读 · 0 评论 -
洛谷P4396 [AHOI2013]作业 && P4867 Gty的二逼妹子序列【莫队+树状数组/分块】
时空限制 1000ms-3000ms / 128MB 题目描述 此时己是凌晨两点,刚刚做了Codeforces的小A掏出了英语试卷。英语作业其实不算多,一个小时刚好可以做完。然后是一个小时可以做完的数学作业,接下来是分别都是一个小时可以做完的化学,物理,语文…小A压力巨大。 这是小A碰见了一道非常恶心的数学题,给定了一个长度为n的数列和若干个询问,每个询问是关于数列的区间表示数列的第l个数到第r个...原创 2019-03-20 11:24:46 · 205 阅读 · 0 评论 -
洛谷P3674 小清新人渣的本愿【莫队+bitset】
时空限制 3000ms / 128MB 题目描述 这个题是这样的: 给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1,2,3 选出的这两个数可以是同一个位置的数 输入格式: 第一行两个数n,m 后面一行n个数表示ai 后面m行每行四个数op...原创 2019-03-01 20:53:51 · 137 阅读 · 0 评论 -
BZOJ3289 Mato的文件管理【莫队+树状数组】
Time Limit: 40 Sec Memory Limit: 128 MB Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号 。为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访问。Mato每天随机选一个区间[l,r ],他今天就看编号在此区间内的这些资料。Mato有一个习惯,他总是从文件大小...原创 2018-10-02 10:38:45 · 191 阅读 · 0 评论 -
洛谷4462 || BZOJ5301 [Cqoi2018]异或序列【莫队】
Time Limit: 10 Sec Memory Limit: 512 MB Description 已知一个长度为 n 的整数数列 a[1],a[2],…,a[n] ,给定查询参数 l、r ,问在 [l,r] 区间内,有多少连续子序列满足异或和等于 k 。 也就是说,对于所有的 x,y (l≤x≤y≤r),能够满足a[x]^a[x+1]^…^a[y]=k的x,y有多少组。 Inp...原创 2018-05-16 18:18:56 · 246 阅读 · 0 评论 -
BZOJ 2038 [2009国家集训队]小Z的袜子【莫队】
Time Limit: 20 Sec Memory Limit: 259 MB Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左...原创 2018-05-16 14:06:45 · 136 阅读 · 0 评论 -
洛谷P2709 小B的询问【莫队】
时空限制 1000ms / 128MB 题目描述 小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数。小B请你帮助他回答询问。 输入格式: 第一行,三个整数N、M、K。 第二行,N个整数,表示小B的序列。 接下来的M行,每行两个整数L、R...原创 2018-05-16 13:55:10 · 225 阅读 · 0 评论 -
莫队算法及各种莫队扩展
了解莫队之前先看一下这样一个问题 Q:有一个长为N序列,有M个询问:在区间[L,R]内,出现了多少个不同的数字。(数字范围为0到1000000之间的整数),N ≤ 50000,M ≤ 200000。 对于这个问题不难想到一个简单的暴力 int L=1,R=0; void add(int x) { cnt[x]++; if(cnt[x]==1) sum++; } void d...原创 2018-05-15 18:59:56 · 503 阅读 · 0 评论