03 2021 档案

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