<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dogeding233]]></title><description><![CDATA[I good vegetable a. | 拉低PKU平均水平 | 不定期诈尸]]></description><link>https://blog.youkuaiyun.com/dogeding</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dogeding]]></copyright><item><title><![CDATA[manacher]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/111351757</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/111351757</guid><author>dogeding</author><pubDate>Fri, 18 Dec 2020 10:28:04 +0800</pubDate><description><![CDATA[manacher一般是用来处理回文子串的，通过一些处理将时间复杂度从O(n3)O(n^3)O(n3)或者O(n2)O(n^2)O(n2)降至O(n)O(n)O(n)。
我们都知道，找奇数长度的回文串是容易的，只需要确定中间的字符并往两边扩展即可。
于是就可以在原字符串的两个字符之间插入一个原字符串中不可能出现的字符，例如：abcba→#a#b#c#b#a#，abba→#a#b#b#a#，长度就变成了2l+1。
那么用p[i]存储以i为中心的最长回文串的半径（理解成包括中间字符或者是保证回文的最远一位的右边一]]></description><category></category></item><item><title><![CDATA[CodeForces1046B Hyperspace Highways]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/88806593</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/88806593</guid><author>dogeding</author><pubDate>Mon, 25 Mar 2019 21:26:17 +0800</pubDate><description><![CDATA[传送门
题意：
N个点，M条边，每一个环上的点两两有边相连。q次询问两点间最短距离。
题解：
构造圆方树，那么两点间距离感性认知一下就可以发现是树上两点间距离的一半。然后
dist(u,v)=(dep[u]+dep[v]-2*dep[lca])/2即可。
继续存板子。
代码：
#include&lt;cstdio&gt;
#include&lt;algorithm&gt;
#define maxn...]]></description><category></category></item><item><title><![CDATA[Luogu P4719 动态dp]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/88788097</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/88788097</guid><author>dogeding</author><pubDate>Mon, 25 Mar 2019 10:57:02 +0800</pubDate><description><![CDATA[传送门
题解：
日常的写不动题，存板
假设这玩意不是动态的：
设f[i][0/1]f[i][0/1]f[i][0/1]为第i个点不选/选的答案。那么f[i][0]=∑max⁡(f[j][0],f[j][1]),f[i][1]=∑f[j][0]+v[i].f[i][0]=\sum\max(f[j][0],f[j][1]),f[i][1]=\sum f[j][0]+v[i].f[i][0]=∑max(...]]></description><category></category></item><item><title><![CDATA[CodeChef MSTONES Milestones]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/88675706</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/88675706</guid><author>dogeding</author><pubDate>Tue, 19 Mar 2019 22:26:12 +0800</pubDate><description><![CDATA[传送门
题意：
平面上有n个点，已知不超过7条直线覆盖所有点。求在平面上的一条直线最多覆盖多少个点。
题解：
证明自己做过随机化的题
很显然可以发现一个会T的做法：枚举两个点，然后再枚举所有点求出直线覆盖点的个数。这玩意O(n3)O(n^3)O(n3)的 CF评测机都肯定过不去。
（然后后面就是看了某论文才get到的做法）
显然我们可以发现覆盖最多点的直线覆盖了至少⌈n7⌉\left \lceil...]]></description><category></category></item><item><title><![CDATA[BZOJ2648 SJY摆棋子]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/88675271</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/88675271</guid><author>dogeding</author><pubDate>Tue, 19 Mar 2019 22:10:54 +0800</pubDate><description><![CDATA[传送门
题解：
既然Hint上明确指出“kdtree可以过”，那么这就是一道kdtree板题了。
继续存板子。
总之在这里就是 在第0层以x为关键字 第1层以y为关键字 第2层又以x为关键字 以此类推。
然后查找就相当于优化了一下爆搜（…）答案更有可能在哪边就先往哪边找。
代码：
#include&lt;cstdio&gt;
#include&lt;algorithm&gt;
#define ma...]]></description><category></category></item><item><title><![CDATA[BZOJ4031 [HEOI2015]小Z的房间]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/88675123</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/88675123</guid><author>dogeding</author><pubDate>Tue, 19 Mar 2019 22:05:27 +0800</pubDate><description><![CDATA[传送门
题解：
因为持续写题感到恶心又不想显得太颓于是随便存几个板子
求生成树方案数？
矩阵树定理板子题。
这就当我存个板子的地方吧。
总之就是对于边(i,j)，矩阵a[i][j]值-1，a[i][i]值+1。然后求个行列式即可。
代码：
#include&lt;cstdio&gt;
#include&lt;algorithm&gt;
#define maxn 105
#define mod 10...]]></description><category></category></item><item><title><![CDATA[有上下界的网络流]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/88299830</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/88299830</guid><author>dogeding</author><pubDate>Thu, 07 Mar 2019 13:53:19 +0800</pubDate><description><![CDATA[传送门
题解：
语死早表示这玩意怎么可能是别人能看的
我们先跑一发可行流。
可以从t到s连一条容量INF的边，转化成上一个问题，那么跑完之后s到t的权值即为所求。
然后在残量网络上跑s-t最大流即可。
所求为二者之和。
代码：
#include&amp;amp;lt;cstdio&amp;amp;gt;
#include&amp;amp;lt;queue&amp;amp;gt;
#include&amp;amp;lt;algorithm&amp;amp;gt;
#define maxn]]></description><category></category></item><item><title><![CDATA[BZOJ4869 [Shoi2017]相逢是问候]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/86843322</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/86843322</guid><author>dogeding</author><pubDate>Sat, 09 Feb 2019 22:44:12 +0800</pubDate><description><![CDATA[传送门
题解：
看过去一眼：线段树？暴力？然后就不知道该干什么了。
看题解：woc？这公式？（好吧不会这公式就做不成题了…）

欧拉定理EXT： ab≡abmod&amp;amp;amp;amp;amp;ThinSpace;&amp;amp;amp;amp;amp;ThinSpace;ϕ(p)+ϕ(p)(mod&amp;amp;amp;amp;nbsp;p),b≥ϕ(p)a^b\equiv a^{b\mod \phi(p)+\phi(p)} (mod\ p),b\ge \phi(p)ab≡a...]]></description><category></category></item><item><title><![CDATA[WC2019凉凉记]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/86745637</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/86745637</guid><author>dogeding</author><pubDate>Sat, 02 Feb 2019 21:04:48 +0800</pubDate><description><![CDATA[蒟蒻的NOIWC2019 竟然不只拿了个狗牌]]></description><category></category></item><item><title><![CDATA[BZOJ3809 Gty的二逼妹子序列]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/86299051</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/86299051</guid><author>dogeding</author><pubDate>Fri, 11 Jan 2019 13:42:20 +0800</pubDate><description><![CDATA[题意：
给定一个长度为n(1&amp;lt;=n&amp;lt;=100000)的正整数序列s(1&amp;lt;=si&amp;lt;=n)，对于m(1&amp;lt;=m&amp;lt;=1000000)次询问“l,r,a,b”，每次输出sl…sr中，权值∈[a,b]的权值的种类数。
题解：
我们显然容易想到莫队。又很显然可以想到维护每个权值是否出现然后求和。
但是如果用树状数组，每次操作的复杂度大概是O(mnlog⁡n)O(m\sqrt ...]]></description><category></category></item><item><title><![CDATA[BZOJ5006 [THUWC2017]Bipartite 随机二分图]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/85863397</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/85863397</guid><author>dogeding</author><pubDate>Sat, 05 Jan 2019 18:02:56 +0800</pubDate><description><![CDATA[传送门
题解：
考试时忙着想前面两道题了，没怎么看。
看这个n的范围，估计是状压。
考虑dp[i][j]dp[i][j]dp[i][j]，左边匹配状态为i，右边为j时的概率。显然两边匹配点数相同。答案是dp[2n−1][2n−1]×2ndp[2^n-1][2^n-1]\times{2^n}dp[2n−1][2n−1]×2n。
当然不能直接开数组。map吼哇。
如果t=0，直接转移就行了。
如果t=...]]></description><category></category></item><item><title><![CDATA[20190105 东非大裂谷]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/85858689</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/85858689</guid><author>dogeding</author><pubDate>Sat, 05 Jan 2019 16:41:11 +0800</pubDate><description><![CDATA[题意：


题解：
文科生误点进来我不负责！上一篇也是！
太弱了太弱了迟早要烷
观察不到性质，只会骗分。QAQ
我们可以很容易写出50分算法：设dp[i]dp[i]dp[i]表示以i为根的子树且i为其中一个小组的起点时的最大值。
很显然我们可以在整棵子树中枚举点v，维护从v往上走到达的点、WmaxW_{max}Wmax​和WminW_{min}Wmin​、u所有子树的dp值的和。
然后就可以dp了...]]></description><category></category></item><item><title><![CDATA[20190105 地中海气候]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/85857211</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/85857211</guid><author>dogeding</author><pubDate>Sat, 05 Jan 2019 16:16:50 +0800</pubDate><description><![CDATA[题意：


题解：
这名称真是对一个在大半个月前会考了的理科生极度不友好。
sb题没看出来我是不是该原地退役了啊
显然有一个贪心策略：每次拿走最大的数。然后就有了50%的暴力做法：用优先队列维护。
但是这O(nklog⁡n)O(nk\log n)O(nklogn)显然过不去。我们需要砍掉一个log。
然后就是我考试时想了很久都没想出来的一坨东西。
每次还有元素时我们拿掉一个元素之后会补上一个元素对...]]></description><category></category></item><item><title><![CDATA[POJ2420 A Star not a Tree?]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/85407881</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/85407881</guid><author>dogeding</author><pubDate>Sun, 30 Dec 2018 20:25:09 +0800</pubDate><description><![CDATA[传送门
题解：
模拟退火。
我们随便选一个点（比如输入的第一个点）作当前点，然后模拟退火。
如果新解比当前解好，可以接受；如果较差，也有一定概率接受。然后T减小，接受较差解的概率减小。
第一次写模拟退火，不抄板是不可能不抄板的，这辈子都不可能不抄板的。
迟早会补一篇模拟退火的。咕咕咕预定
用srand(time(NULL))会RE。
代码：
#include&amp;lt;cstdio&amp;gt;
#incl...]]></description><category></category></item><item><title><![CDATA[BZOJ4518 征途]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/85401806</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/85401806</guid><author>dogeding</author><pubDate>Sun, 30 Dec 2018 18:42:58 +0800</pubDate><description><![CDATA[传送门
题解：
感觉好多题解都是斜率优化…然而我这次需要用二分来解。斜率优化以后再补吧，咕
令SiS_iSi​为前i条路的长度和，我们先推一下：
v=∑i=1m(xi−x‾)2m=∑i=1mxi2−2x‾∑i=1mxi2+mx‾2m=∑i=1mxi2−mx‾2mv=\dfrac{\displaystyle \sum_{i=1}^m(x_i- \overline x)^2}{m}=\dfrac{\d...]]></description><category></category></item><item><title><![CDATA[HDU3948 The Number of Palindromes]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/85260249</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/85260249</guid><author>dogeding</author><pubDate>Wed, 26 Dec 2018 12:45:53 +0800</pubDate><description><![CDATA[传送门
题意：给出一个字符串，问你有多少个本质不同的回文子串。
题解：
理论上有3种做法，我只写了回文自动机和manacher。
这两个东西的坑我迟早会补上的
回文自动机：建完之后根据我抄的建树方法输出节点数-1即可。
#include&amp;lt;cstdio&amp;gt;
#include&amp;lt;cstring&amp;gt;
#include&amp;lt;algorithm&amp;gt;
#define LL long l...]]></description><category></category></item><item><title><![CDATA[NOIp2018游记]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/83932901</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/83932901</guid><author>dogeding</author><pubDate>Mon, 12 Nov 2018 12:53:47 +0800</pubDate><description><![CDATA[day x (x≤0)(x\le 0)(x≤0)
连着搞了4、5个月，天天被dalao们吊起来打。
不敢在考完之前把游记发出来，怕被禁赛。
考前试机，感觉键盘很迷。

day 1
考前膜拜各位dalao，希望rp++.
T1好眼熟啊…我好像做过！做原题还是有用的 话说ccf是不是要把自己禁掉啊 papapa乱码一发，过样例走人。
T2艹了艹，感觉是判断一下一个数是否能被其他数凑出来…？papapa...]]></description><category></category></item><item><title><![CDATA[TopCoder SRM674D2L3 VampireTreeDiv2]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/83421658</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/83421658</guid><author>dogeding</author><pubDate>Fri, 26 Oct 2018 22:28:02 +0800</pubDate><description><![CDATA[传送门
题意（by 某轻小说看多了的yhn）：
吸血鬼有两种产生方式：
1、被它的主人（一个吸血鬼）“初拥”。
2、被它的父母（两个吸血鬼）所生。但这类吸血鬼很少，最多只有15个
现在，给出每个吸血鬼的主人（或父母），要求选择尽可能少的吸血鬼，使得每个主仆关系、每个父子，母子关系中，都至少有一个被选中。求选择的方案数。
题解：
我们考虑一下树上最小边覆盖（是叫这个东西吧？），这个东西是可以直接用d...]]></description><category></category></item><item><title><![CDATA[三校联考20181024T3 统计count]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/83349881</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/83349881</guid><author>dogeding</author><pubDate>Wed, 24 Oct 2018 20:12:07 +0800</pubDate><description><![CDATA[题意：


题解：
话说T2和T3的位置是故意的吧？还有std的代码真丑（就像隔壁苏珊婶婶做的苹果派一样）（基本上全机房的人都这么想）。
先说60%的数据，直接暴力枚举要取出的位置，暴力排序，然后每一次用树状数组或归并排序求逆序对数即可。
对于100%的数据，我们可以维护一个f[i]f[i]f[i]为j&amp;amp;gt;i,a[j]&amp;amp;lt;a[i]j&amp;amp;gt;i,a[j]&amp;amp;lt...]]></description><category></category></item><item><title><![CDATA[三校联考20181024T2 点亮light]]></title><link>https://blog.youkuaiyun.com/dogeding/article/details/83349088</link><guid>https://blog.youkuaiyun.com/dogeding/article/details/83349088</guid><author>dogeding</author><pubDate>Wed, 24 Oct 2018 19:46:12 +0800</pubDate><description><![CDATA[题意：


题解：
首先bb一下，本蒟蒻即将被第4个学校的dalao们吊打。
wor，考场上做这道题时接连看错两次题意，简直差点自闭，还好暴力分给得足。
然后吐槽一下题解的玄学程度…如果脸黑的话随机出来的数据真的还跑得过？算了就假设出数据的人没那么非，所有数据中树的深度就是期望深度=1+∑i=1n1i=1+ln⁡n+Θ(1)=1+\displaystyle \sum_{i=1}^n{\dfrac{...]]></description><category></category></item></channel></rss>