随笔分类 - The way——莫队算法
摘要:闲谈: 最后一个星期还是不浪了,做一下模拟赛(还是有点小虚) #30.candy 题目: 有一个人想买糖吃,有两家商店A,B,A商店中第i个糖果的愉悦度为Ai,B商店中第i个糖果的愉悦度为Bi 给出n,W,表示每个商店都有n个糖果且两个商店的每个糖果的价格都是W 求出最大的min(Sa,Sb)-D*
阅读全文
摘要:【传送门:BZOJ5016】 简要题意: 给出n个数,q个询问,每个询问输入l1,r1,l2,r2,输出 其中表示l到r中x出现的次数 题解: 看这范围也是要离线的了,莫队搞一波 假设x已经确定
阅读全文
摘要:【传送门:BZOJ5301】 简要题意: 给出长度为n的序列,给出m个询问,并给出k,每个询问输入l,r 每个询问输出l到r的序列中的所有子串中的异或和为k的子串数量 题解: 莫队 异或,真是个神东西 首先异或和满足前缀,也就是说设sum[i]为a[1]^a[2]^...^a[i],那么a[i]^a
阅读全文
摘要:【传送门:BZOJ4540】 简要题意: 给出长度为n的序列,给出m个询问,每个询问输入l,r 每个询问输出l到r的序列中的所有子串中的最小值的和 题解: 莫队+RMQ+乱搞 太烦了,搞了三个小时,不想写题解了 orz 参考代码:
阅读全文
摘要:【传送门:BZOJ3339】 简要题意: 给出一个长度为n的数列,有m个询问,每个询问输入l,r,求出l到r之间没出现过的最小自然数 题解: 同BZOJ3585 参考代码:
阅读全文
摘要:【传送门:BZOJ3585】 简要题意: 给出一个长度为n的数列,有m个询问,每个询问输入l,r,求出l到r之间没出现过的最小自然数 题解: 莫队+权值分块 只要处理每一个权值块总共出现多少种数,每当找到一个权值块出现的种数不等于总共的种数,就直接在这个块里找哪个没出现过就行了 参考代码:
阅读全文
摘要:【传送门:BZOJ2453】 简要题意: 有n个数,有m种操作: 1.Q l r求出l到r中共有多少种不同的数 2.R x c将第x个数改为c 题解: 同BZOJ2120 参考代码:
阅读全文
摘要:【传送门:BZOJ2120】 简要题意: 有n个数,有m种操作: 1.Q l r求出l到r中共有多少种不同的数 2.R x c将第x个数改为c 题解: 带修莫队例题 具体请膜大米饼 参考代码:
阅读全文
摘要:【传送门:BZOJ4810】 简要题意: 给出n个数,给出m种询问: 1 l r x判断是否在区间l到r中能选出两个数的差为x 2 l r x判断是否在区间l到r中能选出两个数的和为x 3 l r x判断是否在区间l到r中能选出两个数的乘积为x 其中选出的两个数可以相等 题解: 肯定得离线 用莫队吧
阅读全文
摘要:【传送门:BZOJ3236】 简要题意: 给出一个n个数的序列,序列中的数范围为1到n,给出m个操作,每个操作输入l,r,a,b,输出l到r中权值为a到b的数的个数和l到r中权值为a到b的数的种类 题解: BZOJ3809的添加版,其实差不多 只是在BZOJ3809的做法上多加一个求个数和的数组就可
阅读全文
摘要:【传送门:BZOJ3809】 简要题意: 给出一个n个数的序列,序列中的数范围为1到n,给出m个操作,每个操作输入l,r,a,b,输出l到r中权值为a到b的数的种类 题解: 肯定不能在线求,离线就用莫队 一开始想法是用树状数组维护权值总类,结果T了 旁边的lxj大佬D了我,说:这道题卡了树状数组,因
阅读全文
摘要:【传送门:BZOJ3289】 简要题意: 给出n个数,有m个询问,每个询问输入l,r,求出l到r中的所有数通过与相邻数交换变为上升序列的交换次数 题解: 一开始想用在线算法做 想不出来就用离线了 就想到用莫队 然后对于操作的继承,发现: ①在一列数的后面添加一个数,逆序对数会增加数列中比它大的数的个
阅读全文
摘要:【传送门:BZOJ3781】 简要题意: 给出n个数a[i],有k种数,m个询问,每个询问输入l,r,输出,c[i]表示数字i在l到r中出现的次数 题解: 莫队(非常明显) 直接分块,设sum[i]为当前l到r之间数字为i出现的个数,对于处理l和r的位置,
阅读全文
摘要:【传送门:BZOJ2038】 简要题意: 给出n只袜子,每只袜子都有颜色 有多个询问,每次询问一个区间L,R,求出在这个区间内选出两只相同颜色袜子的概率,以最简分数形式输出(不用化成整数,如果概率为0,则输出0/1) 题解: 接触莫队第一题 我们先假设当前要询问的区间内第一种颜色的袜子有a只,第二种
阅读全文