Luogu 3676 小清新数据结构题】的更多相关文章

推荐博客: http://www.cnblogs.com/Mychael/p/9257242.html 感觉还挺好玩的 首先考虑以1为根,把每一个点子树的权值和都算出来,记为$val_{i}$,那么在所有操作都没有开始的时候(以$1$为根的)$ans_{1} = \sum_{i= 1}^{n}val_{i}^{2}$ 考虑到一个修改的操作只会对修改的点$x$到根($1$)链上的点产生影响,那么一次修改只要修对这条树链上的点增加$v - a_{x}$(假设修改后的值为$v$)就好了. 链剖之后线段…
[Luogu3676]小清新数据结构题(动态点分治) 题面 洛谷 题解 先扯远点,这题我第一次看的时候觉得是一个树链剖分+线段树维护. 做法大概是这样: 我们先以任意一个点为根,把当前点看成是一棵有根树.比方说以\(1\)为根. 那么,在询问以\(p\)为根的时候的答案,我们看看哪些子树发生了变化. 发现真正会产生变化的只有\(1..p\)这条链上的所有点,其它点的贡献和以\(1\)为根时的贡献是一样的. 考虑这条链上的所有点的贡献变成了什么,假设这条链上的所有点分别是\(c_1,c_2...,…
https://www.luogu.org/problemnew/show/P3676 这题被我当成动态dp去做了,码了4k,搞了一个换根的动态dp #include<cstdio> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; struct E { int to,nxt; }e[]; ],ne; struct P1 { int len;ll a,b,c,…
题面戳我 题意:给一棵树,树上有点权,每次操作为修改一个点的点权,或者是询问以某个点为根时,每棵子树(以每个点为根,就有n棵子树)点权和的平方和. \(n\le2*10^5\),保证答案在long long范围内 sol 我们设\(s_i\)表示以\(p\)为整棵树的根时,以\(i\)为根的子树的点权和.设\(Sum\)表示所有点的点权和,即\(Sum=\sum_{i=1}^{n}val_i\). 所以这道题给出\(p\),就是要你求\(\sum_{i=1}^{n}s_i^2\). 我们先看\(…
Description: 给你一棵树,每次询问以一个点为根时所有子树点权和的平方和 带修改 Hint: \(n\le 2*10^5\) Solution: 这题只要推出式子就很简单了 如果不换根这个平方和树剖直接做就行了 考虑换根的影响了哪些点的贡献 显然只影响了\(1\)到\(u\)的路径上的点 把1到\(u\)这条路径上的点依次标记为\(1,2,3......k\) 我们设\(a_i\)为以1为根时\(i\)的点权和,\(b_i\)为以\(u\)为根的点权和 \(Ans=ans_1-\sum…
传送门 换根类型的统计问题动态点分治都是很好做的. 设所有点的点权和为$sum$ 首先,我们先不考虑求$\sum\limits_i s_i^2$,先考虑如何在换根的情况下求$\sum\limits_i s_i$. 考虑一个点$i$会被统计多少次,显然是$dep_i+1$,那么$\sum\limits_i s_i = \sum\limits_i (dep_i+1) \times val_i = \sum\limits_i dep_i \times val_i + sum$. $\sum\limit…
传送门 感觉这题做下来心态有点崩……$RMQ$求$LCA$没有树剖快我可以理解为是常数太大……然而我明明用了自以为不会退化的点分然而为什么比会退化的点分跑得反而更慢啊啊啊啊~~~ 先膜一波zsy大佬 讲讲做法.题目的要求是给定一个根$p$,求$\sum _{i=1}^ns_i^2$,其中$s_i$表示子树中的点权和 我们设$sum=\sum _{i=1}^n val_i$,即整棵树的点权和.先考虑一下$\sum _{i=1}^ns_i$怎么求.考虑一下每一个点的贡献,每一个点都会对被计算$dep…
题面 传送门 思路 本来以为这道题可以LCT维护子树信息直接做的,后来发现这样会因为splay形态改变影响子树权值平方和,是splay本身的局限性导致的 所以只能另辟蹊径 首先,我们考虑询问点都在1的情况 考虑一次修改带来的影响: 假设当前节点的值变动量为$delta$,修改节点为$u$ 那么对于所有位于路径$(1,u)$上的节点而言,它们的子树和以及子树平方和都会有改变 设$sum(u)$表示子树点权和,$sumsqr(u)$表示点权和的平方 那么$\forall v \in (1,u)$,$…
洛谷题面传送门 题目名称好评(实在是太清新了呢) 首先考虑探究这个"换根操作"有什么性质.我们考虑在换根前后虽然每个点的子树会变,但整棵树的形态不会边,换句话说,割掉每条边后,得到的两个子树的中点权之和不会变,因此我们考虑将这个东西与平方和挂钩.考虑构造 \(S=\sum\limits_{i=1}^nsiz_i(sum-siz_i)\),其中 \(siz_i\) 为 \(i\) 子树内所有点点权之和,\(sum\) 为所有点点权之和.那么不难发现 \(S\) 就是断掉所有点之后形成的两…
传送门 思路 这思路好妙啊! 首先很多人都会想到推式子之后树链剖分+线段树,但这样不够优美,不喜欢. 脑洞大开想到这样一个式子: \[ \sum_{x} sum_x(All-sum_x) \] 其中\(sum_x\)表示\(x\)子树和,\(All\)表示所有点的权值和. 发现不管哪个点为根,只要每个点的权值不变,这个式子的值就不变. 证明:对于点对\((u,v)\),\(w_u\times w_v\)被算了\(dis(u,v)\)次,因为每个在路径上的\(x\)都会算一次. 于是就有 \[ W…
先不考虑换根.考虑修改某个点权值对答案的影响.显然这只会改变其祖先的子树权值和,设某祖先原子树权值和为s,修改后权值增加了x,则对答案的影响为(s+x)2-s2=2sx+x2.可以发现只要维护每个点到根的路径的子树和之和就可以了,随便树剖一波. 对于换根,可以发现这也只会改变其祖先的子树权值和.设原本的根到要换的根这段路径上的点子树权值和依次为S.s1.s2……sn,则换根后其依次为S-s1.S-s2……S-sn.S,答案变化量为(S-s1)2-S2+……+S2-sn2=(S-s1)2-s12+…
题目链接 洛谷P3676 题解 我们先维护\(1\)为根的答案,再考虑换根 一开始的答案可以\(O(n)\)计算出来 考虑修改,记\(s[u]\)表示\(u\)为根的子树的权值和 当\(u\)节点产生\(v\)的增量时,只影响\(1\)到\(u\)路径上的\(s\),权值和都\(+v\) 而对答案的影响是 \[ \begin{aligned} \Delta ans &= \sum\limits_{i}^{k}(s_i + v)^{2} - \sum\limits_{i = 1}^{k} s_i^…
题目背景 本题时限2s,内存限制256M 题目描述 在很久很久以前,有一棵n个点的树,每个点有一个点权. 现在有q次操作,每次操作是修改一个点的点权或指定一个点,询问以这个点为根时每棵子树点权和的平方和. (题目不是很好懂,没看太懂的可以看看样例解释) 输入输出格式 输入格式: 第一行两个整数n.q. 接下来n-1行每行两个整数a和b,表示树中a与b之间有一条边,保证给出的边不会重复. 接下来一行n个整数,第i个整数表示第i个点的点权. 接下来q行每行两或三个数,如果第一个数为1,那么接下来有两…
题目大意 有一棵有\(n\)(\(n\leq 2*10^5\))个点的树,要进行\(q\)(\(q\leq 2*10^5\))次操作,每次操作是以下两种中的一种: 1.修改一个点的点权 2.指定一个点\(x\),将该点变成根,并询问此时所有点的子树点权和之平方和 题解 设\(w_i\)表示以1号点为根时,点\(i\)的子树点权和 1操作可以看成将点\(x\)到1号点的路径上的\(w\)都加上\(y\) 假设点\(x\)到\(1\)的路径上的点是\(a_1,a_2,...a_b\),那么所有\(w…
传送门 Description 有一棵\(n\)个点的树,每个点有一个点权. 现在有\(q\)次操作,每次操作是修改一个点的点权或指定一个点,询问以这个点为根时每棵子树点权和的平方和. Solution 我们设\(Sum=\sum_{i=1}^{n} w_i\),\(s_i\)表示\(i\)子树的权值和 发现不管根是哪个节点,\(W=\sum_{i=1}^n s_i(Sum-s_i)\)都是一个定值 因为它相当于对于每条边连接的两个联通块的"点权和的积"的和 所以,我们要求的\(\su…
传送门 题意:给定自然数n.k.x,你要求出第k小的长度为n的逆序对对数为x的1~n的排列 $n \le 300, k \le 10^13$ 一下子想到hzc讲过的DP 从小到大插入,后插入不会对前插入造成影响,$f[i][j]$表示$1..n$排列$j$个逆序对的方案数,枚举插在哪里 然后从前向后选择满足要求的字典序最小的构造就行了 一开始没注意$DP$方程是$O(n^4)$的T了一次,以后一定要跑一下极限数据 加上前缀和优化 然后会爆long long,但我们只关心与k相比大小,所以$>k$…
Description 题库链接 给你一个序列 \(A\) ,长度为 \(n\) ,有 \(m\) 次操作,每次询问一个区间是否可以 选出两个数它们的差为 \(x\) : 选出两个数它们的和为 \(x\) : 选出两个数它们的乘积为 \(x\) . \(1\leq n,m,A_i\leq 100000\) Solution 前两个操作 \(bitset\) 可以解决:后一个操作直接暴力枚举因数单个询问 \(O(\sqrt n)\) .复杂度承受得起. Code #include <bits/st…
原题传送门 这题还算简单(我记得我刚学oi时就来写这题,然后暴力都爆零了) 看见无修改,那么这题应该是莫队 维护两个bitset,第二个是第一个的反串,bitset内维护每个数字是否出现过 第一种操作: 要求y-z=x,所以y=z+x 最后判断有没有k和k-x都出现在bitset中的情况 第二种操作: 和第一种类似的方法,就不再讲了qwqwq 第三种操作: 暴力把x分解成两个数的乘积,判断这两个数是否出现过 因为莫队是\(O(n \sqrt n)\)的,查询\(O(\frac{mN}{\omeg…
这题是莫队维护bitset. 然而我并不会bitset以前讲过认为不考就没学 我真的太菜了. 首先维护一个权值的bitset--s. 操作3比较简单,我们可以\(\sqrt{x}\)枚举约数然后判断就行了. 操作1就是求是否存在 \[\exists{a,b},a-b=x\] 移一下项 \[a=x+b\] 也就是\(\text{(s<<x)}\)&\(x\neq0\). 那么操作2该怎么办? 我们先设\(b'=n-b\)因为\(x=a+b\) \[a-b'=a-(n-b)=a+b-n=x…
题目描述 题目还是简单一点好. 给定自然数n.k.x,你要求出第k小的长度为n的逆序对对数为x的1~n的排列a1,a2...an,然后用仙人图上在线分支定界启发式带花树上下界最小费用流解决问题,保证存在. 输入格式 一行三个自然数n.k.x. 输出格式 输出满足条件的排列,一行n个数,用空格分隔. 题目都说了:用仙人图上在线分支定界启发式带花树上下界最小费用流解决问题就可以了 看数据范围猜是DP...... 我们可以用$f[i][j]$表示序列长度为i,其中有j对逆序对时的可能组数,转移也很显然…
传送门 毒瘤lxl 本质是莫队,关键是怎么处理询问 这里需要开两个bitset(记为\(b1,b2\)),分别存\(x\)和\(n-x\)是否出现 对于询问1,即\(x-y=z\),由于\(y=x-z\),所以要求\(x\)和\(x-z\)同时存在,相当于\(b1\&(b1<<z)\)是否有1,没有就是不存在这种情况 对于询问2,即\(x+y=z\),这里记\(w=n-y\),原式变为\(x+n-w=z\),即\(x-w=z-n\),和情况1类似,相当于要知道\(b1\&(b2…
学长小清新题表之UOJ 14.DZY Loves Graph 题目描述 \(DZY\)开始有 \(n\) 个点,现在他对这 \(n\) 个点进行了 \(m\) 次操作,对于第 \(i\) 个操作(从 \(1\)开始编号)有可能的三种情况: \(Add\ a\ b:\) 表示在 \(a\) 与 \(b\) 之间连了一条长度为 \(i\)的边(注意,\(i\)是操作编号).保证 \(1≤a,b≤n\). \(Delete\ k:\) 表示删除了当前图中边权最大的\(k\)条边.保证$ k$一定不会比…
学长小清新题表之UOJ 180.实验室外的攻防战 题目描述 时针指向午夜十二点,约定的日子--\(2\)月\(28\)日终于到来了.随着一声枪响,伏特跳蚤国王率领着他的跳蚤大军们包围了 \(picks\) 博士所在的实验室. 当然,\(picks\) 博士不会坐以待毙,他早就率领着他的猴子们在实验室外修筑了许多的坚固防御工事. 经过跳蚤侦察兵的勘察,跳蚤国王发现 \(picks\) 博士的防御工事有着 \(n\) 处薄弱点,于是他把他的跳蚤大军分成了 \(n\) 支小队,并打算让它们分别进攻每一…
学长小清新题表之UOJ 31.猪猪侠再战括号序列 题目描述 大家好我是来自百度贴吧的_叫我猪猪侠,英文名叫\(\_CallMeGGBond\). 我不曾上过大学,但这不影响我对离散数学.复杂性分析等领域的兴趣:尤其是括号序列理论,一度令我沉浸其中,无法自拔.至于\(OI\)算法竞赛,我年轻时确有参加,虽仅获一枚铜牌,但我素性淡泊,毫不在意,毕竟那所谓\(FFT\).仙人掌之类,只是些雕虫小技罢了,登不上大雅之堂的:只有括号序列才会真正激发我的研究热情. 我曾天真地以为,凭借我的学识与才能,足可以…
题目地址 小清新人渣的本愿 [Ynoi2017]由乃的玉米田 所以这两题也就输出不一样而已 题解 这种lxl的题还是没修改操作的题基本就是莫队 分开考虑每个询问 1.减法 \(a-b=x⇒a=b+x\) 用一个\(bitset\),第\(i\)位表示有没有\(i\)这个数 那么查询其实就等价于查询bit&(bit>>x)之后里面有没有1 \(a+b=x\) 2.加法 \(a+b=x\) 设\(p=n-b\) \(a-p=a-n+b=x-n\) 维护一下另外一个\(bitset\),里面…
P3674 小清新人渣的本愿 一道妙不可言的题啊,,, 一看就知道是个莫队 考虑求答案 1号操作就是个大bitset,动态维护当前的bitset \(S\),把能取哪些值都搞出来,只要\(S\ and\ (S\ shr\ x)\)不为空,就有解 考虑2号操作,\(a+b=c\)可以转化为\((10w-b)-a=10w-c\),然后维护一个反的bitset,套路一样 3号操作...emmm...只需要暴力枚举因数,,,复杂度很对 // It is made by XZZ #include<cstd…
[洛谷3674]小清新人渣的本愿(莫队,bitset) 题面 洛谷,自己去看去,太长了 题解 很显然的莫队. 但是怎么查询那几个询问. 对于询问乘积,显然可以暴力枚举因数(反正加起来也是\(O(n\sqrt{n})\)的 对于加减????暴力显然\(GG\) 所以我们来用\(bitset\)玄学优化一下... 然后就能\(AC\)了 时间复杂度? 大概是\(O(n^2/64)\)吧.. #include<iostream> #include<cstdio> #include<…
在做这道题之前,我们首先来尝试签到题. 签到题 我们定义一个函数:\(qiandao(x)\) 为小于等于 x 的数中与 x 不互质的数的个数.要求 \(\sum\limits _{i=l}^r qiandao(i)\) 容易发现 \(qiandao(x)\) 只需求 \(\phi(x)\),不互质的个数就是另外一半. 那么问题转化为了如何筛出区间 \(\phi\) 的值.考虑到值域最大只有 \(1e12\).并且区间长度小于一百万,所以可以尝试筛根号以内素数求解. 我们知道欧拉函数计算公式为…
无敌传送门:http://fineui.com/demo_pro/default.aspx?theme=bootstrap1&menu=accordion   喜欢就来赞一个! 把麻烦留给三石,把时间留给自己!把 Bootstrap 小清新带回家! 注:Bootstrap Pure(小清新)主题下个版本支持(v2.7.0).…
ck_slide 是一款小清新的jQuery 幻灯片插件,它非常小巧,压缩后仅 3KB,基本功能可以满足.它支持淡入淡出/左右滚动.箭头/圆点控制.自动播放. 在线实例 默认(淡入淡出) 左右滚动 自动播放 使用方法 <div class="ck-slide">      <ul class="ck-slide-wrapper">          <li>              <a href="#"…