<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Unnamed_Cube的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Unnamed_Cube</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Unnamed_Cube]]></copyright><item><title><![CDATA[Solution:CF877E(Danil and a Part-time Job)]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122511340</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122511340</guid><author>Unnamed_Cube</author><pubDate>Tue, 18 Jan 2022 16:02:48 +0800</pubDate><description><![CDATA[题目链接
Link:CF877E
解题思路
一道DFS序的好题。
DFS序想必大家都知道，就是用DFS遍历树或图时访问节点的顺序。我们一般说的DFS序，都是指树的DFS序。以下的DFS序都是从根开始的树上DFS序。
DFS序有一个重要的性质：任何一个子树，它的节点在DFS序中一定排成连续的一段。这时，我们就可以把某些修改子树+查询问题转为区间修改+查询问题。
我们这一题实际上就是线段树。先搞DFS序，记录每一个节点对应的区间，然后线段树即可。
代码实现
#include &lt;iostream&gt;
#]]></description><category></category></item><item><title><![CDATA[Solution:P5824(十二重计数法)]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121578937</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121578937</guid><author>Unnamed_Cube</author><pubDate>Thu, 13 Jan 2022 19:46:27 +0800</pubDate><description><![CDATA[An interesting problem.
Try to AC it now!]]></description><category></category></item><item><title><![CDATA[Solution:CF242E(XOR on Segment)]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122445672</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122445672</guid><author>Unnamed_Cube</author><pubDate>Wed, 12 Jan 2022 15:50:18 +0800</pubDate><description><![CDATA[分块过拆位线段树（]]></description><category></category></item><item><title><![CDATA[一些值得注意的东西]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122445651</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122445651</guid><author>Unnamed_Cube</author><pubDate>Wed, 12 Jan 2022 08:22:14 +0800</pubDate><description><![CDATA[Something you should mind?]]></description><category></category></item><item><title><![CDATA[Solution:P2502([HAOI2006]旅行)]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122029799</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122029799</guid><author>Unnamed_Cube</author><pubDate>Sun, 19 Dec 2021 20:52:31 +0800</pubDate><description><![CDATA[题目链接
Link:P2502
解题思路
如果我们知道了路径中最大的速度，那么显然让最慢的路越快越好。
于是我们可以枚举最快的路，得到最小的路就交给Kruskal来实现。
代码实现
#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;array&gt;

using namespace std;

struct edge
{
	int from,to,val;
	bool operator&gt;(const edge&amp;]]></description><category></category></item><item><title><![CDATA[Solution:P2449([SDOI2005]矩形)]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122012596</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122012596</guid><author>Unnamed_Cube</author><pubDate>Sat, 18 Dec 2021 15:11:49 +0800</pubDate><description><![CDATA[题目链接
Link:P2449
解题思路
我们可以使用并查集。当两个矩形有交叠时，将他们所在的集合合并。
最后统计有几个不同的集合即可。
注意，只有顶点重合不算重合。
代码实现
#include &lt;unordered_set&gt;
#include &lt;iostream&gt;
#include &lt;array&gt;

using namespace std;

array&lt;pair&lt;pair&lt;int,int&gt;,pair&lt;int,int&gt;&gt;,700]]></description><category></category></item><item><title><![CDATA[(Luogu Solution)CF1608A:Find Array]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122008173</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/122008173</guid><author>Unnamed_Cube</author><pubDate>Sat, 18 Dec 2021 08:24:53 +0800</pubDate><description><![CDATA[【题目链接】

Link:CF1608A

【解题思路】

我们知道，当 n&gt;1n&gt;1n&gt;1 时，显然 n+1n+1n+1 不能被 nnn 整除。显然 n+1&gt;nn+1&gt;nn+1&gt;n。
那么我们可以让 ai=ai−1+1,a1=2a_i=a_{i-1}+1,a_1=2ai​=ai−1​+1,a1​=2，即可构造出一个合法的数组。

【代码实现】

#include &lt;iostream&gt;
#include &lt;array&gt;

using namesp.]]></description><category></category></item><item><title><![CDATA[Solution:CF525E(Anya and Cubes)]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121831329</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121831329</guid><author>Unnamed_Cube</author><pubDate>Thu, 09 Dec 2021 16:44:39 +0800</pubDate><description><![CDATA[题目链接
[Link:CF525E](Anya and Cubes)
解题思路
折半搜索。
存下前半部分所有可能的和，在搜后半部分时尝试配对。
但是，由于 !!! 的个数限制，我们要分出 k+1k+1k+1 个存前半部分结果的桶，fi,jf_{i,j}fi,j​ 为放 iii 个 !!! 凑出 jjj 的方案数。
另外，阶乘数组只要处理到 19!19!19! 即可。因为如果再大那么显然由于太大不可能成为 SSS 的一部分。
Code
#include &lt;unordered_map&gt;
#inclu]]></description><category></category></item><item><title><![CDATA[Solution:CF163D(Large Refrigerator)]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121795825</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121795825</guid><author>Unnamed_Cube</author><pubDate>Wed, 08 Dec 2021 17:13:41 +0800</pubDate><description><![CDATA[题目链接
Link:CF163D
解题思路
爆搜。
首先假设 a≤b≤ca\leq b\leq ca≤b≤c，则 a≤V3,b≤Vaa\leq\sqrt[3] V,b\leq\sqrt\frac V aa≤3V​,b≤aV​​。
以上是可行性剪枝。
然后，以下是最优性剪枝：
abc=Vabc=Vabc=V
bc=Vabc=\frac V abc=aV​
得 S2=a(b+c)+Va\frac S 2=a(b+c)+\frac V a2S​=a(b+c)+aV​。
根据基础不等式有：
S2≤2aVa+Va\f]]></description><category></category></item><item><title><![CDATA[Solution:P4555([国家集训队]最长双回文串)]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121711883</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121711883</guid><author>Unnamed_Cube</author><pubDate>Sat, 04 Dec 2021 16:56:38 +0800</pubDate><description><![CDATA[题目链接
Link:P4555
解题思路
下文中，字符串指的是经过Manacher处理过的，已经加了分隔符的字符串。
这道题其实就是说，是否有某两个回文串头尾相接。
我们可以用Manacher先过一遍。
现在，我们怎么找两个头尾相接的（不一定是最长的）回文串？
我们可不能单纯的用Manacher算每个定中心最长回文子串中是否有两个相切。因为实际上，相交的两个回文子串也可以通过舍弃第一或者第二个回文串的某些部分拆成两个相切的回文子串。
那么，我们究竟要求什么呢？对于每一个Manacher算出的定中心最长回文子]]></description><category></category></item><item><title><![CDATA[(Luogu Solution)P4920:[WC2015]未来程序]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121712751</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121712751</guid><author>Unnamed_Cube</author><pubDate>Sat, 04 Dec 2021 11:05:30 +0800</pubDate><description><![CDATA[【题目链接】

Link:P4920

【解题思路】

Note: 以下如果某个 Testcase 的数字标成红，说明这个 Testcase 的做法不是我个人独立想出来的。例如，Testcase&nbsp;6\text{Testcase }\color{red}6Testcase&nbsp;6。

Testcase&nbsp;1\text{Testcase }1Testcase&nbsp;1

显然是求 ab mod cab\bmod cabmodc。
用__int128即可。

Testcase&nbs.]]></description><category></category></item><item><title><![CDATA[(Luogu Solution)SP10069:KOMPICI - Kompići]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121712600</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121712600</guid><author>Unnamed_Cube</author><pubDate>Sat, 04 Dec 2021 10:58:18 +0800</pubDate><description><![CDATA[【题目链接】

Link:SP10069

【解题思路】

首先，评论区里有这么一句提示：

Hint: represent each string as bit mask of size 101010 and count.（提示：把每个数字转换成长度为 101010 的二进制数再计数。）

那么，这个二进制数究竟代表什么意思呢？
题目说“有同样的数字”，那么我们只需要保存数字是否出现即可。
把每个数字转换为 101010 位二进制数后，我们该怎么统计呢？
考虑对于每一个元素，统计它前面有多少个数可以和它.]]></description><category></category></item><item><title><![CDATA[(Luogu Solution)SP5152:BFALG - Brute-force Algorithm EXTREME]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121712334</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121712334</guid><author>Unnamed_Cube</author><pubDate>Sat, 04 Dec 2021 10:44:19 +0800</pubDate><description><![CDATA[【题目链接】

Link:SP5152


【前置知识】


矩阵快速幂，矩阵加速


扩展欧拉定理




【解题思路】


看到这个数据范围，我们应该能想到，这是一道结论题。
再看一下SPOJ几页的 0.00s⁡0.00\operatorname s0.00s，我们应该会觉得这题正解 Θ(1)\Theta(1)Θ(1)。
那么，我们推一下结论吧。
首先，我们设 f(n)=1f(n)=1f(n)=1，那么计算 Fn,fF_{n,f}Fn,f​ 中调用 fff 的次数即为 Fn,fF_{n,f}Fn,f​.]]></description><category></category></item><item><title><![CDATA[(Luogu Solution)CF337E:Divisor Tree]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121712238</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121712238</guid><author>Unnamed_Cube</author><pubDate>Sat, 04 Dec 2021 10:38:47 +0800</pubDate><description><![CDATA[本题解搬自 zimpha’s blog:Zeckendorf Arithmetic。

【题目链接】

Link:P3424

【解题方法】

题目中的整数表示方式其实就是Zeckendorf representation。
这一题实际上就是做加法。
首先，我们像高精加一样，直接把两个数的Zeckendorf representation加起来。就是，一位一位的加起来。拿样例举例，加完了之后像这样：1 1 0 2 0（题目中输入是从低位到高位，这里采用从高位到低位）。
然后，我们考虑把那些不合法的地方消去。]]></description><category></category></item><item><title><![CDATA[(Luogu Solution)P3424:[POI2005]SUM-Fibonacci Sums]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121712246</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/121712246</guid><author>Unnamed_Cube</author><pubDate>Sat, 04 Dec 2021 10:36:52 +0800</pubDate><description><![CDATA[本题解搬自 zimpha’s blog:Zeckendorf Arithmetic。

【题目链接】

Link:P3424

【解题方法】

题目中的整数表示方式其实就是Zeckendorf representation。
这一题实际上就是做加法。
首先，我们像高精加一样，直接把两个数的Zeckendorf representation加起来。就是，一位一位的加起来。拿样例举例，加完了之后像这样：1 1 0 2 0（题目中输入是从低位到高位，这里采用从高位到低位）。
然后，我们考虑把那些不合法的地方消去。]]></description><category></category></item><item><title><![CDATA[为什么NTT中可以用原根代替FFT的单位根？]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/119835752</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/119835752</guid><author>Unnamed_Cube</author><pubDate>Sat, 21 Aug 2021 17:41:54 +0800</pubDate><description><![CDATA[缘起
WA王子问了我这个问题……
然后我也不知道。
于是我打算就在这里推一推。
FFT：ωn\omega_nωn​的性质

所有 ωni(0≤i&lt;n)\omega_n^i(0\leq i&lt;n)ωni​(0≤i&lt;n) 各不相同。
ωni=ω2n2i\omega_n^i=\omega_{2n}^{2i}ωni​=ω2n2i​。
ωni=−ωnn2+i\omega_n^i=-\omega_n^{\frac{n}{2}+i}ωni​=−ωn2n​+i​
∑i=0n−1ωnki=0\sum_{i=0]]></description><category></category></item><item><title><![CDATA[P5285 [十二省联考2019]骗分过样例]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/119771841</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/119771841</guid><author>Unnamed_Cube</author><pubDate>Wed, 18 Aug 2021 20:51:53 +0800</pubDate><description><![CDATA[题目链接
Link:P5285
前置知识

快速幂；
Miller-Rabin 素数判定；
莫比乌斯函数（μ\muμ）；
原根，以及求一个数所有原根的 Θ(φ(n)log⁡log⁡log⁡φ(n))\Theta(\varphi(n)\log\log\log\varphi(n))Θ(φ(n)logloglogφ(n)) 算法。

题目大意
给定所有的数据，对于每个数据点猜这个测试点的功能并实现。
解题思路
Testcase 1∼71\sim71∼7
Testcase 1∼31\sim31∼3
Testcase]]></description><category></category></item><item><title><![CDATA[P6091 【模板】原根]]></title><link>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/119733605</link><guid>https://blog.youkuaiyun.com/Unnamed_Cube/article/details/119733605</guid><author>Unnamed_Cube</author><pubDate>Mon, 16 Aug 2021 21:54:22 +0800</pubDate><description><![CDATA[前置知识
定义 aaa 模 bbb 的阶为使 an≡1(modb)a^n\equiv 1\pmod ban≡1(modb) 的最小正整数 nnn，记作 δb(a)\delta_b(a)δb​(a)。
定义 aaa 是 bbb 的原根，当且仅当 1≤a≤b∧δb(a)=φ(b)1\leq a\leq b\land\delta_b(a)=\varphi(b)1≤a≤b∧δb​(a)=φ(b)。
题目大意
求正整数 nnn 的所有原根。
解题思路
如果一个数 nnn 有原根，它的最小原根是不会大于 n4\sqrt]]></description><category></category></item></channel></rss>