摘要:
(事实上,总是可以让每一场都比,因此$w_{i}$并没有意义) 当$k=2$时,有如下做法—— 新建一个点,向所有奇度数的点连边,并对得到的图求欧拉回路,那么只需要将欧拉回路上的边交替染色,即可保证$|s_{i,1}-s_{i,2}|\le 1$(路径长度为奇数时的起点),去掉新建的点后仍有$|s_ 阅读全文
摘要:
记$d(x,y)$为$x$到$y$的距离,$cost_{x}=\sum_{i=1}^{n}w_{i}d(x,i)^{\frac{3}{2}}$为$x$的代价 取$C$为足够大量,对于一条边权为$w$的边,在边上新建$wC-1$个点,这些点点权为0(即本身无影响),并将边拆成$wC$段,那么每一段边权 阅读全文
摘要:
记$a_{i}$为当前第$i$个水箱的电流,$b_{i}$为$a_{i}$的历史最大值 不难发现,问题即要支持:对$a_{i}$区间覆盖和区间加(并对0取$\max$);查询某个$a_{i}$和$b_{i}$ 整体思路类似于bzoj3064,仍维护$\max a,b$和操作序列,操作执行方式即令$ 阅读全文
摘要:
记$a_{i}$为时刻$i$当前cpu使用率,$b_{i}$为$a_{i}$的历史最大值 不难发现,问题即要支持:对$a_{i}$区间赋值和区间加;查询$a_{i}$和$b_{i}$的区间最大值 在线段树的节点上维护$\max a,b$和一个操作序列(类似懒标记),序列中的元素为操作(赋值或加),并 阅读全文
摘要:
整体思路类似于hdu5306,在线段树上维护区间内最大值及个数、严格次大值、最小值及个数、严格次小值和区间和,即可支持$o(\log n)$查询 修改时,区间加直接维护即可,区间取$\min$的做法与该题相同—— 修改时,搜索至完全覆盖的区间后再分类讨论: 1.若修改值大于严格次大值,可以打上懒标记 阅读全文
摘要:
segment tree beats模板题 在线段树上维护区间内内最大值及个数、严格次大值和区间和,即可支持$o(\log n)$查询 修改时,搜索至完全覆盖的区间后再分类讨论: 1.若修改值大于严格次大值,可以打上懒标记并维护上述信息 2.若修改值不超过严格次大值,继续递归下去 (另外,该信息显然 阅读全文
摘要:
考虑对于确定的排列$\{p_{i}\}$,如何求出其(交换后)会得到的排列—— 令$cnt_{x}$为在$i$之前比$x$大的元素个数(其中$p_{i}=x$),显然排列合法当且仅当$cnt_{i}\le k$ 注意到每一次交换至多只有初始靠后的元素$cnt_{i}$减小1,因此交换次数至少为$\s 阅读全文
摘要:
(为了方便,以下除$V$外都改为小写字母) 结论1:若$a+b\le m+1$,则答案为$m+1$(即任意$x$都可以被得到) 任取$y\in [0,m]$,由$\gcd(a,b)=1$存在$y-V=pa+qb$,且不妨假设$p\in [0,b)$ 不断对$x+a$直至加了$p$次或无法再加,对两种 阅读全文
摘要:
即QTREE5和QTREE6组合,即将原本维护子树范围内点数改为维护子树范围内最小值即可,由于最小值没有可减性,因此需要使用set (虽然形式上与QTREE5类似,但QTREE5维护的信息更巧妙一些,而这题比较直接) 另外关于make_root中没有rev的修改,实际上也不需要改变 时间复杂度为$o 阅读全文
摘要:
考虑如下构造: 新建一条边$(0,1)$,并将原树以0为根建树,记$fa_{x}$为$x$的父亲(其中$1\le x\le n$) 维护两棵森林,分别记作$T_{0/1}$,每一条边恰属于一棵,其中$(x,fa_{x})\in T_{0}$当且仅当$x$为白色点 此时,考虑节点$x$的答案(不妨假设 阅读全文
摘要:
定义$f(S)$表示点集$S$的最小连通块 做法1 通过对所有节点判定,可以在$n$次询问中求出具体的$f(S)$ 对于$x\ne y$,显然$(x,y)\in E$当且仅当$f(\{x,y\})=\{x,y\}$,那么直接暴力判定即可 询问次数和时间复杂度均为$o(n^{3})$ 做法2 为了方便 阅读全文
摘要:
合理的正解大概是动态点分治,这里给出其实现 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 100005 4 struct Edge{ 5 int nex,to; 6 }edge[N<<1]; 7 multiset<int>S 阅读全文
摘要:
记$g(k)$为$c$恰为$k$的合法三元组数,显然$f(k)=\sum_{i=1}^{k}g(i)$ 结论:若$\lim_{k\rightarrow \infty}\frac{g(k)}{k^{2}}$存在,记其为$s$,则$\lim_{k\rightarrow \infty}\frac{f(k) 阅读全文
摘要:
将奶牛的状态用序列$\{a_{1},a_{2},...,a_{m}\}$来描述,其中$a_{i}$表示第$i$头奶牛的位置(奶牛数量为$m$) 下面,先来考虑对于某个特定的$m$如何处理: 对于一条简单路径,如果路径中(不包括端点)所有点度数均为2且端点的度数均不为2(允许为1),则称该路径为一条" 阅读全文
摘要:
对于一个排列$p_{i}$,假设循环长度依次为$x_{1},x_{2},...,x_{m}$,那么所需步数即${\rm lcm}_{i=1}^{m}x_{i}$ 由于是乘积,因此可以枚举素数$p$,并统计其的次数(注意这是对$\varphi(M)=M-1$取模) 类似于$E(X)=\sum_{i\g 阅读全文
摘要:
类似于[loj2553] 对第一棵树边分治,对第二棵树建立虚树,并根据直径合并的性质来处理第三棵树(另外在第三棵树中计算距离需要使用dfs序+ST表做到$o(1)$优化) 总复杂度为$o(n\log^{2}n)$,可以通过 1 #include<bits/stdc++.h> 2 using name 阅读全文
摘要:
边分治模板题 (第一次写边分治就记一下吧) 对式子变形,即为$\frac{dep_{x}+dep_{y}+dis(x,y)}{2}-dep'_{lca'(x,y)}$ 通过增加节点使每一个点的度数都不超过3,不难证明此时总存在一条边,假设其将其删除后两连通块大小分别为$x$和$y$,则有$y\le 阅读全文
摘要:
结论 注意到如果$x$周围有偶数个1,对$x$操作显然不会改变$a_{x}$,因此不妨强制操作的点周围要有奇数个1,不难发现此时恰好会改变该点,即令$a_{x}=a_{x}\oplus 1$ 称$\{a_{i}\}$合法当且仅当其能被得到,问题即统计合法序列数 显然操作是可逆的,因此$\{a_{i} 阅读全文
摘要:
思路 统计数的种类数,也等价于统计有多少个数满足其之前没有与其相同的数 将序列以$\frac{k}{2}$为块大小分块,那么即会有$m=\frac{2n}{k}$个块 (关于$k=1$的情况,以1为块大小分块即可,具体可以自行代入检验) 考虑$\forall 1\le i<j\le m$,将第$i$ 阅读全文
摘要:
将所有线段的端点(即$a_{i}$和$a_{i}\pm l_{i}$)离散,并按照$a_{i}$从小到大排序 定义$f_{i,,j}$表示前$i$条线段在位置$j$之前最多能覆盖的长度(默认覆盖到$j$,允许覆盖到$j$之后,但该部分不计入覆盖的长度),转移对第$i$条线段的方向分类讨论: (关于" 阅读全文
摘要:
模板题 定义$\lfloor x\rfloor$表示小于等于$x$的最大整数,$\lceil x\rceil$表示大于等于$x$的最小整数 不难发现,若$a\in Z^{+}$且$b,x\in Z$,则$ax\le b\iff x\le \lfloor\frac{b}{a}\rfloor$、$ax\ 阅读全文
摘要:
前置知识 下面,先来介绍一下Stern-Brocot Tree的结构: 其是一棵满二叉树,每一个节点都是一个最简分数,其中根为$\frac{1}{1}$ 假设前$i$层的中序遍历分数依次为$\frac{y_{i,j}}{x_{i,j}}$(其中$i\ge 1,j\in [1,2^{i})$,即根为第 阅读全文
摘要:
为了方便,不妨先将$n$和$m$都减小1,其意义即为移动的次数 注意到老鼠向下移动和猫向上移动对于第2个条件是等价的,对于第1个条件即要求都恰好移动$n$次,那么对应的方案数即为${2n\choose n}$,乘上此系数后不妨将两种操作都看作仅有老鼠向下移动$2n$次 此时,即猫只能向右移动,因此相 阅读全文
摘要:
将方格(参考题目)看作一个点,相邻的两点若颜色相同则连边,即得到一张网格图,而每次询问即求子矩形内的点导出子图对应的连通块数 注意到网格图也是平面图,根据欧拉公式有$V+F-E=1+C$(其中$V,F,E$和$C$分别为点数、块数、边数和连通块数),那么不妨去求$V,F$和$E$ 显然$V=(x_{ 阅读全文
摘要:
考虑不断找到以下两种类型的边,并维护答案: 1.终点出度为0的边,那么此时即令$ans_{x}=\min(ans_{x},\max(r,ans_{y}-p))$ 2.(在没有"终点出度为0的边时",即优先删除第1类边)剩余边中$r$最大的边,注意到能走到的每一个点都有出边,且其限制$r$ 阅读全文