- 博客(37)
- 收藏
- 关注
原创 CSP-S 2020 题解
CSP-S 2020 题解难度系数:3.8753.8753.875题号题目思维难度代码难度备注1儒略日35模拟2动物园22无3函数调用54拓扑排序,递推4贪吃蛇73T1思维难度:333代码难度:555分析将时间分成 公元前、1.1.1 到 4.10.1582 、 15.10.1582以后 三段分别处理即可,没有太大思维难度。实现较繁琐,具体看代码。代码// 代码中的各个常数用计算器或写个程序就能很快算出,不再
2020-11-18 15:19:01
1121
1
原创 带权二分总结
简介带权二分,又叫 wqs 二分、DP 的凸优化,是一种对最优化问题的 DP 的优化。关于带权二分的题目通常会有一个 KKK 的限制,即需要求某些条件恰好为 KKK 时的最优解。如果关于 KKK 的最优解函数图像是凸的(上或下),我们就可以使用此算法。通常来说,带权二分可以将 DP 中关于限制的维度以 O(log2V)\Omicron(\log_2 V)O(log2V) 的时间全部压掉(其中 VVV 为 KKK 在精度内的值域大小),能极大优化时间和空间。算法我们设最优解函数为 fff,题目所求
2020-10-25 10:30:03
568
原创 最小割树
算法最小割树是一个用于快速求无向图上任意两点间最小割的算法,对于一个图 GGG 的最小割树 TTT,它的定义如下:TTT 的节点与 GGG 一一对应,同时对于所有边 (u,v)∈T(u,v) \in T(u,v)∈T,满足其边权为原图中 u,vu,vu,v 两点间最小割,且在 TTT 中去掉这条边后剩下的两个不连通点集恰好为原图中 u,vu,vu,v 的最小割将原图分为的两个点集。显然,我们可以直接根据定义递归建树,并利用最小割最大流定理每次跑一边网络流,代码如下:void build(int
2020-10-23 10:48:02
468
原创 概率生成函数
我们定义一个离散随机变量 XXX 的概率生成函数为:F(z)=∑i=0+∞P(X=i)ziF(z)=\sum_{i = 0}^{+\infty}{\rm P}(X=i)z^iF(z)=i=0∑+∞P(X=i)zi它一些性质:F(1)=1F(1)=1F(1)=1E(X)=∑i=0+∞P(X=i)i=F′(1){\rm E}(X)=\sum\limits_{i=0}^{+\infty}{\rm P}(X=i)i=F'(1)E(X)=i=0∑+∞P(X=i)i=F′(1)V(X)=F′′(1)+
2020-10-20 09:49:52
3159
原创 圆方树总结
算法圆方树是一种化图为树的方法,它能很好的维护点双的信息并用一些在树上的数据结构来进一步优化,其构建方法如下:考虑到树的本质就是一个无环连通图,换句话说,没有点双连通分量。那么我们可以直接对每一个点双建一个新点,并将其向这个点双内所有点连边(为了保证性质,我们把两个点也看成是一个点双,也就是两个割点),这显然会得到一颗树,这就是圆方树。为什么叫圆方树呢?因为我们通常称树上原有的点为圆点,新建的点为方点。我们只要在方点上记录它所对应的点双上的信息,就可以在树上快速处理了。显然圆方树上每一条边都是连接一
2020-10-19 08:06:53
481
原创 2-SAT总结
算法介绍如果有多个布尔变量,必须满足一些限制条件(如某两数或为 true\rm truetrue),那么求解这些变量的问题就叫做 2-SAT 问题,在 OI\rm OIOI 中通常转化为图论问题求解。算法流程方便起见,下面我们将 true\rm truetrue 看做 111,false\rm falsefalse 看做000。首先我们考虑对每一个变量建两个点,分别代表这个变量取 0/10/10/1,不妨将变量 iii 的两点编号分别设为 i,i′i,i'i,i′ ,且我们称代表同一变量的两点互为
2020-10-16 10:26:46
443
原创 FWT总结
FWT我们考虑这样一个式子:Ck=∑i∘j=kAiBjC_k=\sum_{i \circ j=k}A_iB_jCk=i∘j=k∑AiBj其中∘\circ∘表示一种运算。如果我们令∘\circ∘表示加法,那么这就是我们熟悉的卷积,用FFT就可以快速计算了。但当∘\circ∘表示位运算的时候,我们要怎么做呢?回想加法卷积时,我们先是搞了一个变换DFT{\rm DFT}DFT,又搞了一个逆变换IDFT{\rm IDFT}IDFT,并使...
2020-10-13 20:30:33
637
原创 Min-Max容斥总结
下用maxk(S)\max_k(S)maxk(S)表示集合SSS的第kkk大元素(k⩽∣S∣k\leqslant|S|k⩽∣S∣),max(S)\max(S)max(S)表示集合SSS的最大元素,最小同理算法min-max容斥是一种用于求出给定集合第kkk大(小)元素的容斥,通常在比较元素大小较为困难时使用有一给定集合SSS,现希望求出maxk(S)\max_k(S)maxk(S),考虑构造系数ana_nan满足:maxk(S)=∑∅≠T⊆Sa∣T∣min(T)\max{_k}(
2020-10-12 10:48:23
3021
原创 Min_25筛总结
为了表述方便,下用P\mathbb PP表示素数集,并用p1<p2<⋯<pcp_1<p_2<\cdots<p_cp1<p2<⋯<pc表示111到nnn内的所有质数,ttt表示第一个大于n\sqrt nn的质数下标.特别的,我们令p0=1p_0=1p0=1.算法介绍一、简介Min_25筛是一种能快速求出某些满足特殊条件的积性函数前缀和的亚线性筛法,在通常的递归实现中复杂度为 Θ(n1−ϵ)\Theta(n^{1-\epsilon})Θ(
2020-10-10 09:25:15
233
原创 7.6-7.12
普通多项式转下降幂多项式由斯特林数基本性质,有xn=∑i=0ni!(xi)S(n,i)=∑i=0nS(n,i)xi‾x^n = \sum_{i = 0}^ni!\binom{x}{i}S(n,i) = \sum_{i = 0}^nS(n,i)x^{\underline{i}}xn=i=0∑ni!(ix)S(n,i)=i=0∑nS(n,i)xi所以∑i=0naixi=∑i=0nai∑j=0iS(i,j)xj‾=∑i=0nxi‾∑j=inajS(j,i)\sum_{i = 0}^na_ix^i
2020-07-12 23:27:06
157
原创 6.28-7.4
这周就做了两题,一题就要调三天。。。。多项式多点求值分治,对f(x)f(x)f(x)在xl,xl+1⋯xrx_l,x_{l + 1}\cdots x_rxl,xl+1⋯xr的值,构造p(x)=∏i=mid+1r(x−xi)p(x) = \prod_{i = mid +1}^r(x - x_i)p(x)=∏i=mid+1r(x−xi),设f(x)f(x)f(x)对p(x)p(x)p(x)取模后为g(x)g(x)g(x),易证对任意i∈[l,mid]i \in [l,mid]i∈[l,mid],均
2020-07-04 19:28:47
156
原创 4.21~4.27做题情况
多项式真的好恶心啊,这周几乎就是在写各种模板而且大部分都是黑题周六打了NOIOL2,T2线段树被卡常了,估分大概190-220吧多项式多项式乘法逆模板多项式求逆,推式子+NTT#include <iostream>#include <cstdio>using namespace std;const int maxn = 4e5 + 50,g = 3,mod ...
2020-04-27 17:25:53
219
原创 4.13 ~ 4.20做题情况
这周主要在做莫队及其各种变形算法和FFT/NTT的一些板子基础题小B的询问:莫队最最基础的莫队,没啥好说的#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>using namespace std;const int maxn = 5e4 + ...
2020-04-20 21:23:50
127
原创 4.7-4.12做题情况
这周看了半天后缀自动机没看懂,看了半天多项式又没看懂,wtnl[SDOI2008]洞穴勘测:LCT#include <iostream>#include <cstdio>using namespace std;const int maxn = 1e4 + 50;int n,m,x,y,top,fa[maxn],son[maxn][2],s[maxn],r[max...
2020-04-12 21:30:33
128
原创 3.23-4.6做题情况
上周月考没怎么做题,再加上忘了写,就两周放在一起了魔术球问题:网络流24题,最大流#include <iostream>#include <cstdio>#include <queue>#include <cmath>using namespace std;const int maxn = 3500,maxm = 3e4 + 50,in...
2020-04-06 22:39:39
149
原创 3.16~3.22做题情况
[HNOI2002]营业额统计: splay#include <iostream>#include <cstdio>#include <cmath>using namespace std;const int maxn = 33e3,inf = 1e9;int n,x,t1,t2,rt,cnt,ans,a[maxn],fa[maxn],num[maxn...
2020-03-22 20:08:08
102
原创 3.9~3.15做题情况
[NOI Online 提高组]序列:并查集,问题转化#include <iostream>#include <cstdio>#include <ctime>#include <cstdlib>using namespace std;const int maxn = 1e5 + 50;int T,n,m,cnt,a[maxn],b[ma...
2020-03-15 21:13:11
131
原创 HDU 4336 Card Collector 题解
题目链接分析:fSf_SfS表示取到集合SSS中任意一张卡的期望次数,显然有fS=1∑t∈Sptf_S = \frac1{\sum\limits_{t \in S}p_t}fS=t∈S∑pt1根据容斥原理,ans=∑(−1)∣S∣+1∗fSans = \sum(-1)^{|S| + 1}*f_Sans=∑(−1)∣S∣+1∗fS直接求就好了详见代码Code:#inclu...
2020-02-08 14:07:09
135
原创 洛谷P3622 [APIO2007]动物园 题解
分析:因为小朋友是否高兴取决于动物的在或不在,很容易想到状压DP。看一眼数据范围:n⩽104,c⩽5∗104n \leqslant 10 ^ 4,c \leqslant 5 * 10 ^ 4n⩽104,c⩽5∗104,似乎又不太可能。经过仔细观察,我们注意到一句话:每个小朋友站在大围栏圈的外面,可以看到连续的 555 个围栏我们发现每个小朋友是否高兴仅与他所能看到的555个围栏有关,...
2020-02-08 09:56:17
266
原创 洛谷P4735 最大异化和 / 可持久化Trie树模板 题解
分析:因为异或满足可减性,可以考虑像前缀和一样维护前缀异或和,即令sn=a1⊕a2⊕⋯⊕ans_n = a_1 \oplus a_2 \oplus \cdots \oplus a_nsn=a1⊕a2⊕⋯⊕an则有al⊕al+1⊕⋯⊕ar=sr⊕sl−1a_l \oplus a_{l + 1} \oplus \cdots \oplus a_r = s_r \oplus s_{l -...
2020-02-06 11:32:53
270
原创 manacher算法(洛谷P3805)
注:本文中讨论字符串下标均从1开始简介:manacher算法,主要用于求解字符串中回文串相关的问题,可以在O(n)O(n)O(n)的时间复杂度下处理出以字符串每个字符为中心的最长回文串基础概念与辅助变量:考虑到长度为奇、偶的字符串不好统一表示,我们在原字符串的每两个相邻字符中间加上一个符号(这里选的是#),这样任意一个回文串就都有一个确定且唯一的回文中心(即中间的字符),这里我们定义奇长度...
2020-02-06 10:52:58
144
原创 洛谷 P3193 [HNOI2008]GT考试 题解
题目链接分析:下用符号S(l,r)S(l,r)S(l,r)表示字符串SlSl+1⋯SrS_lS_{l + 1}\cdots S_rSlSl+1⋯Sr,本文中讨论的字符串下标均从111开始令fi,jf_{i,j}fi,j表示XXX前iii位数字末尾AAA最多匹配到第jjj位数字(即X(i−j+1,i)=A(1,j)X(i - j + 1,i) = A(1,j)X(i−j+1,i)=A(...
2020-02-06 09:11:42
162
原创 CF580E Kefa and Watch 题解
题目链接分析:看见将lll到rrr均修改成kkk这种区间修改操作就会想到 ———— 线段树!考虑用线段树维护字符串hashhashhash,那么询问呢?对于每个询问(l,r,k)(l,r,k)(l,r,k),我们需要确认这个区间是否满足(看原题面,洛谷上的翻译是错的):si=si+k (i=l,l+1,⋯ ,r−k)s_i = s_{i + k}\,(i = l,l + 1,\cdots...
2020-02-04 15:56:52
160
原创 CF8C Looking for Order 题解
题目链接分析:跟愤怒的小鸟没什么区别啊~~,还简单一些看这篇就好了注意要输出方案,开一个数组记录从哪转移来的就好了Code:#include <iostream>#include <cstdio>using namespace std;const int maxn = 25,inf = 1e9;int n,maxs,x[maxn],y[maxn],f[1...
2020-02-04 11:18:14
228
原创 洛谷P3966 [TJOI2013]单词 题解
题目链接分析:对nnn个字符串跑一边AC自动机,建立fail树(即由fail指针组成的树),每个点的点权为在Trie树上经过这个点的字符串的数量。则每个点所代表的的字符串在所有单词中出现次数显然为这个点在fail树上的子树的点权和,跑一遍树形DP,记录一下每个单词的位置输出即可。Code:#include <iostream>#include <cstdio>#...
2020-02-04 10:02:19
155
原创 CF960E Alternating Tree 题解
题目链接分析:单独计算每条链的贡献很耗时间,且不好计算,可以考虑分别计算每个点的贡献。 显然,且过uuu的链在树中只有三种情况:从uuu的子树 — 到uuu — 到uuu的子树外从uuu的子树 — 到uuu — 再回到uuu的子树从uuu的子树外 — 到uuu — 到uuu的子树注意题目中的链显然是有向的,所以1、3两种情况不能合并。 因为一个点的贡献与...
2020-02-03 12:12:20
197
原创 洛谷P1272重建道路 题解
题目链接分析:明显的树形背包令fu,if_{u,i}fu,i表示节点uuu的子树保留iii个节点所需要删去的最小边数(计算uuu与父亲节点的连边)。转移时对每一个点跑一边背包即可。令当前枚举到的儿子为vvv,有方程(注意不取当前儿子时为原来的fu,if_{u,i}fu,i,需单独拿出来):fu,i=min(fu,i,min1⩽j<i{fu,i−j+fv,j−2}) (i=1,...
2020-02-02 21:52:58
178
原创 CF248E Piglet's Birthday 题解
题目链接分析:令fi,jf_{i,j}fi,j表示第iii个货架上有jjj个没有被试吃的概率,令aia_iai表示第iii个货架的初始数量,ansansans为当前都被试吃过的货架期望数量,显然有初始化:fi,ai=1 (i=1,2,⋯ ,n),ans=∑i=1nfi,0f_{i,a_i} = 1\,(i = 1,2,\cdots,n),ans = \sum_{i = 1}^n{f_{i...
2020-02-02 20:08:36
130
原创 HDU4035 Maze 题解
题目链接分析:令fuf_ufu表示在点uuu时期望需要经过多少条边才能逃出,sonuson_usonu表示点uuu的儿子的集合,faufa_ufau表示uuu的父亲,dud_udu表示点uuu的度,那么显然有:fu=ku∗f1+(1−ku−eu)((∑v ∈ sonufv+ffau)/du+1)(1)\tag1 f_u = k_u * f_1 + (1 - k_u - e_u)((...
2020-02-02 10:43:26
157
原创 洛谷P2831愤怒的小鸟题解
题目链接分析:注:以下讨论的抛物线均过原点DP:n<=18n <= 18n<=18 ?肯定是状压,令fSf_SfS表示已经死了的猪的集合为SSS时最少需要的抛物线数量,li,jl_{i,j}li,j表示经过点i,ji,ji,j的抛物线所经过的点的集合。那么对于每一个fSf_SfS,显然有:fS ∣ li,j=min(fS ∣ li,j,fS+1)(1<=i,...
2020-02-01 12:09:10
185
原创 洛谷P2473 [SCOI2008]奖励关题解
题目链接分析:看到数据范围 n<=15n <= 15n<=15 就很容易想到状压DP:用fi,Sf_{i,S}fi,S表示前iii个宝物在是否取过的状态为S的情况下的最大期望得分。但仔细一想会发现前面的选择会影响到后面的每个宝物是否能取,即不满足DP的无后效性原则。所以,我们将状态改为用fi,Sf_{i,S}fi,S表示前i−1i - 1i−1个宝物在是否取过的状态为S...
2020-01-31 17:57:08
272
原创 洛谷P2016战略游戏 题解
题目链接分析:树形DP令fu,0f_{u,0}fu,0表示点uuu不放士兵时uuu的子树(包括uuu)最少需要多少个士兵,fu,1f_{u,1}fu,1表示点uuu放士兵时uuu的子树最少需要多少个士兵。因为需要每条边的端点都有人,所以若点uuu不放,则uuu的每一个儿子都要放,否则uuu与儿子的连边的两端将都没有士兵,不符合题意。令sonuson_usonu表示uuu的儿子的集合,...
2020-01-31 14:13:24
309
原创 POJ3744 Scout YYF 题解
题目链接分析:显然是一道概率DP令fif_ifi表示安全到达第iii格的概率,在不考虑地雷的情况下,显然有:fi=p∗fi−1+(1−p)∗fi−2 (i>=3)f_i = p * f_{i - 1} + (1 - p) * f_{i - 2}\,(i >= 3)fi=p∗fi−1+(1−p)∗fi−2(i>=3)那加上地雷呢?分开处理不就好了,注意到 n&l...
2020-01-31 12:28:11
90
原创 洛谷P1365 WJMZBMR打osu 题解
题目链接分析:令fif_ifi表示前iii位的期望分数;gig_igi表示从第iii位往前,期望有多少的连续的'o'每一位分为三种情况转移:1、当前位为'x':显然有:gi=0,fi=fi−1g_i = 0,f_i = f_{i - 1}gi=0,fi=fi−12、当前位为'o':稍微复杂一点,为:gi=gi−1+1g_i = g_{i - 1} + 1gi=gi−1...
2020-01-31 11:14:09
214
原创 CF311B Cats Transport题解
题目链接分析:预处理观察一下,发现对于每只猫,它在哪座山以及游玩时间我们并不关心,我们只需要求出能正好在第iii只猫游玩结束时接走它的出发时间aia_iai。令TTT数组表示ddd数组的前缀和,即每座山与第一座山的距离,显然的,有:ai=ti−Thia_i = t_i - T_{h_i}ai=ti−Thi为了快速计算对答案的贡献,需要对aaa数组排序,并求出排序后的前缀和SiS...
2020-01-31 10:51:17
273
原创 洛谷P2569[SCOI2010]股票交易题解
题目链接分析:令fi,jf_{i,j}fi,j表示第iii天后拥有jjj张股票时最多能赚的钱数显然,转移时共有三种情况1、不做交易直接由上一天转移:fi,j=fi,jf_{i,j} = f_{i,j}fi,j=fi,j2、买入由于每www天才能交易一次,所以应从第i−w−1i - w - 1i−w−1天及以前更新,又第i−w−1i - w - 1i−w−1天前的信息都会更新到...
2020-01-30 21:44:21
203
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人