- 博客(54)
- 收藏
- 关注
原创 弦图、完美消除序列与MCS算法
参考资料一份通过google search找到的资料OI-wiki定义们记 N(u)N(u)N(u) 为 uuu 的所有的邻居构成的集合。对于一个点集 SSS,定义 N(S)N(S)N(S) 为 {x∣∀v∈S,x∈N(v)}\{ x\mid \forall v\in S, x\in N(v)\}{x∣∀v∈S,x∈N(v)}。弦图 (chordal graph):满足任意一个长度大...
2020-04-05 14:12:57
1146
原创 一种树形背包的复杂度证明
有一类树上背包(例如 CF1097G Vladislav and a Great Legend),第二维表示子树内选的点数且限制第二维不超过mmm,其总复杂度可证明为O(nm)O(nm)O(nm)。它们的代码一般长这样:void dfs(int u,int last) { sz[u]=1; // initialize dp[u] for(int k=head[u];k;k=e[k].ne...
2020-02-03 17:09:36
1941
2
原创 LOJ3053 「十二省联考2019」希望
0部署方案合法的条件是:存在一个点uuu,使得所有搜救范围都包含uuu且所有在搜救范围中出现过的点到uuu的距离不超过LLL。此时我们称部署方案可以被点uuu识别。定义一种部署方案可以被一条边识别,当且仅当这条边的两个端点都能识别它。显然,对于某种部署方案,可以识别它的uuu会构成一个连通块,而连通块点数 - 边数 = 1。所以,(每个点可以识别的部署方案数 - 每条边可以识别的部署方案数)...
2020-01-31 20:50:49
373
原创 Codeforces1270H Number of Components
观察发现,如果i,j(i<j)i,j(i<j)i,j(i<j)连通,那么对于任意的k∈(i,j)k\in (i,j)k∈(i,j),kkk与i,ji,ji,j连通。证明:若ai<aja_i < a_jai<aj则ai<ak∨ak<aja_i < a_k \vee a_k < a_jai<ak∨ak<aj一定成...
2020-01-27 15:19:27
262
原创 Codeforces 1270 Goodbye 2019 (C,D,E,F,G)
C - Make Good记sumsumsum为所有数的异或和,tottottot为所有数的和。tottottot显然必须是偶数。所以如果tottottot是奇数的话,就先往数组里面加入一个111。如果2×sum>tot2\times sum > tot2×sum>tot,就往数组里面加入两个2×sum−tot2{2\times sum - tot \over 2}22×su...
2020-01-27 15:15:23
364
原创 LOJ6435 「PKUSC2018」星际穿越
参考这篇blog设fi,kf_{i,k}fi,k为从iii出发,走kkk步能够到达的最靠左的点。则有fi,k+1<fi,kf_{i,k+1} < f_{i,k}fi,k+1<fi,k。显然fi,1=lif_{i,1} = l_ifi,1=li。然后是fi,2=minj≥li{lj}f_{i,2} = \min_{j \ge l_i} \{l_j\}fi,2=m...
2020-01-27 11:07:34
185
原创 CF1246F Cursor Distance
考虑对于每一个iii,求出至多走kkk步就能够到达它的位置所构成的区间[Li,k,Ri,k][L_{i,k},R_{i,k}][Li,k,Ri,k]。我们只要对每个iii分别求出∑kLi,k,∑kRi,k\sum_k L_{i,k},\sum_k R_{i,k}∑kLi,k,∑kRi,k就能得到答案。最短路不一定是单向的(比如对于baaaaac,从b走到最后一个a),所以L,RL,R...
2020-01-27 11:06:40
210
原创 LOJ2292 「THUSC 2016」成绩单
设fi,j,l,rf_{i,j,l,r}fi,j,l,r表示区间[i,j][i,j][i,j]已经删掉若干,剩下的那些元素中的最大值为rrr,最小值为lll,删掉那若干个元素的最小代价;gi,jg_{i,j}gi,j表示将区间[i,j][i,j][i,j]全部删完的最小代价。对于fi,j,l,rf_{i,j,l,r}fi,j,l,r,考虑jjj这个元素是否被删掉了:如果它已经被删掉,我...
2020-01-20 10:46:06
234
原创 TopCoder14929 MaxSquare
official editorial设sis_isi表示BBB的前缀和。Ans=maxr1−l1=r2−l2{(r1−l1)(sr2−sl2)+(r2−l2)(sr1−sl1)}Ans = \max_{r_1-l_1=r_2-l_2} \{(r_1-l_1)(s_{r_2}-s_{l_2}) +(r_2-l_2)(s_{r_1}-s_{l_1})\}Ans=r1−l1=r2−l2...
2020-01-20 10:45:00
157
原创 HDU6431 NewNippori
分别求出maxflow(x,y)maxflow(x,y)maxflow(x,y)为1,2的点对的数量,就可以算出答案。maxflow(x,y)=1maxflow(x,y)=1maxflow(x,y)=1的点对即不在同一个边双连通分量的点对。maxflow(x,y)=2maxflow(x,y)=2maxflow(x,y)=2的点对一定在同一个边双连通分量且可以通过割掉两条边使它们不连通。对每个...
2020-01-18 18:54:51
676
原创 组合计数练习题
UOJ422 小z的礼物考虑min-max容斥:max(S)=∑T⊆S(−1)∣T∣+1min(T)\max (S) = \sum_{T\subseteq S} (-1)^{|T|+1} \min (T)max(S)=T⊆S∑(−1)∣T∣+1min(T)对希望得到的物品的每一个子集,求出期望最早什么时候子集里至少有一个物品被拿到了,就能算出答案。设包含了至少一个这个子集内的物品...
2020-01-15 22:04:15
426
原创 概率与期望练习题
CF963E Circles of Waiting圆内的整点形成了一个类似方阵的结构。设fx,yf_{x,y}fx,y为(x,y)(x,y)(x,y)期望被经过的次数。我们可以对每一个点列出一个方程:fx,y=p0fx+1,y+p1fx,y+1+p2fx−1,y+p3fx,y−1+[(x,y)=(0,0)]f_{x,y} = {p_0} f_{x+1,y} + p_1 f_{x,y+1} ...
2020-01-14 10:49:43
261
原创 单位根反演练习题
loj6485 LJJ学二项式定理首先枚举i(mod4)i\pmod 4i(mod4)的余数ttt,然后转化成对于每一个ttt,求∑i=0n(ni)si[4∣(i−t)]\sum_{i=0}^n {n\choose i}s^i [ 4\mid (i-t) ] \\i=0∑n(in)si[4∣(i−t)]单位根反演:=∑i=0n(ni)si14∑j=03ω4j(i−t)=14∑j=0...
2020-01-10 23:50:42
329
原创 Atcoder Grand Contest 039 B,C,D,E,F
我的提交记录B - Graph Partition当图中存在奇环的时候显然无解(可以考虑x,yx,yx,y之间存在边意味着xxx与yyy所属的点集的下标奇偶性不同),否则一定有解。如果存在划分成kkk个集合的方案,那么图中必定存在两个点,它们之间的最短路径的边数是k−1k-1k−1。设dis(x,y)dis(x,y)dis(x,y)表示x,yx,yx,y之间的最短路的边数,1+maxx,...
2020-01-10 09:11:43
355
原创 欧拉线 Euler line
定理:三角形的垂心(orthocenter)、重心(centroid)、外心(circumcenter)共线,且重心到垂心的距离等于重心到外心的距离的两倍。过三角形的垂心、重心、外心的直线称为欧拉线(Euler line)。可以在这里感受一下。证明:令△ABC\triangle_{ABC}△ABC的垂心,重心,外心分别为O1,O2,O3O_1,O_2,O_3O1,O2,O3分别作A...
2020-01-09 19:43:02
878
原创 Stoer-Wagner 算法
问题求一个任意的无向图的全局最小割。即,定义λ(x,y)\lambda(x,y)λ(x,y)表示x,yx,yx,y两点之间的最小割,给出一张任意的无向图,你需要求出minx≠yλ(x,y)\min_{x\neq y}\lambda(x,y)minx=yλ(x,y)。Stoer-Wagner 算法约定用w(x,y)w(x,y)w(x,y)表示x,yx,yx,y之间的边权。用c(X,Y...
2020-01-08 13:06:39
472
原创 IOI2020集训队作业-24,25,26,27,28
24.2 AGC035F Two Histograms考虑如何建立从可能得到的矩阵到((l1,l2⋯lm),(k1,k2,⋯kn))((l_1,l_2\cdots l_m),(k_1,k_2,\cdots k_n))((l1,l2⋯lm),(k1,k2,⋯kn))的映射。如果确定了(k1,k2,⋯kn)(k_1,k_2,\cdots k_n)(k1,k2,⋯kn),显然(l1...
2020-01-08 12:05:02
372
原创 Sprague–Grundy theorem
相关的定义公平组合游戏 (impartial combinatorial game)定义为满足下列条件的游戏:两个玩家轮流操作,无法操作者输。游戏会在有限的轮数内结束。对于每个状态,每一个玩家可以进行的操作是相同的。也就是说可以进行的操作只取决于当前所处的状态而不取决于操作的玩家。信息公开,且没有随机行为。即,两个玩家都能够知道关于游戏状态的所有信息以及对手的操作,且玩家的操作会转移...
2020-01-05 17:14:17
328
原创 IOI2020集训队作业-23 (CF674F,ARC091F)
B - CF674F Bears and JuiceSol最后我们得到的信息是:每头熊有没有睡觉,以及如果睡觉了是在哪一天睡的。我们可能得到的信息的种数显然是桶数量的一个上界。假设总共有ddd天,信息种数就是:∑i=0min{p,n−1}di(ni)\sum_{i=0}^{\min\{p,n-1\}} d^i {n\choose i}i=0∑min{p,n−1}di(in)其中i...
2020-01-03 15:54:31
358
原创 稳定婚姻问题
问题有nnn个男生和nnn个女生,有2n2n2n个排列p1,p2⋯pn,q1,q2⋯qnp_1,p_2\cdots p_n,q_1,q_2\cdots q_np1,p2⋯pn,q1,q2⋯qn,pip_ipi代表第iii个男生的喜好(pi,1p_{i,1}pi,1表示他最喜欢的女生,pi,2p_{i,2}pi,2是他第二喜欢的,以此类推),qiq_iqi代表第iii个女生的喜...
2020-01-01 23:19:27
184
原创 Dinic算法的复杂度分析及证明
一般图复杂度主要取决于dfs增广的过程。将dfs部分的复杂度分成两部分来分析:1)修改增广路上边的流量。至多会增广mmm次,一条增广路的长度至多是nnn,所以这一部分的复杂度是O(nm)O(nm)O(nm)。2)dfs遍历时找增广路失败时经过的边。由于一旦从某条边出发找最短路失败了,我们就不会再走那条边(当前弧优化),所以这一部分的复杂度是O(m)O(m)O(m)的。故而dfs增广的复杂度是O...
2020-01-01 23:18:36
3971
3
原创 IOI2020集训队作业-22 (CF587F, CF685C, ARC096E)
A - CF587F Duff is MadSol首先对所有的串建出广义后缀自动机。设置一个在105\sqrt {10^5}105左右的阈值TTT,令U=105TU={10^5\over T}U=T105。如果∣sk∣>T|s_k|>T∣sk∣>T,这样的sks_ksk一定不超过UUU个。将询问离线下来之后,对于每一个∣sk∣>T|s_k|>T∣sk...
2019-12-30 20:36:23
396
原创 IOI2020集训队作业-21 (CF590E, AGC031D, AGC026E)
A - CF590E Birthday题意有nnn个互不相同的字符串,你需要选出这些字符串的一个子集,使得这个子集内不存在两个不同的字符串s,ts,ts,t,满足sss是ttt的子串。问这个子集最多能包含多少个元素,并输出方案。n≤750n\le 750n≤750,字符串的长度之和不超过10710^7107。Solsss是ttt的子串等价于ttt是sss的某一个前缀的后缀。由于后缀关系具有...
2019-12-29 21:54:28
359
原创 IOI2020集训队作业-20 (CF603E, AGC036E, AGC021E)
A - CF603E Pastoral OdditiesSol考虑如何判断一张图是否可以通过删除若干条边变成sunny的:每个连通块显然是独立的;如果连通块中的点数是奇数显然不行(因为所有点的度数和为偶数,所以必然不可能所有的点的度数都是奇数),否则一定可以(随便搞一棵生成树出来,然后对非树边随意决定是否保留,对树dfs,每个点的度数由它到父亲的边调整为奇数,根节点无法调整但是由于度数和为偶数...
2019-12-26 15:48:25
365
原创 IOI2020集训队作业-19 (CF571D, CF708E, ARC093F)
A - CF571D CampusSol首先对大学和警卫室分别建个Kruskal重构树并求出dfs序。询问等价于:询问某个宿舍在最后一次被清空了之后,所有对它的加操作的和。可以差分一下转化成最后一次清空和询问这两个时间点之前的加操作的和,然后对时间做扫描线,用线段树维护加操作即可。Code#include <cstdio>#include <iostream>#...
2019-12-26 11:32:25
506
原创 IOI2020集训队作业-18 (AGC037F)
A - CF553E Kyoya and TrainB - AGC037F Counting of SubarraysSol考虑如何检查一个序列是否能够属于某个级别(k,l)(k,l)(k,l):如果序列中只有一种元素,只需检查序列的长度是否为111或者大于等于LLL就可以了。如果序列中的元素多于一种,则考虑序列中最小的元素mmm,找出所有的极长的连续为mmm的段[l1,r1],[l...
2019-12-26 11:03:52
353
原创 IOI2020集训队作业 -17 (CF536D, AGC027F, AGC024E)
A - CF536D Tavas in KansasSol将每个点抽象成二维平面上的点,横坐标为这个点到sss的最短路长度,纵坐标为这个点到ttt的最短路的长度。则任意时刻还没有选过的点总是在右上角的一个矩形内。以矩形的左下角位置作为状态进行dpdpdp,转移可以前缀和优化。时间复杂度O(n2)O(n^2)O(n2)。Code#include <cstdio>#include...
2019-12-26 10:40:28
399
原创 Gomory-Hu Tree (最小割树)
Gomory-Hu Tree (最小割树)基本定义割 cut对于一张带权无向图G=(V,E)G=(V,E)G=(V,E),定义一个割 (cut) 为两个集合S,T∈VS,T\in VS,T∈V,满足S∩T=∅,S∪T=VS\cap T = \emptyset, S\cup T = VS∩T=∅,S∪T=V。定义一条边为割边 (cut edge) 当且仅当它的两个端点分别在SSS集合和TTT集...
2019-12-24 19:52:26
701
原创 Order theory 与 Dilworth's theorem
Order theorypartial order偏序关系 (partial order) 定义为满足下列条件的二元关系:自反性 (reflexivity),即a≤aa\le aa≤a非对称性 (antisymmetry),即a≤b∧b≤a⇒a=ba\le b \wedge b\le a \Rightarrow a=ba≤b∧b≤a⇒a=b传递性 (transitivity),即a≤b...
2019-12-12 19:13:51
476
原创 PKUWC2018(loj2538, loj2541, loj2540)
loj2538 Slay the SpireSol将强化牌和攻击牌按照权值从大到小排序。设wiw_iwi表示第iii大的攻击牌的权值,viv_ivi表示第iii大的强化牌的权值。首先,由于vi>1v_i>1vi>1,所以策略一定是尽可能多地出强化牌,等到强化牌都出完了或者已经是最后一张牌的时候才出攻击牌。设随机选出的mmm张牌中有LLL张是强化牌。Case 1: ...
2019-12-07 09:14:50
171
原创 P问题,NP问题,NPC问题,NPH问题
P问题可以在多项式时间内求解的问题。“P” 代表 “polynomial time” 。NP问题可以在多项式时间内检查解是否合法的问题。“NP” 代表 “nondeterministic polynomial time” 。显然有P⊆NPP\subseteq NPP⊆NP归约对于两个问题A和B,如果能够在多项式时间内对A的输入进行转化,使得解决B的算法能够得到A问题的输出,那么就...
2019-12-06 21:31:11
359
原创 IOI2020集训队作业-16 (CF605E, AGC031E, AGC028D)
A - CF605E Intergalaxy TripsSol设iii号点到达nnn需要的期望天数是fif_ifi。每个点的策略一定是:钦定一个集合SSS,等到SSS里面至少有一个点和它连通的时候,走SSS中的、与它连通的、到nnn的期望距离最小的点。显然不在SSS中的点到nnn的期望距离要大于SSS中的点,否则这种钦定SSS的方法一定是不优秀的。对于一个点uuu来说,如果它选的集合是S...
2019-12-05 13:39:44
360
原创 IOI2020集训队作业-15 (CF626G, CF666D, ARC102F)
A - CF626G RafflesSol假设已经在第iii个奖池中放了mmm张彩票,那么往第iii个奖池再放入一张的贡献是pi(m+1li+m+1−mli+m)=pi⋅li(li+m)(li+m+1)p_i({m+1\over l_i+m+1} - {m\over l_i+m})=p_i\cdot {l_i\over (l_i+m)(l_i+m+1)}pi(li+m+1m+1−l...
2019-11-29 21:42:17
588
原创 IOI2020集训队作业-14 (CF611H, AGC036D, AGC027E)
A - CF611H New Year and Forgotten TreeSol首先位数相同的点之间的边随便连。此时每两种位数的点之间的边数和每种位数的连通块数。如果有解则一定存在一种方案,是将每种位数拿一个点出来,连成一个生成树,然后把其它的点连到生成树上的点。爆搜生成树的形态,然后用网络流求匹配判断是否存在方案。Code#include <cstdio>#inclu...
2019-11-28 14:48:42
325
原创 IOI2020集训队作业-13 (CF528C, AGC038F, AGC029E)
A - CF528C Data Center DramaSol加完边之后存在合法的定向方案的充分必要条件是:所有点的度数都是偶数并且边的总数是偶数。必要性显然。而如果条件满足,则原图一定存在欧拉回路且欧拉回路的长度是偶数,把欧拉回路求出来然后令第1,3,5⋯1,3,5\cdots1,3,5⋯条边的方向与遍历它的方向相同,第2,4,6⋯2,4,6\cdots2,4,6⋯条边方向与遍历它的方向相...
2019-11-27 17:39:39
428
原创 IOI2020集训队作业-12 (CF613E, AGC033E, AGC022D)
A - CF613E Puzzle LoverSol合法的序列一定是下面这样的形式:其中第二部分要求只能够向上、下、右走。第一部分和第三部分可以用哈希/SA快速判断是否可以匹配,第二部分只能从第iii列走到第i+1i+1i+1列,分三个阶段进行dpdpdp就可以了。考虑第二部分从右往左的情况,我们可以将www翻转然后再计算一次。注意只有第一部分或只有第三部分将会被数两遍(不翻转www...
2019-11-26 19:57:31
470
原创 IOI2020集训队作业-11 (CF566E, AGC034E, AGC022D)
A - CF566E Restoring MapSol对每一对(u,v)(u,v)(u,v),求出包含它的setsetset的数量是等于0,1,20,1,20,1,2还是大于等于333。如果为000则这两个点之间的距离大于444,等于111则距离等于444,等于222则距离等于333,大于222则距离小于等于222。观察发现,如果图的直径大于等于555,我们就可以通过已经知道的距离为333...
2019-11-25 16:26:24
673
原创 IOI2020集训队作业-10 (CF566C, CF700E, ARC092F)
A - CF566C Logistical QuestionsSolcost(u,v)=dis(u,v)32cost(u,v)=dis(u,v)^{3\over 2}cost(u,v)=dis(u,v)23在dis(u,v)≥0dis(u,v)\ge 0dis(u,v)≥0的时候随dis(u,v)dis(u,v)dis(u,v)的递增而递增。所以,对于一条路径上的点u1,u2⋯uku_1,u...
2019-11-24 18:37:39
1440
原创 IOI2020集训队作业-9 (CF538G, CF674D, ARC101F)
A - CF538G Berserk RobotSol将原题中的坐标(x,y)(x,y)(x,y)变成(x+y,x−y)(x+y,x-y)(x+y,x−y),原题的行走一步改成(1,1),(1,−1),(−1,1),(−1,−1)(1,1),(1,-1),(-1,1),(-1,-1)(1,1),(1,−1),(−1,1),(−1,−1)。这样与原来的问题是等价的,并且横纵坐标变得独立了。单独...
2019-11-22 21:01:35
598
原创 Codeforces Round #601 (CF1254 A,B,C,D,E)
A - Feeding ChickenSol将方格按照蛇形抽成序列:序列中的连续一段格子必然形成连通块。对这个序列进行划分即可。Code#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#define ll long longusi...
2019-11-21 12:24:04
488
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人