洛谷:P5072 [Ynoi2015]盼君勿忘】的更多相关文章

原题地址:https://www.luogu.org/problem/P5072 题目简述 给定一个序列,每次查询一个区间[l,r]中所有子序列分别去重后的和mod p 思路 我们考虑每个数的贡献.即该区间内含有这个数的子序列个数.用补集转化为不含这个数的子序列个数. 那么,假设这个数在[l,r]内出现了kk次,则一共有2^(r-l+1)-2^(r-l+1-k)个子序列包含这个数. 本题可以离线,因此选择使用莫队,过程中维护cnt[k]表示区间内恰好出现k次的数字个数,维护sum[j]表示区间内…
传送门 辣鸡卡常题目浪费我一下午-- 思路 显然是一道莫队. 假设区间长度为\(len\),\(x\)的出现次数为\(k\),那么\(x\)的贡献就是\(x(2^{len-k}(2^k-1))\),即\(x2^{len}-x2^{len-k}\). 发现前面那东西很好维护,后面怎么办呢? 考虑把出现次数相同的数放在一起维护:维护每个出现次数里面数的和,统计答案的时候暴力统计. 为什么对呢?因为\(1+2+\dots+\sqrt{n}=n\),所以最多只有\(\sqrt n\)种次数,暴力即可.…
众所周知lxl是个毒瘤,Ynoi道道都是神仙题,题面好评 原题传送门 一看这题没有修改操作就知道这是莫队题 我博客里对莫队的简单介绍 既然是莫队,我们就要考虑每多一个数或少一个数对答案的贡献是什么 假设一个数x在区间[l,r]之间出现了y次,珂以很容易的求出该区间的长度length=r-l+1,那么包含x的区间有\(2^{length-y}*(2^y-1)\),\(2^{length-y}\)表示除了这x个相同的数,其他的数取与不取的情况数,\(2^y-1\)表示这x个数取与不取的情况数减掉一个…
传送门 一开始理解错题意了--还以为是两个子序列相同的话只算一次--结果是子序列里相同的元素只算一次-- 对于一个区间\([l,r]\),设其中\(x\)出现了\(k\)次,那么它的贡献就是它的权值乘上包含它的序列个数,即\(2^{r-l+1}-2^{r-l+1-k}\),总的序列个数减去不包含它的序列个数.因为\(x\)和\(k\)无关,所以只要统计出现次数为\(k\)的所有\(x\)的总和即可 不同的\(k\)最多只有\(\sqrt n\)个,于是用个邻接表之类的东西维护一下,然后每次询问就…
题意 给定一个长度为 \(n\) 的序列 \(a\) 和 \(m\) 次询问,第 \(i\) 次询问需要求出 \([l_i,r_i]\) 内所有子序列去重之后的和,对 \(p_i\) 取模. \(\texttt{Data Range:}1\leq n,m,a_i\leq 10^5,1\leq p_i\leq 10^9\) 题解 人生第一道 Ynoi,写篇题解祭之. 我们与其考虑某个子序列包含了哪些值,还不如看某个值能贡献到多少个子序列. 然而正着做不好做,因为一个子序列中某个值可能出现多次,所以…
题目大意: 给定一个序列,每次查询一个区间\([l,r]\)中所有子序列分别去重后的和\(\bmod p\)(每次询问模数不同). 解题思路: 在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到未来,此时此刻的光辉,盼君勿忘.————世界上最幸福的女孩 珂朵莉,要永远幸福哦. --- 我们考虑每个数的贡献.即该区间内含有这个数的子序列个数.用补集转化为不含这个数的子序列个数.…
点此看题面 大致题意: 一个序列,每次询问一个区间\([l,r]\)并给出一个模数\(p\),求模\(p\)意义下区间\([l,r]\)内所有子序列去重后值的和. 题意转化 原来的题意看起来似乎很棘手,因此需要一定的转化. 考虑一个值\(x\)的贡献,设它在区间中出现的次数为\(cnt_x\),则共有\(2^{r-l+1}-2^{r-l+1-cnt_x}\)个子序列中有这个值,因此它的贡献就是\(x\cdot (2^{r-l+1}-2^{r-l+1-cnt_x})\). 经这么一转化,不难发现,…
题目描述:对于一个长度为\(n\)的序列,\(m\)次询问\(l,r,p\),计算\([l,r]\)的所有子序列的不同数之和\(\mathrm{mod} \ p\). 数据范围:\(n,m,a_i\leq 10^5,p\leq 10^9\) 来做做Ynoi中相对简单的题目... 首先我们考虑每个数的贡献,如果它出现了\(k\)次,那么会在\(2^{r-l+1}-2^{r-l+1-k}\)个子序列中出现.所以维护\(s[k]\)表示所有出现\(k\)次的数之和,而且\(s[k]\)中不为0的只有\…
洛谷题目传送门 一血祭 向dllxl致敬! 算是YNOI中比较清新的吧,毕竟代码只有1.25k. 首先我们对着题意模拟,寻找一些思路. 每次选了一个最大的数后,它和它周围两个数都要减一.这样无论如何,我们都选不到旁边那两个数,只有第一次选的那个数会对答案产生它的大小的贡献. 于是就可以写出一个\(O(nm\log n)\)的暴力用来对拍了 #include<bits/stdc++.h> #define LL long long #define R register int #define G…
洛谷题面传送门 一道其实算得上常规的题,写这篇题解是为了总结一些数论中轻微(?)优化复杂度的技巧. 首先感性理解可以发现该问题强于区间数颜色问题,无法用常用的 log 数据结构维护,因此考虑分块/莫队.显然这题莫队比较好些对吧?显然我们要对每个质因子计算一遍它在 \([l,r]\) 中的出现次数对吧?涉及质因子就要分解质因数对吧?莫队时候新添一个元素很明显就要枚举它的每个质因子,然后计算新添的贡献对吧?线性预处理乘法逆元以后,复杂度就变成了 \(n\sqrt{a_i}+(n+q)\sqrt{n}…