P5105 不强制在线的动态快速排序 题目背景 曦月最近学会了快速排序,但是她很快地想到了,如果要动态地排序,那要怎么办呢? 题目描述 为了研究这个问题,曦月提出了一个十分简单的问题 曦月希望维护一个允许重复的集合\(S\),支持: 插入\([L, R]\),也就是插入\(L, L + 1 ... , R\),这\(R - L + 1\)个数 询问\(Sort(S)\) \(Sort(S)\)的定义为: 我们将集合\(S\)中的元素从小到大按照快速排序排好序,记为\(a_1, a_2 ... a…
题目大意:有一个可重集$S$,有两个操作: $1\;l\;r:$表示把$S$变为$S\cup[l,r]$ $2:$表示将$S$从小到大排序,记为$a_1,a_2,\dots,a_n$,然后求出$\bigoplus\limits_{i=2}^n(a_i^2-a_{i-1}^2)$,$\bigoplus$表示异或 题解:假设$a_1,a_2,\dots,a_n=[l,l+n)$,发现$\bigoplus\limits_{i=2}^n(a_i^2-a_{i-1}^2)=(2l+1)\oplus(2l+…
P5105 不强制在线的动态快速排序 $\bigoplus \limits_{i=2}^n (a_i^2-a_{i-1}^2) = \bigoplus \limits_{i=2}^n (a_i-a_{i-1})×(a_i+a_{i-1})$ 关于$l~r$区间,由于$a_i=a_{i-1}+1$ $ \bigoplus \limits_{i=l}^{r-1} (2i+1)=\bigoplus \limits_{i=1}^{r-1} (2i+1)\bigoplus \limits_{i=1}^{l…
前言 考试的时候居然想错了区间贡献,mdzz 思路 题目看着很方啊,难道要树套树? 但数据范围提醒我们,是nlogn的复杂度 Sort(S)的定义是不是很鬼畜 但我们不动脑子的打表容易发现 连续区间[1,n]内\(a_i^2-a_{i-1}^2\)为连续的奇数 (其实这里直接用初中的完全平方公式就好) 我们再次打表又发现了 连续的奇数的异或和,很有规律的嘛 可以直接O(1)求出 int xx(int x) { if(x%4==0) return 0; if(x%4==2) return 2; i…
不强制在线的动态快速排序 题解 算法一 按照题意模拟 维护一个数组,每次直接往数组后面依次添加\([l, r]\) 每次查询时,暴力地\(sort\)查询即可 复杂度\(O(10^9 * q)\),期望得分\(0\)分 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int n, opt; int q[....…
emm 可重集合没用用.直接变成不可重复集合 有若干个区间 每个区间形如[L,R] [L,R]计算的话,就是若干个连续奇数的和.拆位统计1的个数 平衡树维护 加入一个[L,R],把相交的区间合并.之后相邻不相交的部分O(1)计算贡献到答案里. O(nlogn+30n) 不强制在线的动态快速排序 写起来并不太好写 set就可以 删除一些区间,合并成大区间 要分类讨论 至于calc(l,r) 有O(1)公式,可以不用按位: 第一个第二个发现了,后面就是多余位置处理即可. 代码: 1.注意插入区间被包…
首先集合去重不影响答案,然后打表易得连续自然数平方差异或前缀和的规律,于是问题就变为在线维护区间求并同时更新答案,set记录所有区间,每次暴力插入删除即可.由于每个区间至多只会插入删除一次,故均摊复杂度$O(n\log n)$ #include<set> #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) typedef long long ll;…
为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--应用篇戳这里 概念.性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课) 链剖分,是指一类对树的边进行轻重划分的操作,这样做的目的是为了减少某些链上的修改.查询等操作的复杂度. 目前总共有三类:重链剖分,实链剖分和并不常见的长链剖分 重链剖分 实际上我们经常讲的树剖,就是重链剖分的常用称呼. 对于每个点,选择最大的子树,将这条连边划分为重边,而连向其他子树的边划分为轻边. 若干重边连接在…
传送门 思路 这思路好妙啊! 首先很多人都会想到推式子之后树链剖分+线段树,但这样不够优美,不喜欢. 脑洞大开想到这样一个式子: \[ \sum_{x} sum_x(All-sum_x) \] 其中\(sum_x\)表示\(x\)子树和,\(All\)表示所有点的权值和. 发现不管哪个点为根,只要每个点的权值不变,这个式子的值就不变. 证明:对于点对\((u,v)\),\(w_u\times w_v\)被算了\(dis(u,v)\)次,因为每个在路径上的\(x\)都会算一次. 于是就有 \[ W…
题解 在冬令营上听到冬眠的东西,现在都是板子了猫锟真的是好毒瘤啊(雾) (立个flag,我去thusc之前要把WC2018T1乱搞过去= =) 好的,我们可以参考猫锟的动态动态dp的课件,然后你发现你什么都看不懂(菜啊 但是我们仔细看一看,可以发现用数据结构维护矩阵,那么我们尝试构造一个矩阵 \(\begin{bmatrix} \ g_{u,0} & g_{u,0}\\ g_{u,1} & 0 \end{bmatrix} \begin{bmatrix} f_{son[u],0}\\ f_{…