Codeforces
文章平均质量分 71
逍遥Fau
为伊蕾娜献上心脏!
展开
-
Codeforces126B Password (KMP)
题目链接: Password大致题意给定字符串sss, 求在串中出现过的最长的匹配的前后缀.串中出现: 表示出现非前缀且非后缀.解题思路kmp我们考虑对于长度为nnn字符串sss而言, 最长匹配的前后缀一定是next[n]next[n]next[n]. 但该子串并不一定在串中出现.有可能存在某个短一些的前后缀, 是符合要求的.首先考虑如何判断最长后缀是否合法我们不放统计[2,n)[2, n)[2,n)区间ne[]ne[]ne[]值的情况, 开一个桶cou[]cou[]cou[]进行记原创 2022-01-21 12:27:31 · 450 阅读 · 0 评论 -
Codeforces1609C Complex Market Analysis (思维)
题目链接: Complex Market Analysis大致题意给定一个长度为nnn的序列aaa. 给定间隔kkk.定义: f(i,j)f(i, j)f(i,j) 表示从位置iii开始, 选取元素ai,ai+k,ai+2k,...,ai+jka_i, a_{i + k}, a_{i + 2k}, ..., a_{i + jk}ai,ai+k,ai+2k,...,ai+jk , 满足选取的所有元素的乘积为一个质数.问: 对于i,j∈[1,n]i, j \in [1, n]i,j∈[1,n].原创 2021-11-30 16:54:17 · 604 阅读 · 0 评论 -
Codeforces940F Machine Learning (带修莫队)
题目链接: Machine Learning大致题意给定一个长度为nnn的序列, 第iii个元素为wiw_iwi.有两种操作:1 l r 定义cic_ici为出现次数为iii次的数字个数. 查询[l,r][l, r][l,r]的mex({c0,c1,..,c109})mex(\{ c_0, c_1, .., c_{10^9}\})mex({c0,c1,..,c109}).2 a c 把序列aaa位置的数字修改为ccc.解题思路带修莫队 这不是带修莫队裸题吗?我们考虑开一个桶统计每个原创 2021-11-15 22:15:04 · 1132 阅读 · 0 评论 -
Codeforces1607C Minimum Extraction (思维)
题目链接: Minimum Extraction大致题意给定一个长度为nnn的序列, 第iii个元素为aia_iai.每次操作选择出序列中最小的元素, 然后移除该元素, 并使得序列中剩余所有元素的值都减去该元素值. (当序列长度为111时, 不可再进行操作)问: 你可以执行任意次操作, 输出序列中最小元素的最大值.解题思路思维 这不是线段树板子题? 关于DS选手想了一会儿没思路打了个线段树上去这件事.jpg我们考虑到如果对于整个序列进行从小到大排序, 每次操作后, 整个序列的相对大小其实是不原创 2021-11-15 20:20:28 · 714 阅读 · 0 评论 -
Codeforces915E Physical Education Lessons (珂朵莉树)
题目链接: Physical Education Lessons大致题意给定一个长度为nnn的010101序列, 有两种操作: 把区间[l,r][l, r][l,r]全部变为111, 或把区间[l,r][l, r][l,r]全部变为000.每次操作结束后, 输出序列中111的个数.解题思路珂朵莉树这不是珂朵莉树板子题吗? 我们只需要实现珂朵莉树的区间推平即可.值得一提的是, 每次的查询, 我们可以通过维护一个变量sumsumsum的方式来做到O(1)O(1)O(1)查询.否则如果每次遍历完整原创 2021-11-15 18:46:56 · 288 阅读 · 0 评论 -
Codeforces915E Physical Education Lessons (线段树 + 区间离散化)
题目链接: Physical Education Lessons大致题意给定一个长度为nnn的010101序列, 有两种操作: 把区间[l,r][l, r][l,r]全部变为111, 或把区间[l,r][l, r][l,r]全部变为000.每次操作结束后, 输出序列中111的个数.解题思路➡️题目弱化版推荐⬅️线段树我们考虑到如果nnn比较小(在10610^6106以内), 我们可以直接用线段树暴力维护区间信息.但是本题的nnn很大(有10910^9109), 我们没法通过堆存储的方式用静原创 2021-11-15 18:15:52 · 451 阅读 · 3 评论 -
Codeforces540E Infinite Inversions (区间离散化 + 树状数组求逆序对)
题目链接: Infinite Inversions大致题意给定一个无限长的序列p=1,2,3,...p = { 1, 2, 3, ... }p=1,2,3,..., 有mmm次操作, 第iii次交换(ai,bi)(a_i, b_i)(ai,bi)两个位置的元素.问: 完成mmm次交换后, 序列中有多少个逆序对.解题思路思维 + 树状数组我们考虑到, 其实没有被交换过的位置, 我们可以通过线段缩点的方式, 把一个线段变成一个孤立点.即: 对于每段线段, 我们存储其左端点 和 线段长度. (原创 2021-11-09 10:24:34 · 161 阅读 · 0 评论 -
Codeforces459D Pashmak and Parmida‘s problem (树状数组 逆序对)
题目链接: Pashmak and Parmida’s problem大致题意给定长度为nnn的序列aaa.问有多少个(i,j)(i, j)(i,j)满足f(1,i,ai)>f(j,n,aj)f(1, i, a_i) > f(j, n, a_j)f(1,i,ai)>f(j,n,aj).其中f(l,r,c)f(l, r, c)f(l,r,c)定义为[l,r][l, r][l,r]中满足ak=c,k∈[l,r]a_k = c, k \in[l, r]ak=c,k∈[l,r]的数原创 2021-10-29 15:25:01 · 78 阅读 · 0 评论 -
Codeforces1352E Special Elements (思维 尺取法)
题目链接: Special Elements大致题意给定长度为nnn的序列aaa, 问有多少个aia_iai满足ai=a[l:r],1≤l<r≤na_i = a[l : r], 1 \le l < r \le nai=a[l:r],1≤l<r≤n .解题思路思维我们需要计算的是, 某个位置的数字是否等于一个区间和, 我们很容易想到处理出a[]a[]a[]的前缀和.然后我们可以通过枚举rrr, 来判断之前是否出现对应的lll.但是题目卡了哈希表, 又卡了空间, 我们无法存储原创 2021-10-20 19:22:00 · 126 阅读 · 0 评论 -
Codeforces1594D The Number of Imposters (并查集)
题目链接: The Number of Imposters大致题意有nnn个人, mmm个关系.关系以a b c的形式给出, 当c==0c==0c==0时, 表示aaa说bbb是好人, 反之表示aaa说bbb是坏人.好人只会说真话, 坏人只会说假话. 每个人只能是好人或坏人中的一种.问: 这mmm对关系中是否存在矛盾, 如果有矛盾则输出"-1", 反之输出最大的坏人数量.解题思路并查集 (读完题一看, 这不是典中典?)首先我们考虑ccc的不同取值下的情况:对于a b 0的形式, 表示aaa原创 2021-10-09 15:34:19 · 687 阅读 · 0 评论 -
Codeforces1592E Bored Bakry (思维)
题目链接: Bored Bakry大致题意给定一个长度为nnn的序列, 第iii个数字为aia_iai.现要求选择一个尽可能长的区间[l,r][l, r][l,r], 满足al & al+1& al+2...& ara_l \ \& \ a_{l+1} \& \ a_{l+2} ... \& \ a_ral & al+1& al+2...& a原创 2021-10-08 15:01:42 · 169 阅读 · 0 评论 -
Codeforces1592D Hemose in ICPC ? (欧拉序)
题目链接: Hemose in ICPC ?大致题意给定一棵有nnn个顶点, n−1n - 1n−1条边的树.定义: Dist(a,b)=a,b两点间路径的gcd的最大值.Dist(a, b) = a, b两点间路径的gcd的最大值.Dist(a,b)=a,b两点间路径的gcd的最大值.我们可以进行最多121212次询问, 每次询问给出一个点集, 系统会返回当前点集的所有点对中的最大DistDistDist.最终需要输出两个点a,ba, ba,b, 要求最大化Dist(a,b)Dist(a, b)原创 2021-10-06 16:39:01 · 179 阅读 · 2 评论 -
Codeforces1592C Bakry and Partitioning (思维)
题目链接: Bakry and Partitioning大致题意给定一棵有nnn个节点的树, 第iii个节点有权值wiw_iwi.问你能否把这棵树分成[2,k][2, k][2,k]个部分, 使得每部分中所有节点的异或和相同.解题思路思维 (至暗时刻, 我比赛时在干什么啊!!)首先考虑到如果整棵树上的所有节点, 异或和sum==0sum == 0sum==0, 那么我们一定可以把整棵树拆成两部分, 满足题意.我们可以选择任一叶子结点xxx, 然后删除该节点到其父亲的边, 这样两部分的结点异原创 2021-10-06 15:50:45 · 177 阅读 · 1 评论 -
Codeforces1561B Charmed by the Game (思维)
题目链接: Charmed by the Game大致题意A和B玩一个游戏, 两个人轮流发球(最初时, 可以A先发, 也可以B先发).如果A发球, B接住了, 称为"破发", 反之依然.如果A发球, B没接住, A赢. 若B接住了, B赢. 反之依然.现给出A和B胜利的次数, 问可能出现的破发情况有多少种, 并输出每种情况下的破发次数.解题思路思维 (感觉这个题思维量真的高)首先我们考虑, 其实发球情况只有两种, 一种是A先手, 另外一种是B先手. 我们不妨讨论A先手发球的情况, 另外一种原创 2021-09-28 16:39:25 · 237 阅读 · 0 评论 -
Codeforces1397D Stoned Game (博弈)
题目链接: Stoned Game大致题意有nnn堆石子, 第iii堆有aia_iai个.A和B轮流取石子, A先取.每次可以选择一个非空石子堆, 并从中拿走111个石子.限制: 当前玩家选择的石子堆不能和上一个玩家相同.谁最终不能取石子了, 谁就输了.问: 谁会获得胜利.解题思路博弈首先考虑去除限制, 我们很容易得出结论: 当石子总数是奇数, 先手胜, 反之后手胜.思路一:我们现在加上限制, 考虑到一种特殊局势, 有一堆石子很多, 比其它所有堆加和还要多. 那么先手只需要一直选原创 2021-09-27 19:45:49 · 109 阅读 · 0 评论 -
Codeforces1397D Stoned Game (博弈)
题目链接: Stoned Game大致题意有nnn堆石子, 第iii堆有aia_iai个.A和B轮流取石子, A先取.每次可以选择一个非空石子堆, 并从中拿走111个石子.限制: 当前玩家选择的石子堆不能和上一个玩家相同.谁最终不能取石子了, 谁就输了.问: 谁会获得胜利.解题思路博弈首先考虑去除限制, 我们很容易得出结论: 当石子总数是奇数, 先手胜, 反之后手胜.思路一:我们现在加上限制, 考虑到一种特殊局势, 有一堆石子很多, 比其他所有堆加和还要多. 那么先手只需要一直选原创 2021-09-27 19:28:18 · 180 阅读 · 0 评论 -
Codeforces540B School Marks (思维 贪心 构造)
题目链接: School Marks大致题意有一个长度为nnn的数组(nnn为奇数)a1,a2,...,ana_1, a_2, ..., a_na1,a2,...,an由于某些原因,数组丢失了一部分数,现在只剩下了前kkk个数 a1,a2,...,aka_1, a_2, ..., a_ka1,a2,...,ak请你补全丢失的n−kn - kn−k个数,并使得补全后的数组能够满足以下性质:数组中的元素的取值范围为[1,p][1, p][1,p]。数组中所有元素的和不大于xxx数组中原创 2021-09-24 20:09:28 · 88 阅读 · 0 评论 -
Codeforces1514D Cut and Stick (普通莫队 / 回滚莫队)
题目链接: Cut and Stick大致题意有一个下标从1~n的序列.每次给出一组询问l r, 你要把[l,r][l, r][l,r]区间拆成尽可能少的组, 使得每组内相同元素出现次数不超过⌈len2⌉\lceil \frac {len}{2} \rceil⌈2len⌉, 其中lenlenlen为区间长度.解题思路主席树题解点这里!!!普通莫队我们考虑用莫队来维护每个数字出现的次数. 维护当前区间数字出现次数的最大值qmax即可.当我们区间进行扩增时, qmaxqmaxqmax是很好维原创 2021-09-24 19:28:05 · 144 阅读 · 0 评论 -
Codeforces617E XOR and Favorite Number (普通莫队)
题目链接: XOR and Favorite Number大致题意给定一个长度为nnn的序列aaa, 和一个固定的数值kkk.有mmm次询问, 每次询问[l,r][l, r][l,r]内有多少个连续子区间[i,j][i, j][i,j], 满足ai xor ai+1 ... xor aj=ka_i\ xor \ a_{i+1}\ ... \ xor \ a_j = kai xor ai+1 ... xor&n原创 2021-09-21 15:52:10 · 95 阅读 · 0 评论 -
Codeforces1398C Good Subarrays (思维 + 前缀和)
题目链接: Good Subarrays大致题意给定一个长度为n的序列, 问有多少个连续子序列满足∑i=1nai=r−l+1\displaystyle \sum_{i = 1}^na_i = r - l + 1i=1∑nai=r−l+1.解题思路思维我们考虑枚举右端点rrr来计算答案:设[l,r][l, r][l,r]满足条件, 我们应该找到有多少个lll满足要求.设s[]s[]s[]为aaa的前缀和数组, 则[1,r][1, r][1,r]的和为s[r]s[r]s[r], 我们希望s[r原创 2021-09-17 20:24:59 · 170 阅读 · 0 评论 -
Codeforces1567D Expression Evaluation Error (贪心)
题目链接: Expression Evaluation Error大致题意给定s,ns, ns,n 表示你需要找到nnn个十进制, 并且这nnn个数字加和为sss.现在把你找到的nnn个数字看成11进制. 要求这nnn个数字在11进制下尽可能大.解题思路贪心首先如果我们可以保证不拆分sss(即: sss的所有数位之和大于等于n), 那么我们转化为11进制后, 是可以保证贡献不损失的.反之, 我们一定要拆分sss, 且我们希望尽可能拆分低位.我们由于最终一定要选出nnn个数字, 因此我们不妨原创 2021-09-11 10:30:05 · 115 阅读 · 0 评论 -
Codeforces1567E Non-Decreasing Dilemma (线段树区间合并)
题目链接: Expression Evaluation Error大致题意给定长度为nnn的序列aaa, 有两种操作:1 pos c 修改apos=ca_{pos} = capos=c.2 l r 询问区间存在多少个连续非递减子序列.解题思路思维我们先只考虑查询操作: 对于一段长度为lenlenlen的连续非递减子序列而言, 其中会有∑i=1leni\displaystyle \sum_{i = 1}^{len}ii=1∑leni个符合要求的序列.因此我们只需统计[l,r][l, r][原创 2021-09-11 10:12:07 · 176 阅读 · 0 评论 -
Codeforces1263E Editor (线段树 + 括号序列)
题目链接: Editor大致题意给出一系列操作, 问每次操作结束后, 括号能否正确匹配. 若可以, 则输出最大匹配深度, 否则输出-1.解题思路线段树 很经典的线段树区间合并处理括号匹配问题.关于线段树的括号匹配问题, 目前我知道的有两种: 一种是询问正确匹配括号个数, 另外一种是询问能否成功匹配, 以及匹配最大深度问题.对于一个区间而言, 括号能否成功匹配有两个判断标准:①左右括号数量要相同②任意前缀中, 右括号的数目不能大于左括号的数目.如果我们把左括号看为+1, 右括号看为-1,原创 2021-09-08 15:58:39 · 217 阅读 · 0 评论 -
Codeforces1295D Same GCDs (欧拉函数)
题目链接: Same GCDs大致题意给定a,ba, ba,b. 问有多少个x,x∈[0,m−1]x, x\in[0, m - 1]x,x∈[0,m−1] 满足gcd(a,b)=gcd(a+x,b)gcd(a, b) = gcd(a + x, b)gcd(a,b)=gcd(a+x,b).解题思路思维 + 欧拉函数等式: gcd(a,b)=gcd(a+x,b)gcd(a, b) = gcd(a + x, b)gcd(a,b)=gcd(a+x,b).令d=gcd(a,b)d = gcd(a, b)d原创 2021-09-06 20:09:18 · 116 阅读 · 2 评论 -
Codeforces1295E Permutation Separation (线段树 + DP)
题目链接: Permutation Separation大致题意给定长度为nnn的序列aaa. aaa为1~n所有元素的一个排列.给定长度为nnn的序列bbb, 表示操作第iii个元素的花费为bib_ibi.你需要选定k∈[1,n−1]k \in [1, n - 1]k∈[1,n−1], 使得原序列分成两部分: left={a1,a2,...,ak},right={ak+1,ak+2,...,an}left = \{ a_1, a_2, ..., a_k \}, right = \{ a_{k +原创 2021-09-06 19:37:50 · 88 阅读 · 0 评论 -
Codeforces380C Sereja and Brackets (线段树区间合并)
题目链接: Sereja and Brackets2021年9月1日 翻新了题解大致题意给定一个括号序列, 编号从1~n.有m组询问, 每次询问[l,r][l, r][l,r]能够成功匹配的左右括号总数.解题思路本题解法是十分经典的线段树处理括号序列问题的做法.思维首先考虑对于单个位置, 要么是左括号, 要么是右括号, 一定无法匹配.接下来考虑选取两个位置, 只有左括号 + 右括号的情况可以匹配, 此时产生贡献.扩展: 当两个区间进行合并时, 左区间未匹配的左括号与右区间未匹配的右括号会原创 2021-09-01 13:01:19 · 361 阅读 · 1 评论 -
Codeforces1556E Equilibrium (线段树 + 最大连续子段和 + 括号匹配 / RMQ) (好题)
题目链接: Compressed Bracket Sequence大致题意给出长度为n的序列a,ba, ba,b.对于每个询问区间[l,r][l, r][l,r]: 你可以进行若干次操作, 每次操作必须选择偶数个下标p1,p2,p3,p4...p_1, p_2, p_3, p_4...p1,p2,p3,p4... 对于第奇数个下标, 在apia_{p_i}api处+1, 对于第偶数个下标, 在bpib_{p_i}bpi处+1.问: 能否在进行若干次操作后, 使得ai=bi,i∈[l,原创 2021-09-01 12:45:14 · 291 阅读 · 2 评论 -
Codeforces1556C Compressed Bracket Sequence (思维) (好题)
题目链接: Compressed Bracket Sequence大致题意给定一个数字序列aaa, 奇数位置表示有多少个左括号, 偶数位置表示有多少个右括号.现在问有多少个连续的子段, 满足子段中的括号可以正确匹配.解题思路思维 (感觉这个题好难啊, 可能是我不配打ACM, 555)我们不妨枚举lll, 统计以当前lll处的左括号为起始的合法序列数量. 这样我们可以保证答案是不重不漏的.此时产生的贡献有两种情况: ①lll位置的左括号与后续右括号成功匹配时的贡献. ②lll位置开始的合法子序列原创 2021-08-31 19:12:07 · 239 阅读 · 0 评论 -
Codeforces1562D2 Two Hundred Twenty One (hard version) (思维)
题目链接: Two Hundred Twenty One (hard version)大致题意给定长度为n, 且仅由’+’, '-'构成的序列, 分别表示这个位置的值为+1, -1.现在从中取出[l,r][l, r][l,r], 组成长度为r−l+1r - l + 1r−l+1的新序列aaa. 定义: C=a1−a2+a3−a4...C = a_1 - a_2 + a_3 - a_4 ...C=a1−a2+a3−a4...我们可以任意删除某些位置的数字(删除后, 该位置后的数字会向前补位),原创 2021-08-29 14:42:45 · 189 阅读 · 0 评论 -
Codeforces1562C Rings (思维)
题目链接: Rings大致题意给定一个长度为nnn二进制串, 要求你选择出两个长度大于等于⌊n2⌋\lfloor \frac n2 \rfloor⌊2n⌋的, 且不相同区间. 使得这两个区间的二进制子串构成的数字a,ba, ba,b 满足 a=b∗k(k≥0)a = b * k (k \ge 0)a=b∗k(k≥0).题目要求: 输出任意一组合法区间.解题思路思维 (感觉这题的思路有点做构造题的感觉)首先如果二进制串是全1串, 则我们选取[1, n - 1], [2, n]一定满足题意.反原创 2021-08-27 10:25:10 · 240 阅读 · 0 评论 -
Codeforces1562B Scenes From a Memory (思维)
题目链接: Scenes From a Memory大致题意给定一个十进制数字(数位中不包含0), 你可以删除任意数位.要求保留尽可能少的数位, 且使得剩余的数字是非质数或1. (题目保证一定有解)解题思路思维显然, 如果给出的数字包含{ 1, 4, 6, 8, 9 }, 那么我们一定可以仅保留一位数字.反之, 我们保留两位数字一定可以满足题意.证明: 首先这个数字一定是由{ 2, 3, 5, 7 }构成.如果这个数字中包含两个相同的数字, 则保留他们, 最终的数字一定是11的倍数.原创 2021-08-27 09:46:35 · 370 阅读 · 0 评论 -
Codeforces1553E Permutation Shift (思维)
题目链接: Permutation Shift大致题意你有初始长度为nnn的序列a={1,2,3,...,n}a = \{1, 2, 3, ..., n\}a={1,2,3,...,n}.你可以将整个序列右移k(k∈[0,n−1])k(k \in [0, n - 1])k(k∈[0,n−1])位, 超出的部分会移动到序列开头. 随后有至多m(m∈[0,n3])m(m \in [0, \frac{n}{3}])m(m∈[0,3n])次交换操作, 可以选择序列中任意两个元素进行交换.现给出序列bbb,原创 2021-08-23 09:54:52 · 123 阅读 · 0 评论 -
Codeforces1554D Diane (构造)
题目链接: Diane大致题意给定一个nnn, 表示要构造出的字符串长度.所构造出的字符串sss应满足: ①∣s∣=n|s| = n∣s∣=n ②sss由小写字母组成 ③sss中任意连续子序列应在串中出现奇数次.解题思路思维一般考虑到用小写字母构造字符串的题目, 我们应考虑到用尽可能少的字母来完成题目要求.对于本题: 如果某个字符出现仅一次, 则一定满足要求. 反之(以字母a为例), aa, aaaa这样的子串, 奇数长度的段会出现偶数次, 不符合题意. 而aaa, aaaaa这样的子串, 偶原创 2021-08-22 11:19:08 · 132 阅读 · 0 评论 -
Codeforces1554C Mikasa (思维 位运算)
题目链接: Mikasa大致题意给定非负整数nnn和mmm, 设集合st={n⊕0,n⊕1,n⊕2...,n⊕m}st = \{ n \oplus 0, n \oplus 1, n \oplus 2 ..., n \oplus m \}st={n⊕0,n⊕1,n⊕2...,n⊕m}.求: MEX({st}).解题思路思维考虑到xor的性质, a⊕b=ca \oplus b = ca⊕b=c <==> a⊕c=ba \oplus c = ba⊕c=b. 我们不妨认为n=a,b=mn =原创 2021-08-22 10:38:53 · 291 阅读 · 0 评论 -
Codeforces1557D Ezzat and Grid (线段树 + DP)
题目链接: Ezzat and Grid大致题意给出n个全0序列, 编号从1~n. 有m个操作: id l r, 表示把编号为ididid序列的[l,r][l, r][l,r]赋值为1.现在要求你删除尽可能少的的序列. 使得余下的k个序列按照编号从小到大排成k排, 其中相邻序列中为1的子段的交集不为空集.最终输出最少删除序列的数目, 以及被删除的序列编号.解题思路考虑题目要求我们删除尽可能少的序列, 我们可以转换为保留尽可能多的序列.思维 为了便于阐述, 进行如下定义: 如果两个序列为1原创 2021-08-12 01:07:11 · 147 阅读 · 2 评论 -
Codeforces1557C Moamen and XOR (组合数学 思维)
题目链接: Moamen and XOR大致题意给定n和k. 让你构造出一个长度为nnn的序列a[], 每个元素小于2k2^k2k.要求序列满足 a1a_1a1 & a2a_2a2 & a3a_3a3 & … & ana_nan ≥ a1a_1a1 ⊕ a2a_2a2 ⊕ a3a_3a3 ⊕ … ⊕ ana_nan问: 一共有个满足要求的序列.解题思路思维下文提到的数字请看做二进制的形式!!! 为了简便叙述, 记andandand为原原创 2021-08-10 11:06:16 · 242 阅读 · 2 评论 -
Codeforces437C The Child and Toy (思维)
题目链接: The Child and Toy大致题意给出有n个顶点, m条边的无向图.删除掉一个点的代价是: 所有与该点相连的, 且未被删除的点的权值和.问: 删除掉所有点的最小代价是多少.解题思路思维考虑到最终情况是, 图中所有的点都被删除了, 且图中不存在任何边.我们分析所有边对答案的贡献. 每一条边(a, b)被删除, 要么是删除b, 增加waw_awa的贡献, 要么是删除a, 增加wbw_bwb的贡献.因此最终答案就是∑i=1mmin(wa,wb)\displaystyle\原创 2021-08-06 11:27:53 · 92 阅读 · 0 评论 -
Codeforces282E Sausage Maximization (01Trie)
题目链接: Sausage Maximization大致题意给出长度为n的序列aaa, 你需要选择一个前缀与后缀, 选择的前后缀不能相交, 可以为空.问: 在所有的选择中, 前缀与后缀的所有元素异或结果最大是多少?解题思路01Trie首先考虑一个简化模型, 给出一个序列, 可以选择两个不同位置的数字, 求异或的最大结果.我们可以用01Trie, 通过枚举其中的一个数字来计算出当前最大结果, 最后答案是所有结果取max即可.对于本题: 我们可以把所有前缀存入Trie中, 然后枚举每一个后原创 2021-08-04 20:54:40 · 131 阅读 · 0 评论 -
Codeforces665E Beautiful Subarrays (01Trie)
题目链接: Beautiful Subarrays大致题意给定一个长度为n的序列aaa.问: 有多少个连续的子序列满足其内部所有元素异或的结果大于等于kkk.解题思路思维首先我们考虑对于这种询问区间个数的问题, 我们暴力枚举左右端点的复杂度一定是爆炸的.我们通常会采取一种枚举右端点的方式来优化复杂度.对于本题而言, 我们的做法是: 枚举当右端点为r时, 找出有多少个左端点l符合要求.考虑到异或满足前缀和的性质, 不妨记序列sss为aaa的前缀异或数组. 则我们求[l, r]的异或结果,原创 2021-08-04 17:42:23 · 183 阅读 · 0 评论 -
Codeforces633C Spy Syndrome 2 (单词Trie)
题目链接: Spy Syndrome 2大致题意给定一个长度为n的字符串str, 全部由小写字母组成.接下来给出单词列表, 共包含m个单词, 每个单词由大写和小写字母组成.字符串str可以保证是由若干个单词组成, 但是进行了加密.加密操作: 每个单词的所有字母都被转换成小写字母, 并且进行了翻转.要求你复原出str, 并且在单词与单词之间加上空格输出.解题思路本题不推荐看其他用Trie + dfs的题解, 理论上复杂度应该是爆炸了.网上深搜的做法都是把单词翻转存入Trie, 但是我反过来原创 2021-08-03 16:27:45 · 190 阅读 · 0 评论