<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Yu Gi Oh!]]></title><description><![CDATA[OIer -> ACMer]]></description><link>https://blog.youkuaiyun.com/element_hero</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; element_hero]]></copyright><item><title><![CDATA[【LuoguP7114】[NOIP2020] 字符串匹配 （扩展KMP算法）]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/113036427</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/113036427</guid><author>element_hero</author><pubDate>Sat, 23 Jan 2021 12:15:23 +0800</pubDate><description><![CDATA[题目描述
传送门
Sol
看到是一个与周期串有关的问题，朴素的KMP算法求出来的boder只能帮助我们求出一个周期串的最小循环节，这在本题中是不够的。因为我们要知道对于一个 AB 来说它最多能往后循环多少次。
虽然似乎可以用二分来解决。
考虑 扩展KMP算法：
用于在线性时间内求解一个串的所有后缀与另一个串的 LCP 长度。
暴力算法显然是 O(n2)O(n^2)O(n2) 的,,,和其他字符串算法类似,,,这里也是通过充分利用已经匹配完得到的信息来将整个算法的复杂度降低至线性。
我们记Z[i]Z[i]Z[]]></description><category></category></item><item><title><![CDATA[牛客题霸--牛能和牛可乐的礼物 题解]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/109481921</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/109481921</guid><author>element_hero</author><pubDate>Tue, 03 Nov 2020 23:35:52 +0800</pubDate><description><![CDATA[牛能和牛可乐的礼物
C++版本答案：
#include&lt;iostream&gt;
#include&lt;cstdio&gt;
#include&lt;cstdlib&gt;
#include&lt;algorithm&gt;
#include&lt;cmath&gt;
#include&lt;stack&gt;
#include&lt;queue&gt;
#include&lt;vector&gt;
using namespace std;
const int MAXN=200020;
const ]]></description><category></category></item><item><title><![CDATA[【LOJ#536】「LibreOJ Round #6」花札]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/94478096</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/94478096</guid><author>element_hero</author><pubDate>Tue, 02 Jul 2019 20:33:33 +0800</pubDate><description><![CDATA[题目链接
题目描述
「UniversalNO」的规则如下：每张牌有一种颜色和一个点数。两个人轮流出牌，由 Alice 先手，最开始牌堆为空，出的人可以出任意牌（放到牌堆顶），之后出的牌必须和当时牌堆顶的牌的颜色或点数至少有一个相同。有牌可出者必须出，无牌可出者输。
Alice 和 Shinobu 玩了几局后觉得原来的规则太依靠运气，于是她们加了一个新玩法：Alice 出了第一张之后，两个人立即交换...]]></description><category></category></item><item><title><![CDATA[【LuoguP4887】第十四分块(前体)]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/93901359</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/93901359</guid><author>element_hero</author><pubDate>Thu, 27 Jun 2019 19:34:51 +0800</pubDate><description><![CDATA[题目链接
题意
区间两数异或在二进制下有 kkk 个 111 的对数。
Sol
普通莫队的话，如果要实时维护好区间内的答案需要支持区间对一个数求答案。
直接做不是很好做，容易发现其实这也就是一个区间询问。那么可以把莫队中要求的东西再次离线下来。
我们把上述询问拆成前缀相减的形式，这样我们要做到就是多次询问一个前缀对一个数的答案。
由于在数据范围下二进制下有 kkk 个 111 的数并不是太多，我们...]]></description><category></category></item><item><title><![CDATA[【LuoguP4482】[BJWC2018]Border 的四种求法]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/93241226</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/93241226</guid><author>element_hero</author><pubDate>Fri, 21 Jun 2019 22:57:20 +0800</pubDate><description><![CDATA[题目链接
题意
区间 boder
n,q≤2∗105n,q\leq 2*10^5n,q≤2∗105
Sol
(暴力哈希/SA可以水过)
字符串区间询问问题，考虑用 SAMSAMSAM 解决。
boder相当于是询问区间 [l,r][l,r][l,r] 内满足 lcs(i,r)&amp;gt;=i−l+1lcs(i,r)&amp;gt;=i-l+1lcs(i,r)&gt;=i−l+1 的最大的 ii...]]></description><category></category></item><item><title><![CDATA[【LuoguP5328】[ZJOI2019]浙江省选]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/92841895</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/92841895</guid><author>element_hero</author><pubDate>Wed, 19 Jun 2019 19:21:20 +0800</pubDate><description><![CDATA[题目链接
题意
给你一堆斜率和纵截距都为正的直线 ，求对于一个条直线是否存在一个 x 使得在这条直线在 x 处能是前 m 大，输出最高能够达到的排名(排名定义为在 x 处严格大于自己的直线条数+1) ，如果不能输出 -1。
n≤105,m≤20n\leq 10^5 , m\leq 20n≤105,m≤20
Sol
一道思路不算太难但写起来很烦人的题。
对于 m=1m=1m=1 ，我们发现这个就是 ...]]></description><category></category></item><item><title><![CDATA[【LuoguP4557】[JSOI2018]战争]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/92807976</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/92807976</guid><author>element_hero</author><pubDate>Wed, 19 Jun 2019 11:02:03 +0800</pubDate><description><![CDATA[题目链接
题意
给你两个点集。
q次询问 , 每次把其中一个点集往一个方向移动 , 问两个点集的凸包还有没有交。
Sol
闵可夫斯基和板子题。
把问题做如下转换:
我们本来两个凸包相交是相当于是对于移动向量 ccc 来说 , 存在分别在两个点集中的向量 a,ba,ba,b 有 b+c=ab+c=ab+c=a
也就是 c=a−b,c=a+(−b)c=a-b, c=a+(-b)c=a−b,c=a+(−...]]></description><category></category></item><item><title><![CDATA[【LuoguP4081】[SCOI2015]小凸想跑步]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/92693356</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/92693356</guid><author>element_hero</author><pubDate>Mon, 17 Jun 2019 19:56:29 +0800</pubDate><description><![CDATA[题目链接
题意
给你一个凸多边形,求出在其内部选择一个点,这个点与最开始输入的两个点形成的三角形是以该点对凸多边形三角剖分的三角形中面积最小的一个三角形的概率。
Sol
答案就是 可行域面积与该凸多边形面积之比。
通过数学方法列出第一个三角形和其他三角形面积关系的式子,解出来发现都是一个半平面,所以我们要做的就是快速求解半平面交。
把所有要加入的直线用向量表示 , 按照极角排序 ( 用 atan2...]]></description><category></category></item><item><title><![CDATA[【LuoguP4081】[USACO17DEC]Standing Out from the Herd]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/90407163</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/90407163</guid><author>element_hero</author><pubDate>Tue, 21 May 2019 15:03:36 +0800</pubDate><description><![CDATA[题目链接
题意
给定多个字符串，每个串中仅在该串中出现的本质不同的子串个数。
Sol
多串匹配想到用广义SAM。
之后从串的匹配角度不是很好做。发现一个本质不同的串最多只会贡献到一个串的答案里。
那么建完广义SAM后，如果我们能够知道那些点是只有一个串能够到达并且知道是哪个的话我们就可以直接把这个点代表的本质不同的串给贡献到对应串的答案中。
这个很好办，我们在建广义SAM的时候不考虑串之间的匹配，...]]></description><category></category></item><item><title><![CDATA[【LuoguP5383】[模板]普通多项式转下降幂多项式]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/90288475</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/90288475</guid><author>element_hero</author><pubDate>Fri, 17 May 2019 10:31:13 +0800</pubDate><description><![CDATA[传送门
Sol
(怎么老是有人喜欢出新的多项式毒瘤板子,懒得整到一起了)
核心就是把 幂用下降幂来代替。
使用斯特林数展开幂为下降幂:
xn=∑i=0n(xi)i!S(n,i)=∑i=0nS(n,i)xi‾x^n=\sum_{i=0}^n{x\choose i}i!S(n,i)=\sum_{i=0}^nS(n,i)x^{\underline i}xn=i=0∑n​(ix​)i!S(n,i)=i=0...]]></description><category></category></item><item><title><![CDATA[【UOJ#37】 [清华集训2014] 主旋律]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/90267764</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/90267764</guid><author>element_hero</author><pubDate>Thu, 16 May 2019 17:18:17 +0800</pubDate><description><![CDATA[题目链接
题目描述
给定一张强联通图,求有多少种边的存在情况满足图依然强联通。
n≤15n\leq15n≤15
Sol
首先正难则反,考虑用总数减去不强联通的。
考虑一张不强联通的图，缩点后一定是一个 DAG，好像可以对 DAG 进行计数。
诈一看这个做不了，因为缩点后计数是不可能在dp过程中实现的。
但我们按照 DAG 计数的思路的话其实并不需要真的知道 DAG 缩点后的形态。
我们类似 DAG...]]></description><category></category></item><item><title><![CDATA[【BZOJ 3682】Phorni]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/90053893</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/90053893</guid><author>element_hero</author><pubDate>Fri, 10 May 2019 10:54:00 +0800</pubDate><description><![CDATA[题目链接
题目描述
Phorni 是一个音之妖精,喜欢在你的打字机上跳舞。
一天,阳光映射到刚刚淋浴过小雨的城市上时,Phorni 用魔法分裂出了许多个幻影,从 1 到 n 编号。
她的每一个幻影都站在打出的字符串的一个位置上,多个幻影可以站在同一个位置上。
每一个幻影代表的字符串即为从它站立位置开始的后缀,注意站立位置是从右往左数的。
让我们形式化地描述一下,若第 i 个幻影站在 Pi 上,那么...]]></description><category></category></item><item><title><![CDATA[【BZOJ 3681】Arietta]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/89930576</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/89930576</guid><author>element_hero</author><pubDate>Tue, 07 May 2019 21:58:57 +0800</pubDate><description><![CDATA[传送门
题目描述
Arietta 的命运与她的妹妹不同,在她的妹妹已经走进学院的时候,她仍然留在山村中。
但是她从未停止过和恋人 Velding 的书信往来。一天,她准备去探访他。
对着窗外的阳光,临行前她再次弹起了琴。
她的琴的发声十分特殊。
让我们给一个形式化的定义吧。
所有的 n 个音符形成一棵由音符 C ( 1 号节点) 构成的有根树,每一个音符有一个音高 Hi 。
Arietta 有 m...]]></description><category></category></item><item><title><![CDATA[【UOJ#77】A+B Problem]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/89924355</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/89924355</guid><author>element_hero</author><pubDate>Tue, 07 May 2019 16:47:29 +0800</pubDate><description><![CDATA[传送门
题目描述
略
Sol
看到选择黑白收益不同，然后还可能有代价。
我们想到用网络流解决，并且这应该是用总可能收益-最小割得到答案。
考虑初步建图，发现那个限制可以直接 n2n^2n2 解决。
我一开始是拆了点的，但是这样没有必要，而且可能会出现一个格子黑白两种颜色都不选的情况。
所以就是黑色边从源点连出，然后白色边连到汇点。这样割掉哪条边代表不选这个颜色。
因为对于一个奇怪的格子代价只算一次...]]></description><category></category></item><item><title><![CDATA[【UOJ#394】[NOI2018] 冒泡排序]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/89765670</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/89765670</guid><author>element_hero</author><pubDate>Thu, 02 May 2019 22:07:48 +0800</pubDate><description><![CDATA[题目链接
题意
求有多少个字典序严格大于给定排列 qiq_iqi​ 的排列满足其逆序对数(冒泡排序需要交换的次数)达到下限 12∑i=1n∣i−pi∣\frac{1}{2}\sum_{i=1}^n |i-p_i|21​∑i=1n​∣i−pi​∣
Sol
很神仙的一题。
首先我们打表 (滑稽)。
发现当没有字典序限制时的答案就是卡特兰数。
考虑感性理解，那么考虑卡特兰数的经典应用，它是最长下降子序列...]]></description><category></category></item><item><title><![CDATA[【LuoguP5206】[WC2019] 数树]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/89456319</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/89456319</guid><author>element_hero</author><pubDate>Mon, 22 Apr 2019 17:12:33 +0800</pubDate><description><![CDATA[题目链接
题意
定义 F(T1,T2)=yn−commonF(T_1,T_2)=y^{n-common}F(T1​,T2​)=yn−common 其中 commoncommoncommon 为两棵树 T1,T2T_1,T_2T1​,T2​ 的公共边条数。
三种问题
1.给定 T1,T2T_1,T_2T1​,T2​
2.给定 T1T1T1，T2T_2T2​任意
3.均任意
Sol
第一种 std::...]]></description><category></category></item><item><title><![CDATA[【UOJ#450】[集训队作业2018] 复读机]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/89371459</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/89371459</guid><author>element_hero</author><pubDate>Thu, 18 Apr 2019 09:27:45 +0800</pubDate><description><![CDATA[题目链接
题目描述
群里有kkk个不同的复读机。为了庆祝平安夜的到来，在接下来的nnn秒内，它们每秒钟都会选出一位优秀的复读机进行复读。非常滑稽的是，一个复读机只有总共复读了ddd的倍数次才会感到快乐。问有多少种不同的安排方式使得所有的复读机都感到快乐。
Sol
发现 ddd 只有 333 ， 很可能需要分开讨论。
d=1d=1d=1 就是 knk^nkn
d=2d=2d=2:
其实容易发现这是一...]]></description><category></category></item><item><title><![CDATA[【Luogu5294】[HNOI2019]序列]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/89366278</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/89366278</guid><author>element_hero</author><pubDate>Wed, 17 Apr 2019 22:11:51 +0800</pubDate><description><![CDATA[题目链接
题意
给定一个序列，要求将它改造成一个非降序列，修改一个数的代价为其改变量的平方。
最小化总代价。
另有QQQ 次询问，每次修改一个位置上的数。(询问之间独立,互不影响)
Sol
神仙 保序回归 问题，完全不会。
首先是一个暴力的每次 O(n)O(n)O(n) 做法。
结论是: 最后的结果序列一定是一段段的相同的数，其值为段中所有元素的平均数。
所以暴力就是维护一个单调栈。
每次加入一个...]]></description><category></category></item><item><title><![CDATA[【LuoguP5280】[ZJOI2019] 线段树]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/89342287</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/89342287</guid><author>element_hero</author><pubDate>Tue, 16 Apr 2019 21:11:05 +0800</pubDate><description><![CDATA[题目链接
题目描述
略
Sol
显然不能直接暴力模拟。
观察这个东西本质在干什么，就是某一次操作可能进行可能不进行，然后求所有情况下被标记节点总数。
这个显然可以转化为概率问题，每次有二分之一的概率进行，问最后期望多少个节点被标记。
只需要最后把答案乘上 2t2^t2t ， ttt 为操作次数就行了。
所以我们只需要求出一个点有标记的概率，这个似乎可以一次次递推得到。
于是我们讨论一些情况。容易发...]]></description><category></category></item><item><title><![CDATA[【LuoguP5289】[十二省联考2019] 皮配]]></title><link>https://blog.youkuaiyun.com/element_hero/article/details/89335341</link><guid>https://blog.youkuaiyun.com/element_hero/article/details/89335341</guid><author>element_hero</author><pubDate>Tue, 16 Apr 2019 15:58:30 +0800</pubDate><description><![CDATA[题目链接
题目描述
略
Sol
一道背包问题
首先暴力做法设 dp[i][j][k]dp[i][j][k]dp[i][j][k] 表示前 iii 个城市的学校被分到第一阵营 jjj 人 第一门派 kkk 人的方案数。
中间一个城市里的学校就再枚举是分到那个阵营然后01背包 dp 一下门派就行了。
然后似乎就没有什么 dp 上的优化空间了。
注意到 k=0k=0k=0 时，一个学校被分到一个阵营后，...]]></description><category></category></item></channel></rss>