集训队作业
mayaohua2003
这个作者很懒,什么都没留下…
展开
-
Codeforces gym 102482 D
不妨最后再加上初始时的rrr个宝石。考虑某个人得到宝石个数的EGF,显然有F(x)=∑i≥0i!xii!=11−xF(x)=\sum_{i\geq 0}\frac{i!x^i}{i!}=\frac{1}{1-x}F(x)=∑i≥0i!i!xi=1−x1。那么总的分配数目为d![xd]Fn(x)=d!(n+d−1d)d![x^d]F^n(x)=d!\binom{n+d-1}{d}d![xd]Fn(x)=d!(dn+d−1)。这里为了方便,后面都除去d!d!d!。考虑组合意义,相当于每个人得到任意个原创 2020-12-25 23:18:40 · 597 阅读 · 0 评论 -
Codeforces gym 100531 E
不想再碰第二次的题目。首先我们需要对正则表达式建出对应的ϵ−NFA\epsilon-NFAϵ−NFA,这个就按正常的正则表达式解析就行。这里ϵ−NFA\epsilon-NFAϵ−NFA上的每条转移弧长度是000(ϵ\epsilonϵ)或111(字符)。不过我第一次写,出了一堆问题。这里的正则表达式允许空串,于是有可能出现连续的运算符。同时我按lrj书上介绍的方法把一些点合并了,然后WA爆了,不知道是我实现错了还是确实不可以,最后改成暴力做法才过。接着考虑怎么解决原问题。显然直接DP即可,令fi,jf_原创 2020-12-25 22:47:25 · 430 阅读 · 0 评论 -
Codeforces gym 101242 F
想了很久才会。这里实际上给出了一棵带权有根树,我们需要给每个点分配一个重儿子,使每个叶子得到一条链。令第iii条河流对应点到根深度为did_idi,显然它的答案为n−f(di)+1n-f(d_i)+1n−f(di)+1,其中f(di)f(d_i)f(di)为最多能分配出的长度≤di\leq d_i≤di的链数目。令S(i)S(i)S(i)为f(i)f(i)f(i)对应的某个方案中所选的≤i\leq i≤i的链的叶子集合。我们断言,对于∀j≥i\forall j\geq i∀j≥i,一定存在某个方原创 2020-12-25 22:34:31 · 355 阅读 · 0 评论 -
Codeforces gym 101173 L
不妨令所有变量以v1v^1v1为基准,相同为000,不同为111。那么考虑每个变量在另两组取值,可能是00,01,10,1100,01,10,1100,01,10,11。000000意味着在三组中都相同,可以用xi→!xix_i\to !x_ixi→!xi来限制。由于三组变量互相不完全相同,因此01,10,1101,10,1101,10,11中至少有两组出现。事实上,如果三组都出现了,显然无解,因为这时候令一组变量取值v∗v^*v∗在这三组中都取111,000000那组取000,那么任意选择(i,j原创 2020-12-25 22:10:21 · 223 阅读 · 0 评论 -
Codeforces gym 101239 G
被打爆了,看了claris的题解才会。考虑最终我们想要怎么样的结构:显然我们会从v2v_2v2开始,每ttt长度划一段(最后一段可能不满)。我们可以将模型转化为询问所有相邻两段的分界点,每个时刻可以询问若干个,使得询问时间形成一棵分治树,且对于每个分界点xxx,我们需要在它对应的速度到达lll之前或同时刻询问,否则之后我们会无法区分x−ϵx-\epsilonx−ϵ和x+tx+tx+t了。我们考虑枚举答案kkk。令rkr_krk表示到第kkk次询问我们还需要区分[v1,rk][v_1,r_k][v1原创 2020-12-25 22:00:58 · 240 阅读 · 0 评论 -
Codeforces gym 101221 A
这题wqy讲过,完全不懂。事实上,对于∀n≥3\forall n\geq 3∀n≥3,下面我们都可以给出一个nnn步的构造。这显然是一个下界:考虑定义一个局面的势能是iii和i+1i+1i+1都有箱子且种类不同的个数,初始局面势能是2n−12n-12n−1,最终局面势能是111,每次操作至多减少222的势能,因此至少要nnn步。如何构造呢?对于3≤n≤73\leq n\leq 73≤n≤7,我们都可以手构或搜索出一个nnn步的解。事实上,对于n=4∼7n=4\sim 7n=4∼7,有一个nnn步的解只原创 2020-12-25 21:48:10 · 245 阅读 · 0 评论 -
Codeforces gym 100269 I
比较恶心的搜索题。首先翻转操作至多用一次,且只有用和不用的区别,于是可以枚举是否使用。可以发现行和列的排列是无关的,且分别有646^464种。而数字的交换相当于允许任意排列,可以考虑最小表示法。这样一个算法就很明显了,我们直接对于每个数独,枚举它是否进行翻转操作,以及行和列的排列,最后求出得到的新数独的最小表示尝试匹配。但是这样复杂度有点高。由于操作是可逆的,容易发现可以用meet in middle来优化,对于一个数独我们枚举它是否进行翻转以及行的排列,得到一个中间状态,对于另一个数独我们枚举它做列原创 2020-12-25 21:36:32 · 194 阅读 · 0 评论 -
Codeforces gym 101173 B
先证明一个引理:在AAA中选一个点集SSS,BBB中选一个点集TTT,则V=S∪TV=S\cup TV=S∪T可被匹配覆盖,当且仅当SSS可被匹配覆盖且TTT可被匹配覆盖。必要性显然,充分性考虑找出一个覆盖SSS的匹配UUU,覆盖TTT的匹配VVV,则UUU与VVV的对称差一定是若干个偶环或链,容易调整成合法匹配。那么现在只需要对两边分别统计了。首先分别对两边的每个点集预处理出是否能被匹配覆盖。这可以利用Hall定理,预处理每个点集SSS的相邻点集N(S)N(S)N(S),看∣N(S)∣≥S|N(S)|原创 2020-12-25 21:29:17 · 243 阅读 · 0 评论 -
Codeforces gym 101173 I
比较麻烦的DP。预处理出来transi,j,ktrans_{i,j,k}transi,j,k表示提示iii和jjj同向,接下来的序列会从iii的初始位置开始并匹配完iii,且jjj已经匹配了前k−1k-1k−1个是否会合法。然后考虑做一个DP,从左往右依次加入数字。令fst,lv,ld,rv,rdf_{st,lv,ld,rv,rd}fst,lv,ld,rv,rd表示现在已经确定了集合ststst中的提示;现在从右往左的下一个提示是lvlvlv,我们现在的序列匹配了lvlvlv的ldldld开始的后缀原创 2020-12-24 12:47:40 · 258 阅读 · 0 评论 -
Codeforces gym 101190 L
首先写一个DP。从小到大排列质数p1=2,p2=3,…p_1=2,p_2=3,\ldotsp1=2,p2=3,…。令fi,jf_{i,j}fi,j表示用≥pj\geq p_j≥pj的质数凑出总和iii的方案数,gi,jg_{i,j}gi,j为对应的长度和。那么可以发现101810^{18}1018对应的最大的总和kkk在200020002000左右,可以承受。然后可以类似数位DP的思路来输出答案了:我们枚举总和,然后由于总和相同按字典序排列,因此可以从小往大搜索,记录当前前缀对应的数位和,如果中原创 2020-12-24 12:37:17 · 182 阅读 · 0 评论 -
Codeforces gym 100851 H
由于对称性,我们可以假设任意一个′x′'x'′x′作为t=0t=0t=0对应的立方体,以及任意确定方向,并给它的顶点标上坐标。然后我们考虑从这个立方体开始逐渐确定其他的立方体代表的是哪个,这是容易做到的:我们如果已经确定了一个正方体顶点对应的坐标,那么考虑它的六个面,若某个面与另一个正方体相连,我们相当于知道了那个正方体其中四个顶点的坐标,另外四个是相对的,容易确定。如果确定的过程中发现冲突,也即两个正方体代表的相同,显然就无解了。时间复杂度为O(1)\mathcal O(1)O(1)。#includ原创 2020-12-24 12:31:23 · 187 阅读 · 0 评论 -
Codeforces gym 101471 J
很厉害的题目。首先发现vvv是没有意义的,我们可以将Flubber流量乘上vvv,最后除vav^ava即可。我们先算出只考虑Flubber的最大流量AAA,只考虑水的最大流量BBB,以及总的最大流量CCC,显然C≥max(A,B)C\geq \max(A,B)C≥max(A,B)。那么我们可以发现一个性质:我们可以任意分配CCC给两种物质,只要满足分配给Flubber的W≤AW\leq AW≤A,分配给水的C−W≤BC-W\leq BC−W≤B即可。证明可以考虑最大流最小割定理:我们先加入一个超级源点原创 2020-12-24 12:25:15 · 227 阅读 · 0 评论 -
Codeforces gym 101612 H
问题相当于最大化最终树的最大匹配。考虑我们如果确定了一个加入连通块的顺序,使每个连通块的根节点指向之前连通块的某个节点。那么每次加入的新连通块如果原本的最大匹配必定包含根节点,显然加入后不会有额外的增量,随便找一个点作为父亲即可;否则如果之前连通块还有不在最大匹配中的节点(也即最大匹配不满),我们将它作为当前连通块根的父亲,可以有额外111的增量。那么现在算法就很明显了,我们显然会优先加入那些最大匹配必定包含根节点的连通块,然后加入那些没被匹配的点数>1>1>1的连通块,最后加入没被匹原创 2020-12-24 12:07:13 · 199 阅读 · 0 评论 -
Codeforces gym 100269 H
将每个串理解为它的k−k-k−前缀和k−k-k−后缀对应字符串(区分前后缀)之间的连边,我们可以得到一个二分图。原问题变为这个二分图的最小点覆盖。这是经典问题,直接dinic即可,最后我们选的点是残量网络中左部图与源点不连通和右部图中与源点连通的点。时间复杂度为O(nklogk+n32)\mathcal O(nk\log k+n^{\frac{3}{2}})O(nklogk+n23)。#include <bits/stdc++.h>#define inf 0x3f3f3f3f#de原创 2020-12-24 11:58:56 · 200 阅读 · 0 评论 -
Codeforces gym 101630 K
首先可以注意到对于序列aia_iai,我们可以倒着贪心来线性求解,这也说明对于任意的s mod qs\bmod qsmodq,要么无解要么有唯一解。而对于序列整体乘一个gcd(r,q)=1\gcd(r,q)=1gcd(r,q)=1的数字rrr,显然不改变解的存在性和唯一性。于是,我们说明了我们可以对序列整体乘一个rrr来求解。考虑取一个阈值BBB,对nnn按大小分别处理。对于n≤Bn\leq Bn≤B的情形,我们考虑直接解决这个背包问题。这里容易用折半搜索和哈希做到O(2n2)\mathcal O(原创 2020-12-24 11:54:26 · 189 阅读 · 0 评论 -
Codeforces gym 102511 J
可以发现只有1∼1091\sim 10^91∼109之间的lll是有用的。一个最暴力的想法是对每一个有用的lll,分别算出每名选手在此时的总得分,然后可以算出每名选手此时的排名并更新对应的答案,可惜lll的范围太大,这么做不太现实。不过我们可以换一个角度思考,我们只需要知道每名选手的最好排名,而排名的定义是分数不超过他的选手人数,那么我们可以尝试对于任意两名选手iii和jjj,算出在哪些时刻jjj的得分不超过iii的得分,这样也容易得到答案。事实上,下面我们将会证明,所有jjj得分不超过iii得分的时刻,原创 2020-12-24 11:37:58 · 196 阅读 · 0 评论 -
Codeforces gym 100851 B
首先我们需要观察一些二又十进制数字具有的性质:二又十进制数字的十进制表示下只有000和111,且最高位为111。二又十进制数字在十进制下的非空后缀去除前导零后一定为000或者二又十进制数字。(1)(1)(1)是显然的,而为了证明(2)(2)(2),我们需要先考虑形式化判定一个数字是否为二又十进制的过程。令n=(c1c2⋯ck)10n=(c_1 c_2\cdots c_k)_{10}n=(c1c2⋯ck)10,那么nnn是二又十进制的当且仅当c1=1,ci∈0,1,∀1≤i≤kc_1=1,c原创 2020-12-24 11:08:49 · 211 阅读 · 0 评论 -
Codeforces gym 101190 C
仙人掌可以看作是在一棵树上加入若干个边不相交的简单环所得到的无向图。那么我们分别考虑构造树和简单环,再尝试将它们组合起来,最终得到构造仙人掌的算法。树的构造可以考虑以任意节点作为根节点,DFS递归构造每个节点的子树。要构造某个节点xxx的子树,首先我们依次递归xxx的每个儿子yyy的子树,再将yyy的子树与节点xxx合并到同个图,顺便加入xxx与yyy之间的边。若我们将节点xxx设为颜色111,节点yyy设为颜色222,xxx所在图中其它节点设为颜色333,即可通过对xxx所在图中颜色111和222之间点原创 2020-12-24 11:05:43 · 161 阅读 · 0 评论 -
Codeforces gym 101142 B
简单构造题。首先转化为有xxx个人左右都是男生,yyy个人左右都是女生。接着可以发现这相当于隔222个位置的人之间,有xxx组都是男生,yyy组都是女生。先考虑另一个问题:一个长为nnn的环,有xxx对相邻的人都是男生,yyy对相邻的人都是女生,问有解条件。显然需要满足x+y≤nx+y\leq nx+y≤n且与nnn奇偶性相同,且x+y=nx+y=nx+y=n的话当且仅当x=nx=nx=n或y=ny=ny=n时有解(全为男生或全为女生)。如果x+y≤n−2x+y\leq n-2x+y≤n−2且与nnn奇原创 2020-12-21 22:32:38 · 188 阅读 · 0 评论 -
Codeforces gym 101471 G
若当前模式非空,考虑包含它的n∗mn*mn∗m的最小矩形,则它的四条边上都有满单元格。那么经过一次操作后,往外扩一格得到的(n+2)∗(m+2)(n+2)*(m+2)(n+2)∗(m+2)的新矩形四条边上都至少有两个满单元格,改变至多一个格子的状态后,四条边上仍至少有一个满单元格。这说明一个n∗mn*mn∗m的模式,经过一次操作后至少会变成(n+2)∗(m+2)(n+2)*(m+2)(n+2)∗(m+2)的。考虑倒推,若现在的模式是n∗mn*mn∗m的,我们尝试找出上一次的(下面的做法说明了如果存在,这是原创 2020-12-21 22:22:58 · 213 阅读 · 0 评论 -
Codeforces gym 100269 C
考虑直接枚举所有不同的串AAA(显然是初始串的子串)。若我们预处理出任意两个后缀的LCP,对于一个固定的串AAA,我们容易在O(count(A))\mathcal O(count(A))O(count(A))的时间复杂度内判定是否有合法方案。注意到∑Acount(A)=O(n2)\sum_{A}count(A)=\mathcal O(n^2)∑Acount(A)=O(n2),于是我们暴力枚举即可。时间复杂度为O(len2)\mathcal O(len^2)O(len2)。#include <b原创 2020-12-21 22:05:05 · 288 阅读 · 1 评论 -
IOI2021集训队作业
(即将)退役选手诈尸啦!今年的集训队作业来自于 21 场 ICPC 竞赛,所有竞赛均在 Codeforces 的 GYM 中可以找到(下面列表中结尾的数字代表其在 GYM 中的场次编号,例如 101221 对应 http://codeforces.com/gym/101221)。A 2014 ACM-ICPC World Finals,101221。B 2015 ACM-ICPC World Finals,101239。C 2016 ACM-ICPC World Finals,101242。D 2原创 2020-12-21 13:25:38 · 1029 阅读 · 0 评论 -
Atcoder agc021F
从左往右考虑每一列。设F[i][j]F[i][j]F[i][j]表示考虑到第iii列,已经有jjj行填了数,仅考虑这jjj行相对顺序的方案数。转移的时候考虑先插入一些新的行,再确定BiB_iBi和CiC_iCi。对于插入kkk行(k>0k>0k>0)的非平凡情况,可以发现贡献系数是(i+k+2k+2){i+k+2}\choose{k+2}(k+2i+k+2),一个组合解释...原创 2020-03-05 23:29:21 · 370 阅读 · 0 评论 -
Codeforces 613E
令两个串分别为s1s_1s1和s2s_2s2。设F[i][j][0/1][0/1]F[i][j][0/1][0/1]F[i][j][0/1][0/1]表示当前起点为s1s_1s1或s2s_2s2的前/后第jjj列(仅在前/后jjj列中匹配),从第iii个位置开始匹配完www的方案数,预处理一些lcp的信息即可快速计算。再考虑计算答案。忽略仅在s1s_1s1或s2s_2s2中选的平凡情...原创 2020-03-05 22:59:46 · 228 阅读 · 0 评论 -
Atcoder agc033E
不妨设SSS串开头为RRR,且忽略全为RRR的平凡情况。首先发现NNN段圆弧不能全为RRR,且不能有连续的两个BBB。设SSS中第一个BBB之前RRR的长度为kkk,那么对于每段连续为RRR的圆弧,上面的点经过kkk步后必须走到该段两端之一,因此长度必须为奇数且不超过kkk。注意到对于一个SSS中的BBB,操作前和操作后所有点都在所有与BBB圆弧相邻的点上。那么对于之后的SSS串中连续的RRR,...原创 2020-03-05 22:43:25 · 616 阅读 · 0 评论 -
Codeforces 528C
由于自环存在,讨论得比较繁琐。先随便给边定向,根据每个节点的入/出边数目奇偶性可以分为444种情况,其中(0,1)(0,1)(0,1)和(1,0)(1,0)(1,0)的点数奇偶性相同。对于(0,1)(0,1)(0,1)或(1,0)(1,0)(1,0),必须增加至少111条连到它的边,我们让它们两两匹配即可。这样只剩(0,0)(0,0)(0,0)和(1,1)(1,1)(1,1),由于翻转一条两端为...原创 2020-03-05 22:27:56 · 259 阅读 · 0 评论 -
Atcoder agc029E
先考虑一个点的总体访问顺序。我们发现一个点的子树内部可以划分为若干个根节点单调递增的连通块,满足连通块内部编号均小于根。于是我们访问的时候会依次访问这些连通块。对于两棵子树,我们会把连通块按根的编号归并起来访问,加入一个根节点会将根的编号最小的几个连通块与它合并。可以用线段树合并简单支持维护这些连通块,并记录它们的大小。再考虑计算cic_ici。对于点iii,它到111号点路径上的所有节点均需...原创 2020-03-05 22:15:59 · 272 阅读 · 0 评论 -
Atcoder agc038F
不知道为什么会是agc的F。考虑PPP和QQQ形成了若干个环。对于一个非平凡的环,有两种状态,即对于环上的数iii全部有Ai=iA_i=iAi=i或Ai=PiA_i=P_iAi=Pi(Pi≠iP_i\neq iPi=i)。这样可以将每个非平凡环作为一个0/10/10/1变量,而距离可以理解为对于某些PPP中的环和QQQ中的环的组合,变量同时取000或同时取111要付出111的代价。...原创 2020-03-05 22:05:47 · 328 阅读 · 0 评论 -
Atcoder agc036D
没有负环可以理解为能够给第iii个点一个距离值did_idi。由于iii到i+1i+1i+1有000边,因此di≥di+1d_i\geq d_{i+1}di≥di+1,且由于边权绝对值不超过111,因此di≤di+1+1d_i\leq d_{i+1}+1di≤di+1+1。为了使距离值合法,对于j<ij<ij<i,若dj=did_j=d_idj=di,不能有−1-1...原创 2020-03-05 14:31:18 · 290 阅读 · 0 评论 -
Atcoder agc027E
先考虑如何判定能否将字符串缩为单个字符。考虑将aaa当做111,bbb当做222,这样每次操作后,总和在 mod 3\bmod \ 3mod 3意义下不变,那么有解需要和在 mod 3\bmod 3mod3意义下不为000。并且若串长>1>1>1,需要有两个相邻的相同字符,容易归纳证明这个条件也是充要的,当存在两种字符时,每次操作一个abbabbabb类似的...原创 2020-03-05 14:03:21 · 278 阅读 · 0 评论 -
Codeforces 611H
简单转化一下模型,变为给定k≤6k\leq 6k≤6个集合,知道每个集合间的边的数目,要求构造一棵合法的树。注意到如果有解,一定存在一个方案,使得每个集合至多一个点不为叶子。于是有解的话一定可以从每个集合中取出一个点,构造一棵生成树,再将剩余的点连到这棵kkk个点的生成树上。由于kkk非常小,我们可以枚举这棵生成树的所有形态,只需判定是否可以将剩余的点挂到生成树上。原图中每条没有使用的边可以给...原创 2020-03-05 13:38:46 · 221 阅读 · 0 评论 -
Atcoder arc102F
完全不会的神仙结论题。我们称一次操作iii是将pi−1,pi,pi+1p_{i-1},p_i,p_{i+1}pi−1,pi,pi+1翻转(pi−1>pi>pi+1p_{i-1}>p_i>p_{i+1}pi−1>pi>pi+1)。首先可以发现一个性质,如果我们做了操作iii,那么永远不可能再做操作i−1i-1i−1或i+1i+1i+1了。考虑反证,...原创 2020-03-05 13:29:05 · 332 阅读 · 0 评论 -
Codeforces 626G
注意到在同一堆中放彩票的贡献是单调递减的,因此如果没有修改,可以用堆贪心求出最大期望收益。考虑修改操作,如果将lkl_klk减小111,在第kkk堆放的数目可能不变,减小111(原先放了lkl_klk张),或是增加若干张。我们断言若增加,只会增加111张,证明是假设原先放了ccc张,现在若放了c+2c+2c+2张以上,那么第c+2c+2c+2张一定替换了其他堆的某张彩票,设那张彩票的贡献为w...原创 2020-03-05 13:09:31 · 312 阅读 · 0 评论 -
Codeforces 666D
考虑枚举正方形顶点与四个点的对应关系,以及每个点是横向移动还是纵向移动。这样得到了对角线关系后,由于一条边的两个端点满足横坐标或纵坐标相同,我们就可以知道一些正方形横纵坐标的相关信息了。这里有一个特殊情况,有可能两个横坐标已知,而两个纵坐标均未知,此时两个纵坐标之间的距离确定。此时四个点均横向移动,因此纵坐标取值没有限制,我们需要得到最小移动距离,可以平移其中两个点的坐标,然后变为四个点移动到同...原创 2020-03-05 12:33:55 · 223 阅读 · 0 评论 -
Atcoder agc031E
考虑费用流。拆点行列模型,枚举总共选的个数kkk,理解成从小到大选匹配的kkk个横坐标和kkk个纵坐标。额外增加kkk个对应选择横坐标的点和kkk个对应选择纵坐标的点,我们可以将mmm个限制转化为对这2k2k2k个点选择范围的限制,这样可以得到一个点数为O(N+k)\mathcal O(N+k)O(N+k),边数为O(Nk)\mathcal O(Nk)O(Nk)的图,对它跑费用流即可。因为流量是...原创 2020-03-05 12:21:29 · 323 阅读 · 0 评论 -
Atcoder agc028D
如果使用类似agc039E的方法,由于已经给定了一些边,并不容易讨论。我们发现一个连通块事实上在圆上对应着一个区间[l,r][l,r][l,r](l<rl<rl<r),其中内部的点两两匹配,另外不存在l<k<rl<k<rl<k<r,使得[l,k][l,k][l,k]内部的点两两匹配。于是可以考虑对出度dp,枚举左端点lll,设F[i][j]F...原创 2020-03-05 11:55:31 · 265 阅读 · 0 评论 -
Codeforces 605E
设F[i]F[i]F[i]表示从iii号点出发到nnn号点最小期望时间。类似dijkstra算法,按FFF值从小往大确定每个点的最小期望时间并更新即可。时间复杂度O(n2)\mathcal O(n^2)O(n2)。#include <bits/stdc++.h>#define eps 1e-8using namespace std;typedef double db;...原创 2020-03-05 11:47:23 · 194 阅读 · 0 评论 -
Atcoder agc027F
先考虑至少有一个点未操作的情况。我们枚举一个未操作的点rtrtrt,令AAA和BBB以rtrtrt为根,那么需要操作的是在AAA和BBB中父亲不同的点,且合法必须满足未操作的点在两棵树分别形成与rtrtrt相连的连通块。如何判定是否可行呢?考虑我们操作一个点的时候它必须是叶子,于是对于一个需要操作的点,它在AAA中的儿子必须比它先操作,在BBB中的儿子必须比它后操作,用拓扑排序判定即可。再考虑所...原创 2020-03-05 11:40:50 · 278 阅读 · 0 评论 -
Atcoder agc024E
倒着考虑,从一个给定的ANA_NAN不断删除字符能得到多少种不同的方案。为了不计重复,我们要求每次删掉一个字符xix_ixi时,满足xi+1≠xix_{i+1}\neq x_ixi+1=xi,那么合法的条件是∃j≥i,xi=xi+1=...=xj,xj+1<xi\exist j\geq i,x_i=x_{i+1}=...=x_j,x_{j+1}<x_i∃j≥i,xi=xi...原创 2020-03-05 11:22:12 · 258 阅读 · 0 评论 -
Codeforces 536D
比较显然的博弈。预处理出sss和ttt到每个点的最短路,设F[i][j][0/1]F[i][j][0/1]F[i][j][0/1]表示Tavas最后一次操作了距sss前iii小的城市,Nafas最后一次操作了距ttt前jjj小的城市,0/10/10/1表示先手的情况下之后的博弈中先手比后手最多赢多少分。倒着dp即可,转移的时候需要用前后缀优化加速。时间复杂度O(n2+mlogm)\mathc...原创 2020-03-05 10:45:36 · 259 阅读 · 0 评论