D. Red-black Cobweb time limit per test:6 seconds memory limit per test:256 megabytes input:standard input output:standard output Slastyona likes to watch life of nearby grove's dwellers. This time she watches a strange red-black spider sitting at th…
洛谷 Codeforces 思路 看到树上路径的统计,容易想到点分治. 虽然只有一个限制,但这个限制比较麻烦,我们把它拆成两个. 设黑边有\(a\)条,白边有\(b\)条,那么有 \[ 2a\geq b\\ 2b\geq a \] 合并两条边时,设原有的是\((a,b)\),要加入的是\((A,B)\),那么有 \[ 2(a+A)\geq b+B \Leftrightarrow 2A-B\geq b-2a\\ 2(b+B)\geq a+A \Leftrightarrow 2B-A\geq a-2…
原文链接http://www.cnblogs.com/zhouzhendong/p/8835443.html 题目传送门 - CodeForces 958F3 题意 有$n$个球,球有$m$种颜色,分别编号为$1\cdots m$,现在让你从中拿$k$个球,问拿到的球的颜色所构成的可重集合有多少种不同的可能. 注意同种颜色球是等价的,但是两个颜色为$x$的球不等价于一个. $1\leq n\leq 2\times 10^5,\ \ \ \ \ 1\leq m,k\leq n$. 题解 来自Hel…
洛谷 Codeforces 思路 一开始想到莫队+bitset,发现要T. 再想到分块+bitset,脑子一抽竟然直接开始写了,当然也T了. 最后发现这就是个裸的CDQ分治-- 发现\(a\)不变,可以处理出每个数在\(a\)中的位置\(pos\). 然后处理出\(aa_i=pos_{b_i}\),交换时就是\(swap(aa_x,aa_y)\). 把每个位置看成\((i,aa_i)\)的点,查询\(l1,r1,l2,r2\)时就是查以\((l2,l1)\)为左下角,\((r2,r1)\)为右上…
codeforces 549F Yura and Developers 题意 给定一个数组,问有多少区间满足:去掉最大值之后,和是k的倍数. 题解 分治,对于一个区间,找出最大值之后,分成两个区间. 至于统计答案,可以枚举小的那一端. 也可以结合熟练剖分的思想,由于dfs解决答案的过程是一棵二叉树,所以用全局变量保存当前信息,先做重儿子即可. 代码 \(O(nlog_2n)\) PS:由于搜索树是二叉树,所以可以直接用全局变量维护当前处理区间的信息. #include<bits/stdc++.h…
题目链接:http://codeforces.com/problemset/problem/399/B 题目意思:给出 n 个只由 R 和 B 组成的字符串(由上到下排列,相当于栈),问最多可以操作多少轮.一轮包括三个步骤:(1)如果栈顶的球为 red,则弹出(注意可以弹出多个),直到遇到栈顶的球为blue  (2)将这个blue球替换为red球(只操作一次)  (3)在替换完red 球上面添加blue球,直到有 n 个球为止.当然一轮中不一定3个步骤都执行.当 n 个球都为red时,就不能再操…
题目链接:http://codeforces.com/contest/873/problem/D 题解:这题挺简单的,除了一开始算作是调用到一次,然后每次执行操作时都会调用2次,所以最多调用几次就很好算了,而且只有奇数调用次数才合理.然后就是类似分治的思想,每次dfs二分过去,发现调用次数不够就交换mid和mid-1那么就会再被调用2次. #include <iostream> #include <cstring> #include <string> #include…
Codeforces 题目传送门 & 洛谷题目传送门 神仙题 %%% 首先考虑对这个奇奇怪怪的 \(t^{3/2}\) 进行一番观察.考虑构造函数 \(f(x)=ax^{3/2}+b(d-x)^{3/2}\),其中 \(a,b,d\) 为参数,将其求个导 \(f'(x)=\dfrac{3}{2}(ax^{1/2}-b(d-x)^{1/2})\),不难发现 \(f'(0)=-\dfrac{3}{2}b\sqrt{d}<0,f'(d)=\dfrac{3}{2}a\sqrt{d}>0\),而…
Codeforces 题面传送门 & 洛谷题面传送门 智商掉线/ll 本来以为是个奇怪的反悔贪心,然后便一直往反悔贪心的方向想就没想出来,看了题解才发现是个 nb 结论题. Conclusion. 在最优方案中,至多只有一个数组只有部分被选,其余数组要么全选要么全都不选. 证明:考虑调整.假设存在两个数组 \(x,y\) 分别选了前 \(p,q\) 个元素,这里不妨假设 \(a_{x,p+1}\ge a_{y,q+1}\),那么考虑从 \(y\) 数组中拎 \(l=\min(len_x-p,q)…
题面传送门 考虑记录每个点的前驱 \(pre_x\),显然答案为 \(\sum\limits_{i=l}^{r} i-pre_i (pre_i \geq l)\) 我们建立一个平面直角坐标系,\(x\) 轴表示下标 \(i\),\(y\) 轴表示前驱 \(pre_i\),点权为 \(i-pre_i\). 每次询问以 \((l,l)\) 为左下角,\((r,n)\) 为右下角的矩形中所有点的权值和. 至于修改操作,就是撤销上次操作的贡献,加入新的贡献. 至此,我们就把问题转化为单点加,矩形和的问题…