- 博客(18)
- 收藏
- 关注
原创 Solution:CF877E(Danil and a Part-time Job)
题目链接Link:CF877E解题思路一道DFS序的好题。DFS序想必大家都知道,就是用DFS遍历树或图时访问节点的顺序。我们一般说的DFS序,都是指树的DFS序。以下的DFS序都是从根开始的树上DFS序。DFS序有一个重要的性质:任何一个子树,它的节点在DFS序中一定排成连续的一段。这时,我们就可以把某些修改子树+查询问题转为区间修改+查询问题。我们这一题实际上就是线段树。先搞DFS序,记录每一个节点对应的区间,然后线段树即可。代码实现#include <iostream>#
2022-01-18 16:02:48
285
原创 Solution:P2502([HAOI2006]旅行)
题目链接Link:P2502解题思路如果我们知道了路径中最大的速度,那么显然让最慢的路越快越好。于是我们可以枚举最快的路,得到最小的路就交给Kruskal来实现。代码实现#include <algorithm>#include <iostream>#include <array>using namespace std;struct edge{ int from,to,val; bool operator>(const edge&
2021-12-19 20:52:31
190
原创 Solution:P2449([SDOI2005]矩形)
题目链接Link:P2449解题思路我们可以使用并查集。当两个矩形有交叠时,将他们所在的集合合并。最后统计有几个不同的集合即可。注意,只有顶点重合不算重合。代码实现#include <unordered_set>#include <iostream>#include <array>using namespace std;array<pair<pair<int,int>,pair<int,int>>,700
2021-12-18 15:11:49
360
原创 (Luogu Solution)CF1608A:Find Array
【题目链接】Link:CF1608A【解题思路】我们知道,当 n>1n>1n>1 时,显然 n+1n+1n+1 不能被 nnn 整除。显然 n+1>nn+1>nn+1>n。那么我们可以让 ai=ai−1+1,a1=2a_i=a_{i-1}+1,a_1=2ai=ai−1+1,a1=2,即可构造出一个合法的数组。【代码实现】#include <iostream>#include <array>using namesp.
2021-12-18 08:24:53
450
原创 Solution:CF525E(Anya and Cubes)
题目链接[Link:CF525E](Anya and Cubes)解题思路折半搜索。存下前半部分所有可能的和,在搜后半部分时尝试配对。但是,由于 !!! 的个数限制,我们要分出 k+1k+1k+1 个存前半部分结果的桶,fi,jf_{i,j}fi,j 为放 iii 个 !!! 凑出 jjj 的方案数。另外,阶乘数组只要处理到 19!19!19! 即可。因为如果再大那么显然由于太大不可能成为 SSS 的一部分。Code#include <unordered_map>#inclu
2021-12-09 16:44:39
335
原创 Solution:CF163D(Large Refrigerator)
题目链接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=Vbc=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
2021-12-08 17:13:41
184
原创 Solution:P4555([国家集训队]最长双回文串)
题目链接Link:P4555解题思路下文中,字符串指的是经过Manacher处理过的,已经加了分隔符的字符串。这道题其实就是说,是否有某两个回文串头尾相接。我们可以用Manacher先过一遍。现在,我们怎么找两个头尾相接的(不一定是最长的)回文串?我们可不能单纯的用Manacher算每个定中心最长回文子串中是否有两个相切。因为实际上,相交的两个回文子串也可以通过舍弃第一或者第二个回文串的某些部分拆成两个相切的回文子串。那么,我们究竟要求什么呢?对于每一个Manacher算出的定中心最长回文子
2021-12-04 16:56:38
147
1
原创 (Luogu Solution)P4920:[WC2015]未来程序
【题目链接】Link:P4920【解题思路】Note: 以下如果某个 Testcase 的数字标成红,说明这个 Testcase 的做法不是我个人独立想出来的。例如,Testcase 6\text{Testcase }\color{red}6Testcase 6。Testcase 1\text{Testcase }1Testcase 1显然是求 ab mod cab\bmod cabmodc。用__int128即可。Testcase&nbs.
2021-12-04 11:05:30
168
原创 (Luogu Solution)SP10069:KOMPICI - Kompići
【题目链接】Link:SP10069【解题思路】首先,评论区里有这么一句提示:Hint: represent each string as bit mask of size 101010 and count.(提示:把每个数字转换成长度为 101010 的二进制数再计数。)那么,这个二进制数究竟代表什么意思呢?题目说“有同样的数字”,那么我们只需要保存数字是否出现即可。把每个数字转换为 101010 位二进制数后,我们该怎么统计呢?考虑对于每一个元素,统计它前面有多少个数可以和它.
2021-12-04 10:58:18
206
原创 (Luogu Solution)SP5152:BFALG - Brute-force Algorithm EXTREME
【题目链接】Link:SP5152【前置知识】矩阵快速幂,矩阵加速扩展欧拉定理【解题思路】看到这个数据范围,我们应该能想到,这是一道结论题。再看一下SPOJ几页的 0.00s0.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.
2021-12-04 10:44:19
85
原创 (Luogu Solution)CF337E:Divisor Tree
本题解搬自 zimpha’s blog:Zeckendorf Arithmetic。【题目链接】Link:P3424【解题方法】题目中的整数表示方式其实就是Zeckendorf representation。这一题实际上就是做加法。首先,我们像高精加一样,直接把两个数的Zeckendorf representation加起来。就是,一位一位的加起来。拿样例举例,加完了之后像这样:1 1 0 2 0(题目中输入是从低位到高位,这里采用从高位到低位)。然后,我们考虑把那些不合法的地方消去。
2021-12-04 10:38:47
95
原创 (Luogu Solution)P3424:[POI2005]SUM-Fibonacci Sums
本题解搬自 zimpha’s blog:Zeckendorf Arithmetic。【题目链接】Link:P3424【解题方法】题目中的整数表示方式其实就是Zeckendorf representation。这一题实际上就是做加法。首先,我们像高精加一样,直接把两个数的Zeckendorf representation加起来。就是,一位一位的加起来。拿样例举例,加完了之后像这样:1 1 0 2 0(题目中输入是从低位到高位,这里采用从高位到低位)。然后,我们考虑把那些不合法的地方消去。
2021-12-04 10:36:52
91
原创 为什么NTT中可以用原根代替FFT的单位根?
缘起WA王子问了我这个问题……然后我也不知道。于是我打算就在这里推一推。FFT:ωn\omega_nωn的性质所有 ωni(0≤i<n)\omega_n^i(0\leq i<n)ωni(0≤i<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
2021-08-21 17:41:54
351
原创 P5285 [十二省联考2019]骗分过样例
题目链接Link:P5285前置知识快速幂;Miller-Rabin 素数判定;莫比乌斯函数(μ\muμ);原根,以及求一个数所有原根的 Θ(φ(n)logloglogφ(n))\Theta(\varphi(n)\log\log\log\varphi(n))Θ(φ(n)logloglogφ(n)) 算法。题目大意给定所有的数据,对于每个数据点猜这个测试点的功能并实现。解题思路Testcase 1∼71\sim71∼7Testcase 1∼31\sim31∼3Testcase
2021-08-18 20:51:53
489
原创 P6091 【模板】原根
前置知识定义 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
2021-08-16 21:54:22
132
I wanna touch more traps
2023-07-22
Data (;lkasdf;lkjasdflkjasdf;lkjasdf;lkjasdf;lkjasdf;lkjasdfl;k)
2023-07-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人