<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[suncongbo's blog]]></title><description><![CDATA[已搬至cnblogs: www.cnblogs.com/suncongbo]]></description><link>https://blog.csdn.net/suncongbo</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; suncongbo]]></copyright><item><title><![CDATA[Gym 101221I [WF2014]Sensor Network (二分图匹配)]]></title><link>https://blog.csdn.net/suncongbo/article/details/112424153</link><guid>https://blog.csdn.net/suncongbo/article/details/112424153</guid><author>suncongbo</author><pubDate>Sat, 09 Jan 2021 13:16:00 +0800</pubDate><description><![CDATA[题目链接
https://codeforces.com/gym/101221/
题解
又是一道看了题解的作业题。
这是一个最大团(或者补图上的最大独立集)问题，而二分图最大独立集是可以做的，因此可以考虑转化成二分图。
枚举点集的直径的两端点 \(x,y\)，满足 \(dis(x,y)\le d\)，那么剩下点的可选范围就是两个分别以 \(x,y\) 为圆心、\(dis(x,y)\) 为半...]]></description><category></category></item><item><title><![CDATA[Gym 101190D BZOJ 4842 Luogu P6967 LOJ #6071 [NEERC2016]Delight for a Cat (费用流)]]></title><link>https://blog.csdn.net/suncongbo/article/details/112387203</link><guid>https://blog.csdn.net/suncongbo/article/details/112387203</guid><author>suncongbo</author><pubDate>Fri, 08 Jan 2021 18:46:00 +0800</pubDate><description><![CDATA[题目链接
(BZOJ) 大人，时代变了
(Gym) https://codeforces.com/gym/101190
(Luogu) https://www.luogu.com.cn/problem/P6967
(LOJ) https://loj.ac/p/6079
题解
想了一晚上，终于有点理解了，好神仙啊。
我只会纯网络流的做法，并不会线性规划。
首先题意显然是有一个序列每个位置可...]]></description><category></category></item><item><title><![CDATA[NOI2020 前最后的日子]]></title><link>https://blog.csdn.net/suncongbo/article/details/108031552</link><guid>https://blog.csdn.net/suncongbo/article/details/108031552</guid><author>suncongbo</author><pubDate>Thu, 13 Aug 2020 22:53:00 +0800</pubDate><description><![CDATA[2020 年 8 月 10 日，省队集训 Day3，开此博客。
每个 OIer 都从这名叫“菜”的泥潭里出生，尽力摆脱这里，飞向更高更远的天空。然而真正能展翅高飞的毕竟只是少数人，大多数则永远无法冲破束缚，最终被埋没在泥潭中。
显然我没能摆脱这片绝望的泥潭，时间却已耗尽。尽管人生还很长，但 OI 生涯的主线已经到了终点。
就用这片博客简单记录一下最后这几天吧。长短视心情，当然文笔还是一如...]]></description><category></category></item><item><title><![CDATA[【学习笔记】Dilworth 定理的构造性证明]]></title><link>https://blog.csdn.net/suncongbo/article/details/107399515</link><guid>https://blog.csdn.net/suncongbo/article/details/107399515</guid><author>suncongbo</author><pubDate>Thu, 16 Jul 2020 09:40:00 +0800</pubDate><description><![CDATA[发现自己并不会 Dilworth 定理的构造性证明（原题要求输出方案），于是去 Wiki 上学习了一下。下文是我参照 Wiki 上的证明思路口胡的一个证明。
附例题：Codeforces 590E
Dilworth 定理: DAG 的最长反链大小等于最小链覆盖大小。
反链是指从图中的一个点的集合，使得集合内点两两不可达；链覆盖是指用若干条可以相交的链覆盖图中所有的点。
证明:


首先考...]]></description><category></category></item><item><title><![CDATA[Codeforces 1375H Set Merging (分块)]]></title><link>https://blog.csdn.net/suncongbo/article/details/107241901</link><guid>https://blog.csdn.net/suncongbo/article/details/107241901</guid><author>suncongbo</author><pubDate>Thu, 09 Jul 2020 18:45:00 +0800</pubDate><description><![CDATA[题目链接
https://codeforces.com/contest/1375/problem/H
题解
首先注意到 \(2.2\times 10^6\approx 2n\sqrt q\)，因此想到分块。
考虑对值域进行分块，每块内值域连续，位置保持相对不变，大小为 \(B\)，分成 \(\frac{n}{B}\) 块。
那么我们可以对每个块内的 \(\frac{B(B+1)}{2}\...]]></description><category></category></item><item><title><![CDATA[SDOI2020游记]]></title><link>https://blog.csdn.net/suncongbo/article/details/107011868</link><guid>https://blog.csdn.net/suncongbo/article/details/107011868</guid><author>suncongbo</author><pubDate>Sun, 28 Jun 2020 08:27:00 +0800</pubDate><description><![CDATA[6.19 报到日
上午到了东营。在车上看字符串没看明白，自闭了，感觉药丸。
6.20 Day1
上午开幕式。
下午机试。
打开T1顿时慌了，看上去不会做？瞎转化了一波，莫名其妙把题意转化错了，于是前一个小时就在自闭中度过了。
到了1.5h的时候还不会做，心态渐崩，决定敲个暴力。敲完了，我怎么过不了样例？？？结果发现居然转化错题意了……gg
没啥继续想下去的心态，于是\(21\)分走人了，...]]></description><category></category></item><item><title><![CDATA[Codeforces 1299 题解]]></title><link>https://blog.csdn.net/suncongbo/article/details/106271842</link><guid>https://blog.csdn.net/suncongbo/article/details/106271842</guid><author>suncongbo</author><pubDate>Thu, 21 May 2020 21:20:00 +0800</pubDate><description><![CDATA[鸽了一周的题解……我颓炸了。
A
考虑一下 \(f(x,y)\) 的意义，就是 \(x\) 具有且 \(y\) 不具有的位，那么 \(f(f(x,y),z)=f(x,y\ \text{or}\ z)\). 也就是只有重排后第一个位置是多少队最终的值有影响。
于是可以维护前后缀 \(\text{or}\) 然后枚举第一个即可。
时间复杂度 \(O(n)\).
代码: 80183835
B
...]]></description><category></category></item><item><title><![CDATA[Codeforces 1344 题解]]></title><link>https://blog.csdn.net/suncongbo/article/details/106089558</link><guid>https://blog.csdn.net/suncongbo/article/details/106089558</guid><author>suncongbo</author><pubDate>Tue, 12 May 2020 12:19:00 +0800</pubDate><description><![CDATA[A
假设所有的 \((i+a_i)\) 模 \(n\) 意义下构成排列则答案为 YES，否则为 NO.
时间复杂度 \(O(n)\) 或 \(O(n\log n)\).
代码: 79150268
B
由于每行每列必须有至少一个 S，所以每行每列为 # 的格子要么构成一个连续区间要么不存在。
如果某行或列不存在 #，则该行或列的格子必须放在一个不存在 # 的列或行。
于是得到了有解的必要条...]]></description><category></category></item><item><title><![CDATA[Codeforces 1344F Piet's Palette (线性代数、高斯消元)]]></title><link>https://blog.csdn.net/suncongbo/article/details/106067770</link><guid>https://blog.csdn.net/suncongbo/article/details/106067770</guid><author>suncongbo</author><pubDate>Mon, 11 May 2020 21:42:00 +0800</pubDate><description><![CDATA[题目链接
https://codeforces.com/contest/1344/problem/F
题解
怎么又是神仙数学构造题。。
观察题目中的操作，我们令
\[\textbf{A}_W=\begin{bmatrix}0\\0\end{bmatrix},\ \textbf{A}_R=\begin{bmatrix}1\\0\end{bmatrix},\ \textbf{A}_Y=\be...]]></description><category></category></item><item><title><![CDATA[Codeforces 1314 题解]]></title><link>https://blog.csdn.net/suncongbo/article/details/106046188</link><guid>https://blog.csdn.net/suncongbo/article/details/106046188</guid><author>suncongbo</author><pubDate>Sun, 10 May 2020 18:03:00 +0800</pubDate><description><![CDATA[这场整体质量感觉可以算 2020 年度（目前为止）最垃圾。
A
按数值从小到大扫描，维护一个优先队列，每遇到一个数加入队列，每次数值发生 \(+1\) 时弹掉队列中价值最大元素，然后把此时队列中所有元素的价值和类加进答案。
时间复杂度 \(O(n\log n)\).
代码: 78541690
B
这题看起来最难以处理的就是编号问题，所以就从编号问题入手，可以发现当场上还剩下 \(2^i\...]]></description><category></category></item><item><title><![CDATA[Codeforces 1338E JYPnation (图论)]]></title><link>https://blog.csdn.net/suncongbo/article/details/105908084</link><guid>https://blog.csdn.net/suncongbo/article/details/105908084</guid><author>suncongbo</author><pubDate>Sun, 03 May 2020 20:18:49 +0800</pubDate><description><![CDATA[UPD 2020.04.30：本题解被发现存在严重错误，已更正。
题目链接
https://codeforces.com/contest/1338/problem/E
题解
这题太神了……这才是 div1E 啊，比什么 nim 积意义下的离散对数之类的高明到不知道哪里去了
这篇题解主要复述一下官方题解并补充一下官方题解上省略的证明。所有证明都是蒟蒻口胡的，有问题敬请指出。
下面把题目保证不存在的那...]]></description><category></category></item><item><title><![CDATA[UOJ #514 [UR #19]通用测评号 (容斥原理、DP)]]></title><link>https://blog.csdn.net/suncongbo/article/details/105853197</link><guid>https://blog.csdn.net/suncongbo/article/details/105853197</guid><author>suncongbo</author><pubDate>Wed, 29 Apr 2020 10:45:00 +0800</pubDate><description><![CDATA[题目链接
http://uoj.ac/contest/51/problem/514
题解
神仙们都好强啊。
本题有好多做法，但是第一步都是一样的：
题目中的“每次选一个没有达到 \(a\) 的进行装填”其实没有用，可以等价成每次随机选任何一个位置 \(+1\)，然后求 \(\ge a\) 的个数的期望。
然后考虑计算 \(1\) 号位置最后达到 \(a\) 了的概率。
不容斥做法
考虑操...]]></description><category></category></item><item><title><![CDATA[UOJ #513 [UR #19]清扫银河 (图论、线性基)]]></title><link>https://blog.csdn.net/suncongbo/article/details/105816960</link><guid>https://blog.csdn.net/suncongbo/article/details/105816960</guid><author>suncongbo</author><pubDate>Tue, 28 Apr 2020 14:58:00 +0800</pubDate><description><![CDATA[题目链接
http://uoj.ac/contest/51/problem/513
题解
好题。
考虑简化操作：
对于第二种操作，其实就可以等价于若干次单点操作，每次标记一个点，把和这个点相邻的边全部反转。即有用的操作只有 \(n\) 种。
对于第一种操作，众所周知一个无向图中所有的环都可以由若干个非树边覆盖的环异或得到。即有用的操作只有 \((m-n+1)\) 种。
这样我们可以得到一...]]></description><category></category></item><item><title><![CDATA[Codeforces 1326F Wise Men (容斥原理、状压 DP、子集和变换、划分数)]]></title><link>https://blog.csdn.net/suncongbo/article/details/108662630</link><guid>https://blog.csdn.net/suncongbo/article/details/108662630</guid><author>suncongbo</author><pubDate>Tue, 28 Apr 2020 11:20:00 +0800</pubDate><description><![CDATA[题目链接
F1: https://codeforces.com/contest/1326/problem/F1
F2: https://codeforces.com/contest/1326/problem/F2
题解
好题。
考虑容斥，对每个 01 串求满足串中为 \(1\) 的位置必须为 \(1\)、串中为 \(0\) 的位置 \(0\) 或 \(1\) 均可的排列的个数。最后把超集...]]></description><category></category></item><item><title><![CDATA[Codeforces 1326F Wise Men (容斥原理、状压 DP、划分数)]]></title><link>https://blog.csdn.net/suncongbo/article/details/105816959</link><guid>https://blog.csdn.net/suncongbo/article/details/105816959</guid><author>suncongbo</author><pubDate>Tue, 28 Apr 2020 11:20:00 +0800</pubDate><description><![CDATA[题目链接
F1: https://codeforces.com/contest/1326/problem/F1
F2: https://codeforces.com/contest/1326/problem/F2
题解
好题。
考虑容斥，对每个 01 串求满足串中为 \(1\) 的位置必须为 \(1\)、串中为 \(0\) 的位置 \(0\) 或 \(1\) 均可的排列的个数。最后把超集...]]></description><category></category></item><item><title><![CDATA[Codeforces 1329 题解]]></title><link>https://blog.csdn.net/suncongbo/article/details/105804799</link><guid>https://blog.csdn.net/suncongbo/article/details/105804799</guid><author>suncongbo</author><pubDate>Mon, 27 Apr 2020 18:58:00 +0800</pubDate><description><![CDATA[A
先构造最左方案，然后能调整尽量调整即可。
时间复杂度 \(O(m)\).
代码: 75367082
B
显然每个二进制位是独立的，且只能有 \(0\) 个或 \(1\) 个数在该位上有值。乘起来即可。
时间复杂度 \(O(\log n)\).
代码: 75373134
C
贪心。每次删去能删的尽量大的（不亏）。
比较好的实现方法是定义一个 solve(u) 函数，先不停地删 \(u\...]]></description><category></category></item><item><title><![CDATA[【学习笔记】关于正整数除法下取整和上取整的一些基本运算公式]]></title><link>https://blog.csdn.net/suncongbo/article/details/105804798</link><guid>https://blog.csdn.net/suncongbo/article/details/105804798</guid><author>suncongbo</author><pubDate>Mon, 27 Apr 2020 17:46:00 +0800</pubDate><description><![CDATA[您从来没有见过这么菜的东西对不对。没错我就是这么菜。实在对不起玷污了您的眼睛。
OI 中经常遇到有关下取整和上取整的运算，这些公式手推很容易，但是对我这种菜鸡来说非常容易出错并且需要耗时，因此不如把他们记住。
设 \(a,b,m\) 为正整数：
\[\lfloor\frac{a}{b}\rfloor=\lceil\frac{a+1}{b}\rceil-1,\lceil\frac{a}{b...]]></description><category></category></item><item><title><![CDATA[Codeforces 1338 题解]]></title><link>https://blog.csdn.net/suncongbo/article/details/105781899</link><guid>https://blog.csdn.net/suncongbo/article/details/105781899</guid><author>suncongbo</author><pubDate>Sun, 26 Apr 2020 14:01:00 +0800</pubDate><description><![CDATA[A
对于每个 \(i\) 我们求出 \(b_i\) 表示 \(i\) 这个数最少要增加多少（\(\max^i_{j=1}a_j-a_i\)），答案等于最小的 \(k\) 使得 \(2^k-1\ge \max^n_{i=1}b_i\).
时间复杂度 \(O(n)\).
代码: 76336034
B
最小：只要存在两个叶子距离为奇数，答案就是 \(3\)，否则是 \(1\).
最大：等于非叶...]]></description><category></category></item><item><title><![CDATA[Codeforces 1336E Chiori and Doll Picking (子集和变换、线性基、阈值算法、状压 DP、组合计数)...]]></title><link>https://blog.csdn.net/suncongbo/article/details/105744014</link><guid>https://blog.csdn.net/suncongbo/article/details/105744014</guid><author>suncongbo</author><pubDate>Fri, 24 Apr 2020 16:01:00 +0800</pubDate><description><![CDATA[题目链接
https://codeforces.com/contest/1336/problem/E
题解
假设线性基大小是 \(L\)，其异或值域记作 \(S\)，则对于异或值域内每个数，显然有 \(2^{n-L}\) 种方案异或得到。因此只需要建一组线性基然后对这个线性基求答案即可，相当于 \(n\le m\).
数据分治。
算法一：
暴力枚举每个元素选不选。
时间复杂度 \(O(2...]]></description><category></category></item><item><title><![CDATA[Codeforces 1149 题解]]></title><link>https://blog.csdn.net/suncongbo/article/details/105526267</link><guid>https://blog.csdn.net/suncongbo/article/details/105526267</guid><author>suncongbo</author><pubDate>Tue, 14 Apr 2020 23:32:00 +0800</pubDate><description><![CDATA[A
特判全是 \(2\)，对于有 \(1\) 的情况把 \(1\) 放到第二个和最后。
时间复杂度 \(O(n)\).
代码: 76492031
B
考虑只有一次询问的情况，有一个 \(O(n^3)\) 的 DP，设 \(f[i][j][k]\) 表示三个串分别匹配到 \(i,j,k\)，大串最短匹配到哪。转移形如 \((i,j,k)\rightarrow (i+1,j,k),(i,j+...]]></description><category></category></item></channel></rss>