- 博客(181)
- 收藏
- 关注
原创 CF1000G. Two-Paths(树形dp)
CF1000G. Two-PathsSolution我们发现除了树上(x,y)(x,y)(x,y)最短路径上的边经过一次,其余边要么走000次,要么走222次。因此考虑先假设每条边走两次,最后把走一次的边的贡献加上。我们把从(x,y)(x,y)(x,y)路径上的点扩展出去连痛块的贡献拆成三部分:x,yx,yx,y的子树中的部分。x,yx,yx,y路径上不是端点的点延伸出去且不经过(x,y)(x,y)(x,y)路径的部分。x,yx,yx,y的lcalcalca向上延伸的部分。我们可以通过树
2021-05-18 20:43:50
216
原创 CF1146F - Leaf Partition(树形dp)
CF1146F - Leaf PartitionSolution感觉做这种细节很多的分类讨论树形dp还是有点乱。大概有一个naivenaivenaive的想法是,我们令fx,0/1f_{x,0/1}fx,0/1表示以xxx为根的子树,xxx结点有没有颜色的方案数。然后如果存在两个有颜色的儿子,则xxx的颜色可以直接确定。但是直接这样不好转移(因为当前无色的点可能在更浅的地方和其他点连通导致有了颜色),我们修改状态为fx,0/1/2f_{x,0/1/2}fx,0/1/2,000表示xxx无色,1
2021-05-18 17:43:04
258
原创 CF1016G. Appropriate Team(Pollard-pho,FWT,数论)
CF1016G. Appropriate TeamSolution相当于选出的两个数需要满足不存在一个质因子ppp,aia_iai在ppp的指数比XXX多,aja_jaj在ppp的指数比YYY少。我们用Pollard−phoPollard-phoPollard−pho求出YYY所有最多151515个质因数,然后把所有数表示为一个二进制数,表示该位上的指数相对于XXX是否增加,存到桶里,记为FFF,然后再把相对YYY减的处理后的桶记作GGG,答案即为[x0](F&G)[x^0](F\&
2021-05-17 15:50:51
221
原创 CF1090F - How to Learn You Score(构造)
CF1090F - How to Learn You ScoreSolution很不戳的构造题。首先观察数据范围:n∈[5,1000]n\in[5,1000]n∈[5,1000],这启发我们什么?n=5n=5n=5的时候解是唯一的,因此我们可以把nnn切成若干段长度为555的段,每一段分别求答案,最后拼起来。然后我们考虑长度为555的段,显然4n4n4n的询问上界允许我们把十种三元组都询问出来。我们先确定这些数的值,而不考虑位置,设这五个值从小到大依次为a1...a5a_1...a_5a1...
2021-04-29 14:56:42
164
原创 CF1361C. Johnny and Megan‘s Necklace(构造,欧拉回路,传递闭包)
CF1361C. Johnny and Megan’s NecklaceSolution真duliu,快做吐了。。。刚开始想了一个假做法(但前面还是很真的)。假的做法大概是你发现这个东西具有传递性,因此你考虑把aia_iai翻转后在后面补0直到20位之后,从小到大枚举iii,验证答案是否为20−i20-i20−i。然后把从高到低的20−i20-i20−i位相同的点之间都连上边。因为一些特殊的传递性(a xor b≥2x,b xor c≥2y→a xor c≥2min(x,y)a\;
2021-04-26 17:18:41
198
原创 CF1413F. Roads and Ramen(树的直径,线段树)
CF1413F. Roads and RamenSolution感觉这个套路也见过许多次了?大概这种奇奇怪怪的树上最长路径的题都得往直径靠一靠。大概有个结论是:存在一个最优路径使得其起始点和直径起始点有交。然后我们只需要求出一个直径的起始点A,BA,BA,B,分别维护以A,BA,BA,B为根的树到其他点的边权异或和以及最长路径,上线段树就行了。时间复杂度O(n+qlogn)O(n+q\log n)O(n+qlogn)。Code#include <bits/stdc++.h>u
2021-04-24 15:52:46
177
原创 CF1386C. Joker(整体二分)
CF1386C. JokerSolution难得有一道可以整体二分的题。有一个基本的思路是:考虑求出AnsiAns_iAnsi表示最小的右端点,满足[1,i]∪[Ansi,m][1,i]\cup[Ans_i,m][1,i]∪[Ansi,m]中存在奇环。考虑到AnsiAns_iAnsi序列是非减的,因此我们可以two pointers+LCTtwo\;pointers+LCTtwopointers+LCT维护生成树以及是否存在奇环,时间复杂度O(nlogn)O(n\log n)O(nlogn
2021-04-23 14:29:46
262
原创 CF1516E. Baby Ehab Plays with Permutations(组合数学)
CF1516E. Baby Ehab Plays with PermutationsSolution因为组合水平不行所以只弄出来一个O(k4)O(k^4)O(k4)的做法(虽然随便改改可能就O(k3logk)O(k^3\log k)O(k3logk)或者O(k3)O(k^3)O(k3)了)而且因为没想清楚而自闭了很久(导致摸yu时间被阉割)。首先大概有个显然的性质:设一个任意的操作方案形成的最终序列为a1,a2...ana_1,a_2...a_na1,a2...an,把iii和aia_iai
2021-04-22 20:00:50
228
原创 CF1375G. Tree Modification(贪心,黑白染色)
CF1375G. Tree ModificationSolution假设我们取定了根,那么只可能从深度大的点接到深度小的点,我们每次取一个高度为2的子树接到该子树的父亲,这样取一定不劣,操作次数相当于是偶数深度点(根深度为0)的个数减一。注意到所有奇数深度的点为根的答案都相同,偶数同理。因此整合之后,相当于是奇数深度和偶数深度点的个数的较小值减一。时间复杂度O(n)O(n)O(n)Code#include <bits/stdc++.h> using namespace std;
2021-04-22 08:10:51
167
原创 CF1365G Secure Password(构造,交互,二进制分组)
CF1365G Secure PasswordSolution妙妙思维题。注意到(136)>n\binom{13}{6}>n(613)>n。(谁tm能注意到这个?!?)我们可以把所有13位二进制数中有6个1的拿出来给nnn个数重标号。然后对于每一位iii,求出重标号后这一位是1的数的位或和,记为wiw_iwi。对于重标号后为iii的位置的答案,只需要让所有iii的0的位的wjw_jwj或起来即可。Code#include <bits/stdc++.h>u
2021-04-21 19:56:15
175
原创 CF1303F - Number of Components(并查集)
CF1303F - Number of ComponentsSolution思路还是有点妙的。容易想到并查集,但是并查集不容易维护删边,怎么办呢?我们考虑拆贡献,把加边的贡献和删边的贡献拆开,分别维护。只加边就是四连通加边,算一下新增多少个连通块。只删边的贡献可以从后往前做,变成加边,对答案的贡献就是新增连通块个数的相反数(因为删边就是加边的逆过程,贡献相反)。并查集维护即可。时间复杂度O(qlogn)O(q\log n)O(qlogn)。Code#include <bits/s
2021-04-20 21:13:57
158
原创 CF1088F. Ehab and a weird weight formula(倍增)
CF1088F. Ehab and a weird weight formulaSolution这题大概是个大力找性质题。性质1:不难发现一个点比它权值小的有且仅有一个(最小权点除外)性质2:我们把最小权点作为根,原树形成一个小根堆。点和边都有贡献显然很难受。我们把点的贡献移到边上,于是边的贡献变成:⌈log2dis(u,v)⌉×min(au,av)+au+av\lceil log_{2}{dis(u,v)}\rceil\times min(a_u,a_v)+a_u+a_v⌈log2dis
2021-04-19 18:00:32
102
原创 P4887 【模板】莫队二次离线(第十四分块(前体))
P4887 【模板】莫队二次离线(第十四分块(前体))Solution简单学习了一下二次离线莫队,写了个板子题。这题直接莫队时间复杂度为O(Cnn)O(Cn\sqrt n)O(Cnn),其中C=(14k)C=\binom{14}{k}C=(k14),显然不太行。我们考虑当前区间为[l,r][l,r][l,r],右端点增加kkk,变为[l,r+k][l,r+k][l,r+k]产生的贡献:令f(x,[l,r])=[∑i=lrpopcount(x xor ai)=k]f(x,[l,r])=[\s
2021-04-15 23:52:49
125
原创 P5170 【模板】类欧几里得算法(类欧)
P5170 【模板】类欧几里得算法Description要求在O(lgn)O(lgn)O(lgn)的时间内求出:∑i=0n⌊ai+bc⌋\sum_{i = 0}^n{\lfloor\frac{ai+b}{c}\rfloor}∑i=0n⌊cai+b⌋∑i=0ni⌊ai+bc⌋\sum_{i = 0}^n{i\lfloor\frac{ai+b}{c}\rfloor }∑i=0ni⌊cai+b⌋∑i=0n⌊ai+bc⌋2\sum_{i = 0}^n{\lfloor\frac{ai+b}{c}\r
2021-04-13 21:20:54
178
原创 CF1067E Random Forest Rank(树形dp,概率与期望,线性代数)
CF1067E Random Forest RankSolution考虑树的邻接矩阵的秩的意义,不难发现相当于每个点找一个“代表”,对于一个点xxx,它的“代表”为一个与xxx相邻的结点,要求保证所有点的“代表”不重复,求能找到“代表”的点的最大点集。稍加思考可以发现这个最大点集等同于最大匹配的两倍,而森林的秩等同于所有树的秩的和,还是最大匹配的两倍。于是我们要求的东西相当于每个点能够匹配的概率的和。令fxf_xfx表示xxx匹配到一个儿子结点的概率。当xxx的所有儿子结点被匹配时,xxx无法
2021-04-13 09:12:02
271
原创 CF1398F
CF1398FSolution我又来贡献暴力做法了。。。听说两只log不可能过1e6?有一个显然的想法是:我们先预处理一个aia_iai表示第iii个位置的最长后缀长度,满足该后缀中不同时存在0和1。假设我们要求x=ix=ix=i的答案,那么一个位置jjj可以作为一轮的结束点当且仅当aj≥ia_j\geq iaj≥i,而一个结束位置序列p1<p2<...<pkp_1<p_2<...<p_kp1<p2<...<pk合法当且仅当每一个pj
2021-04-06 16:15:56
139
原创 ARC114E - Paper Cutting 2(组合数学,概率与期望)
ARC114E - Paper Cutting 2Solution考场上时间不够,没刚出来QAQ。Part one我们要求的是合法操作序列的期望长度。问题大概可以用一个类似《PKUWC2018猎人杀》的经典的套路转化为:设有一个W+H−2W+H-2W+H−2条线组成的排列p1p2...pnp_1p_2...p_np1p2...pn,其中pip_ipi的贡献为111当且仅当不存在一个pj(j<i)p_j(j<i)pj(j<i)可以把pip_ipi叉掉,也就是说pip_
2021-03-15 10:45:22
569
原创 CF997E. Good Subsegments(线段树,单调栈)
CF997E. Good SubsegmentsDescription给定一个序列,多次询问一个区间内的连续段个数。n,q≤2×105n,q \leq 2\times 10^{5}n,q≤2×105Solution算得上是经典题了吧。Part one先考虑求全部的连续段个数。相当于求区间内mx−mn+1−len=0mx - mn + 1 - len = 0mx−mn+1−len=0的子区间个数,且显然有mx−mn+1−len≥0mx - mn + 1 - len \geq 0mx−mn+1−
2021-03-11 20:20:40
328
原创 CF528C. Data Center Drama(欧拉回路,构造)
CF528C. Data Center DramaSolution容易发现,加边后的图必然满足所有点的度为偶数,并且总的边数是偶数,这启发我们使用欧拉回路。设欧拉回路为vk1et1vk2et2vk3...vk∣E∣+1v_{k_1}e_{t_1}v_{k_2}e_{t_2}v_{k_3}...v_{k_{|E|+1}}vk1et1vk2et2vk3...vk∣E∣+1。我们将et2ie_{t_{2i}}et2i的边定为vk2i→vk2i+1v_{k_{2i}}\to v_{
2021-03-11 08:43:12
297
原创 AGC019D - Shift and Flip(枚举)
AGC019D - Shift and Flip很久之前WAWAWA的题,终于补掉了。。。这题细节是真的烦。Solution这题数据范围较小,于是我们枚举最终AAA与BBB的哪一个字符开始匹配,设这个位置为SSS。然后考虑分顺时针/逆时针转到SSS两种情况讨论。以逆时针为例,我们可以求出转到SSS之后哪些位置需要010101反转,并且容易预处理出这些位置需要向左几步才能接触过BBB中的111,向右同理(因为只要转的过程中遇到一次BBB的111,相当于这个位置就可以任意进行操作333了)。将这两个
2021-03-03 09:05:06
147
原创 CF855G. Harry Vs Voldemort(边双,并查集,dp)
CF855G. Harry Vs VoldemortSolution考虑每增加一条边都会把路径上的边双都连成一个大边双,考虑合并xxx和y=faxy = fa_xy=fax 这两个边双的贡献,分类讨论:选取三个同边双内的点。选取在同一个边双内选两个点,剩下一个在其他边双内。选取三个来自不同边双的点。第一个的贡献即为Aszx3A_{sz_x}^3Aszx3第二个的贡献即为2Aszx2(n−szx)2A_{sz_x}^2(n - sz_x)2Aszx2(n−szx)第三个比较麻烦
2021-02-22 16:06:13
188
原创 CF1237F Balanced Domino Placements(组合计数,dp)
CF1237F Balanced Domino PlacementsSolution显然可以先考虑横着的骨牌,再考虑竖着的骨牌。但是思路卡在了选取横着的骨牌会对竖着的骨牌的相邻对数产生影响。然而事实上我们只需要换一个统计顺序,先考虑横着的骨牌的列和竖着的骨牌的行,然后再考虑横着的骨牌的行和竖着的骨牌的列(因为单行/列没有双行/列的必须相邻的限制,因此可以简单地通过剩余行/列数统计)。前面一项可以简单地dpdpdp得到,后面一项组合计数即可。时间复杂度O(n2)O(n^2)O(n2)。Code#
2021-02-21 15:43:06
143
原创 CF938G Shortest Path Queries(线性基,线段树分治,并查集)
CF938G Shortest Path QueriesSolution套路题。xorxorxor最短路可以用线性基维护(把每个环的边权异或和放进线性基,询问时把树边路径边权异或和放在线性基里跑出最小值即可)。然后因为线性基删除比较慢而麻烦(注意线性基是有办法动态加删元素的),因此动态加删边可以用线段树分治+可撤销带权并查集实现。时间复杂度O(nlg2n)O(nlg^2n)O(nlg2n)。Code#include <vector>#include <list>#i
2021-02-05 21:02:08
200
原创 CF1478A - Nezzar and Colorful Ball(数学)
CF1478A - Nezzar and Colorful BallsSolution真不戳,这AAA题真不戳,我直接好家伙。讲一下我搞了半个小时的垃圾做法。大概是容易发现你两个数(x,y)(x,y)(x,y)做来做去最后一定是ax−(a−1)yax-(a-1)yax−(a−1)y的形式,然后再继续搞一搞三个数的,最后你发现每个数的贡献次数之和等于111,于是问题变成了这样子:给定a1...ana_1...a_na1...an,问是否存在一个x1...xnx_1...x_nx1...xn,
2021-01-30 17:22:13
189
原创 AGC038D - Unique Path(建图)
AGC038D - Unique PathSolution此题较水。大概就是简单路径唯一意味着连成一棵树,因此先给这些限制的端点放在同一个连通块内,然后如果有多条路径的限制的两端点在同一个连通块内,则无解。然后考虑如果没有多条路径的限制,则还要连的边数最少为t−1t-1t−1,最多为t(t−1)2\frac{t(t-1)}{2}2t(t−1)(ttt为连通块个数),直接判断即可。如果有多条路径,则还要连的边数最少为ttt(一种可行方案是每个限制以以每个连通块的根为端点连成环),最多为t(t−1)
2021-01-29 16:48:08
252
原创 BZOJ#3786. 星系探索(平衡树,fhq-treap,弱化版ETT)
BZOJ#3786. 星系探索Solution子树加,换fatherfatherfather(保证还是树),询问到根路径和。树上路径求和不好动态维护,于是转化到序列上,维护一个括号序,dfndfndfn处贡献为www,fnsfnsfns处贡献为−w-w−w,一段路径(x,y)(x,y)(x,y)的和相当于序列上dfnxdfn_xdfnx到dfnydfn_ydfny的贡献和。于是子树加相当于区间加,交换子树相当于在dfsdfsdfs序上取出一个区间插入到其他地方去。这个可以直接用平衡树维护,这里
2021-01-19 08:48:41
398
原创 LG P4899 [IOI2018] werewolf 狼人(kruskal重构树,二维数点)
LG P4899 [IOI2018] werewolf 狼人Solution我们发现010101限制长这样子:∃x(minids−>x≥L & maxidx−>e≤R)→1\exist_x(min_{id_{s->x}}\geq L\;\;\And\;\;max_{id_{x->e}}\leq R) \to 1∃x(minids−>x≥L&maxidx−>e≤R)→1因此我们只需要快速求出xxx沿着≥L\geq L≥L的编号能
2021-01-15 14:45:40
379
原创 LG P4074 [WC2013] 糖果公园(带修莫队,树上莫队)
LG P4074 [WC2013] 糖果公园Solution树上带修莫队,主要还是复习带修莫队和树上莫队。带修莫队:带修莫队要先对lll分块的序号作为第一关键字,对rrr分块的序号作为第二关键字,时间ttt作为第三关键字排序,然后正常莫队。块大小约取O(n23)O(n^{\frac{2}{3}})O(n32)最优,时间复杂度为O(n53)O(n^{\frac{5}{3}})O(n35)。树上莫队:树上莫队需要按路径端点dfsdfsdfs序为区间端点做莫队,注意这里的dfsdfsdfs
2021-01-14 20:20:04
144
原创 AGC012D - Colorful Balls(并查集)
AGC012D - Colorful BallsSolution连边题。找出www最小的球yyy和www最小且颜色和yyy不同的球zzz。yyy向所有colt≠coly,wt+wy≤Ycol_t\not =col_y,w_t+w_y\leq Ycolt=coly,wt+wy≤Y的球ttt连边。zzz向所有colt≠coly,wt+wz≤Ycol_t\not =col_y,w_t+w_z\leq Ycolt=coly,wt+wz≤Y的球ttt连边。每个球xxx和与自己
2021-01-14 10:56:28
267
原创 AGC011D - Half Reflector(模拟)
AGC011D - Half ReflectorSolution先考虑改变一次。我们令LLL表示往左走的球,RRR表示往右走的球,xxx表示任意种类的球,(−x)(-x)(−x)表示与xxx相反种类的球。当球处于ARAARAARA的状态(即有一个向右的球在两个AAA机器人之间)时,状态会这样改变:ARA→ALB→BRB→BARARA\to ALB\to BRB \to BARARA→ALB→BRB→BAR。当球处于ARBARBARB的状态,ARB→AARARB\to AARARB→AAR。
2021-01-14 09:51:12
181
原创 [APIO2018] New Home 新家(线段树,二分答案,离散化)
[APIO2018] New Home 新家Solution对于时间轴我们直接离散化+扫描线,维护每一个商店的加入和删除。对于询问(x,t)(x,t)(x,t),不好直接回答,这里的关键一步是:我们要求的是kkk种商店最小距离的最大值,于是考虑二分答案。二分一个最大值midmidmid,那么kkk种商店必须都在[x−mid,x+mid][x-mid,x+mid][x−mid,x+mid]出现过。我们考虑对于每一个商店维护和它类型相同的商店的前驱。那么[x−mid,x+mid][x-mid,x+mid]
2021-01-12 07:31:36
165
原创 HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge(Set,线段树)
HDU6218 2017ACM/ICPC亚洲区沈阳站 BridgeSolution我们考虑维护在环上的边的个数,答案就是总边数减去环上边数。环的形态是这样的:(0,l),(0,l+1)...(0,r),(1,r),(1,r−1)...(1,l)(0,l),(0,l+1)...(0,r),(1,r),(1,r-1)...(1,l)(0,l),(0,l+1)...(0,r),(1,r),(1,r−1)...(1,l)。考虑怎样才会连成环,显然是上下两段连续的横边加上它们之间的纵边。因此横坐标在[l,r]
2021-01-11 13:17:40
396
原创 AGC005D - ~K Perm Counting(组合数学,背包,dp)
AGC005D - ~K Perm CountingSolution经典数排列个数题,写了个大麻烦容斥。直接容斥,考虑求出fif_ifi表示有iii个位置∣pi−i∣=k|p_i-i|=k∣pi−i∣=k的方案数。一个位置iii满足∣pi−i∣=k|p_i-i|=k∣pi−i∣=k,要么pi=i+kp_i=i+kpi=i+k,要么pi=i−kp_i=i-kpi=i−k,当前面的位置选择了pi=i+kp_i=i+kpi=i+k时,后面的pi+2kp_{i+2k}pi+2k就不能选择i+ki
2021-01-11 08:19:14
237
原创 AGC004E - Salvage Robots(dp,思维)
AGC004E - Salvage RobotsSolution怎么又双叒叕遇到和NOIP2020T4NOIP2020T4NOIP2020T4和那道CFCFCF题一样的题了啊,惨痛回忆QAQQAQQAQ。大概就是把问题看成刚开始的点不动,整个网格图动,机器人向上111格等于网格整体向下111格,左右同理。如果网格某一时刻有一部分在边界外面,就把那些部分切掉,然后把所有经过原点(EEE所在的点)的机器人都收集起来。因此倘若我们向上、下、左、右分别移动了最多u,d,l,ru,d,l,ru,d,l,r格,
2021-01-10 18:18:11
321
1
原创 AGC002F - Leftmost Ball(dp,组合计数)
AGC002F - Leftmost BallSolution设fi,jf_{i,j}fi,j表示放iii个白球,确定了jjj个颜色的球的位置的方案数。有两种转移:放白球,fi,j−>fi+1,jf_{i,j}->f_{i+1,j}fi,j−>fi+1,j放完一种颜色的球,fi,j−>fi,j+1f_{i,j}->f_{i,j+1}fi,j−>fi,j+1,方案数为(n−j)∗(nk−i−j∗(k−1)−1k−2)(n-j)*\binom{nk-i-
2021-01-09 09:26:53
222
原创 BZOJ #3064. Tyvj 1518 CPU监控(线段树,历史最值)
BZOJ #3064. Tyvj 1518 CPU监控(线段树,历史最值)Solution我们考虑用线段树维护此题。先不考虑历史最值。大概需要维护一种特殊的懒标记(x,y)(x,y)(x,y)表示让区间内所有数ppp,p=max(p+x,y)p=max(p+x,y)p=max(p+x,y)。对于区间加zzz,打一个(z,−∞)(z,-\infty)(z,−∞)的标记即可。对于区间覆盖zzz,打一个(−∞,z)(-\infty,z)(−∞,z)的标记即可。把标记(a,b)(a,b)(a,b)合并
2021-01-04 21:09:15
189
原创 LG P4198 楼房重建(线段树)
LG P4198 楼房重建Solution基础的线段树题,虽然我还不熟练就是了。大概就是单点修改,求全局的极大子序列。我们需要维护一个区间最大值aaa和极大子序列长度sss。合并xxx的左右儿子ls,rsls,rsls,rs时,axa_xax直接取max{als,ars}max\{a_{ls},a_{rs}\}max{als,ars}即可。对于sxs_xsx,slss_{ls}sls的答案可以继承,对于右儿子,若其最大值小于alsa_{ls}als,显然贡献为000,否则我们考虑rs
2021-01-04 16:43:48
80
原创 ARC082F - Sandglass(思维)
ARC082 D - SandglassSolution这题睡觉的时候 想了挺久的。一段时间Δt\Delta tΔt内要么是让x+Δtx+\Delta tx+Δt对XXX取minminmin,要么是让x−Δtx-\Delta tx−Δt对000取maxmaxmax。如果没有对边界取max/minmax/minmax/min,就是一个单纯的前缀和了。而加上对边界取max/minmax/minmax/min,对于没有撞到过边界的还是一个和之前一样的前缀和,但如果撞到过边界答案就会改变。我们发现有这样一
2021-01-03 14:46:58
195
原创 CF639F Bear and Chemistry(虚树,边双)
CF639F Bear and ChemistrySolution显然题目的条件就是所有点在一个边双连通分量内。所以我们先缩边双求出边双树。然后对于每一个询问,对询问的点和边的端点建虚树,然后把询问的边连上跑tarjantarjantarjan求边双判断是否所有询问点在同一个边双内即可。时间复杂度O((n+m)lgn)O((n+m)lgn)O((n+m)lgn)。Code#include <vector>#include <list>#include <map
2020-12-31 14:14:18
454
原创 ARC086E - Smuggling Marbles(虚树,树形dp)
ARC086E - Smuggling MarblesSolution感觉这题和LG P3233 [HNOI2014]世界树几乎一模一样啊?!大概就是对于每一个深度分别计算贡献,对该深度的点建出虚树,然后树形dpdpdp。令fxf_xfx表示xxx子树中2szx2^{sz_x}2szx种方案中有多少可以让xxx是111,由此可知有2szx−fx2^{sz_x}-f_x2szx−fx种方案xxx为000,转移时相当于枚举其中一个子树为111,剩下的子树为000,这样才能保证xxx为111。设
2020-12-30 20:15:14
265
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人