03 2021 档案
摘要:一个显然的O(n2)算法:考虑从左向右扫描,维护一个栈。 当栈顶的字符和新的字符可以合并时,则把栈顶的字符和新字符合并后把新字符插入栈。 正确性显然。 #include<bits/stdc++.h> using namespace std; #define N 200010 int t[30]
阅读全文
摘要:简单题 设fi,j表示选择了i个关键点,最后一个关键点选择的位置是j,[1,j]的最小代价。 显然fi,j=min,w(i,j)为区间i,j左边/右边放置基站的代价函数。 由于我们知道当前这一段左/右最近的点,
阅读全文
摘要:被卡常数的代码: #include<bits/stdc++.h> #define int long long #define N 300010 #define mo 1000000007 #pragma GCC optimize(3) int p[N],vi[N],ct,b[N],d[N],e[N]
阅读全文
摘要:先考虑怎么求lcm,考虑从序列后部插入一个数y的影响。 \frac{xy}{(x,y)}=x\frac{y}{(x,y)} x是容易计算的,边算边取模即可。 \frac{(x,y)}这个东西很难计算,因为x很大。 但是(x,y)=(x\mod y,y),所以可以从左到右计
阅读全文
摘要:根据题意,我们考虑从小到大枚举树上每个节点,并且让它的值最小。 一组已经确定的值的序列,序列上的每个点都会要求它的子树的值大于等于它。 已经确定的值已经满足条件,所以只需要考虑未被确定的值的限制,也就是要求若干子树(若干dfs序连续段)的值\leq 某个数。 考虑使用二分图完美匹配。 把每个数从
阅读全文
摘要:给出一个时间复杂度为O(d(k)\log_2n\log_2c(k))(c是质因数个数函数)的算法。 原式就是vk=\prod a_i,v,k互质。 k已经给出,设唯一分解为p_1^....p_n^ 则v的p_1,p_2...p_n的指数必须是0,其他任意。 就是给
阅读全文
摘要:1_998244353: 由于998244353是十分常见的模数,所以可以猜想到取模。 1,19,361....是19^x。 前两个点可以直接用快速幂计算。 第三个点由于数比较大,所以使用euler定理,把幂次模998244352后快速幂。 namespace s1{ int mo=
阅读全文
摘要:对一个多项式A的快速幂可以在O(n\log_2n)的时间内计算多项式模xn的乘方。 如果多项式的项数m较少,则我们有一个O(nm)的算法。 (A^k(x))'=kA^{k-1}(x)A'(x) A^k(x)'A(x)=kA^k(x)A'(x) \([x^n]A^k
阅读全文
摘要:如果当R-L+1很小时怎么做? 完全平方数的质因数分解的每个质数的质数肯定是0。 考虑每个数的唯一分解,把它的每个质因数模2后视为一个向量。 则判定是否合法,等于判定[L,R]中是否存在一个子集S使得S中的所有质因数分解向量在xor下=0。 答案就是2^{自由基数量}
阅读全文
摘要:研究两个图G1和G2的乘积的连通块的性质(agc011c) 根据定义,两个点(a,b),(c,d)连通的条件:存在a,b和c,d之间长度为x的路径 考虑G1的每个连通块和G2每个连通块合并后结果: 有任一是孤立点:显然不会连出任何边。 两个非二分图:会发现在x足够
阅读全文
摘要:会发现,无论操作的顺序怎么样,每个节点形成的区域都是个矩形。 发现两个点连通要行/列同时连通。 假设行向左走x,右走y次,则x+y\geq X坐标差绝对值。 我们只需要关心x+y,所以把边权设为这个值。 Y坐标类似。 暴力连边边数达到(nm)^2,不可接受。 但是发现如果存在
阅读全文
摘要:简单的图论题。 第一问显然答案是最短路。 第二问中,由于有旅行路程最短的限制,旅行的过程一定在最短路dag上。 建立最短路dag。(dag的条件非常重要) 每条铁路会被不在最短路dag上的所有边分割成若干个片段。 考虑dp,设f_i表示从源点到达i的最小代价。 可以枚举i所在的所有铁路线
阅读全文
摘要:和标算不同的做法。 先建立最短路树。 引理:最多只会经过一条非树边。 画图会发现是正确的 建立源点开始的最短路树,把源点的每一个子树染色。 枚举每条边,如果两端点颜色不同,则统计答案。 时间复杂度O(n^3) #include<bits/stdc++.h> using namespace std
阅读全文
摘要:考虑平面图的euler公式:V-E+F=1+C V是好算的。 E可以把边分成横/竖后进行二维前缀和。 F就有点难算。 考虑给每个区域连通块任取一个点作为关键点。 用二维前缀和计算区域内关键点个数,设为G。 发现如果关键点在矩形内,则该矩形一定会和连通块相交。 然而可能有一些连
阅读全文
摘要:考虑枚举每个数v,求出网格中包含v的方案。 考虑正难则反,使用r^n减去网格中不包含x的方案。 这要求数列中不能存在两个数a_x*a_y=v(\mod p) 由于p是奇质数,所以每个数a_x会对应唯一的a_y。特别的,当v=0,0和所有数互斥。 虽然r很大
阅读全文
摘要:引理1:如果(x,y)合法,则(y,x)合法 发现倒着用栈扫一遍还是能够成功匹配 引理2:如果(x,y)合法,(y,z)合法,则(x,z)合法 用栈匹配(x,y)栈会弹空,由于栈是空的,所以匹配(x,z)也会成功。 构造一新图G',如果存在(x,y)合法,则$G'
阅读全文
摘要:先考虑暴力dp: 设f_{i,j}\(表示经过\)(i,j)的概率,可以通过枚举f_{a,b}(a,b是D倍数)统计答案。 递推方法:f_{i,j}=Af_{i,j-1}+Bf_{i-1,j} 把一斜行写成生成函数形式:设F_=\sum f_{j,i-j}x^j 转移方程
阅读全文