题解 P5072 【[Ynoi2015] 盼君勿忘】】的更多相关文章

众所周知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个数取与不取的情况数减掉一个…
原题地址: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]表示区间内…
题意 给定一个长度为 \(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,写篇题解祭之. 我们与其考虑某个子序列包含了哪些值,还不如看某个值能贡献到多少个子序列. 然而正着做不好做,因为一个子序列中某个值可能出现多次,所以…
传送门 辣鸡卡常题目浪费我一下午-- 思路 显然是一道莫队. 假设区间长度为\(len\),\(x\)的出现次数为\(k\),那么\(x\)的贡献就是\(x(2^{len-k}(2^k-1))\),即\(x2^{len}-x2^{len-k}\). 发现前面那东西很好维护,后面怎么办呢? 考虑把出现次数相同的数放在一起维护:维护每个出现次数里面数的和,统计答案的时候暴力统计. 为什么对呢?因为\(1+2+\dots+\sqrt{n}=n\),所以最多只有\(\sqrt n\)种次数,暴力即可.…
传送门 一开始理解错题意了--还以为是两个子序列相同的话只算一次--结果是子序列里相同的元素只算一次-- 对于一个区间\([l,r]\),设其中\(x\)出现了\(k\)次,那么它的贡献就是它的权值乘上包含它的序列个数,即\(2^{r-l+1}-2^{r-l+1-k}\),总的序列个数减去不包含它的序列个数.因为\(x\)和\(k\)无关,所以只要统计出现次数为\(k\)的所有\(x\)的总和即可 不同的\(k\)最多只有\(\sqrt n\)个,于是用个邻接表之类的东西维护一下,然后每次询问就…
题目大意: 给定一个序列,每次查询一个区间\([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的只有\…
EC笔记:第二部分:12.复制对象时勿忘其每一个成分 1.场景 某些时候,我们不想使用编译器提供的默认拷贝函数(包括拷贝构造函数和赋值运算符),考虑以下类定义: 代码1: class Point{ private: double x; double y; public:         Point()=default; Point(const Point &other){ x=other.x; y=other.y; } const Point& operator=(const Point…
记住: ★copying函数应确保复制“对象内的所有成员变量”及“所有base class成分” ★不要尝试以某个copying函数实现另一个copying函数.应该将共同机能放进第三个函数中,并由两个copying函数共同调用 --------------------------------------------------------------- copying函数包括:copy constructor和copy assignment operator 引出问题的例子: class Cu…