atcoder
mayaohua2003
这个作者很懒,什么都没留下…
展开
-
Atcoder agc041简要题解
A - Table Tennis Training略B - Voting Judges略C - Domino Quality当N≤3N\leq 3N≤3时特判。经过一些构造,可以在N=4,5,6,7N=4,5,6,7N=4,5,6,7时都构造出每行每列恰有333个的方案,具体构造的方案可以看代码。注意到在NNN的一个每行每列恰有333个的方案右下方放一个N=4N=4N=4的方案,就可以...原创 2020-04-06 23:31:28 · 612 阅读 · 0 评论 -
Atcoder agc040简要题解
补一下最近几场的agc。A - ><略B - Two Contests略C - Neither AB nor BA先考虑没有′C′'C'′C′的情况。注意到如果存在多对′AA′'AA'′AA′或′BB′'BB'′BB′且有解,随便消去一对都可以得到一组合法解。那么考虑将2k−12k-12k−1和2k2k2k分一组,如果相同直接消掉,易证有解当且仅当剩下的′AB′'AB'′A...原创 2020-04-03 11:53:37 · 950 阅读 · 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 · 387 阅读 · 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 · 656 阅读 · 0 评论 -
Atcoder agc029E
先考虑一个点的总体访问顺序。我们发现一个点的子树内部可以划分为若干个根节点单调递增的连通块,满足连通块内部编号均小于根。于是我们访问的时候会依次访问这些连通块。对于两棵子树,我们会把连通块按根的编号归并起来访问,加入一个根节点会将根的编号最小的几个连通块与它合并。可以用线段树合并简单支持维护这些连通块,并记录它们的大小。再考虑计算cic_ici。对于点iii,它到111号点路径上的所有节点均需...原创 2020-03-05 22:15:59 · 285 阅读 · 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 · 373 阅读 · 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 · 304 阅读 · 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 · 289 阅读 · 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 · 350 阅读 · 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 · 362 阅读 · 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 · 275 阅读 · 0 评论 -
Atcoder agc027F
先考虑至少有一个点未操作的情况。我们枚举一个未操作的点rtrtrt,令AAA和BBB以rtrtrt为根,那么需要操作的是在AAA和BBB中父亲不同的点,且合法必须满足未操作的点在两棵树分别形成与rtrtrt相连的连通块。如何判定是否可行呢?考虑我们操作一个点的时候它必须是叶子,于是对于一个需要操作的点,它在AAA中的儿子必须比它先操作,在BBB中的儿子必须比它后操作,用拓扑排序判定即可。再考虑所...原创 2020-03-05 11:40:50 · 296 阅读 · 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 · 273 阅读 · 0 评论 -
Atcoder agc037F
可以发现如果一个区间(l,r)(l<r)(l,r) (l<r)(l,r)(l<r)能合并,那么一定存在一个方案使得合并成的level为maxi=lrAi+1\max_{i=l}^{r}A_i+1maxi=lrAi+1。考虑递归计算区间(l,r)(l,r)(l,r)的答案。当(l,r)(l,r)(l,r)不为平凡区间时,取出其中所有的最大值xxx,它们将(l,r)(l,r)...原创 2020-03-05 10:25:23 · 420 阅读 · 0 评论 -
Atcoder agc029C
简单题。考虑二分答案后判定,从前往后处理,每次肯定会贪心取能取的字典序最小串,用栈维护进位即可。时间复杂度O(nlogn)\mathcal O(n\log n)O(nlogn)。#include <bits/stdc++.h>#define FR first#define SE secondusing namespace std;typedef pair<in...原创 2020-03-05 10:05:24 · 326 阅读 · 0 评论 -
Atcoder agc036E
不会做的好题。先将连续的相同字符缩起来。不妨设这样得到的SSS中,出现次数按降序排列为AAA,BBB和CCC,显然这样答案的上界是3⋅C3\cdot C3⋅C的出现次数。设CCC有kkk个,那么中间有k−1k-1k−1个非空的仅含交替的ABABAB的段,两端还各有一个可以为空的仅含交替的ABABAB的段。若AAA和BBB出现次数相同,我们发现我们可以每次删掉一对相邻的ABABAB或BABABA...原创 2019-12-11 09:01:19 · 317 阅读 · 0 评论 -
Atcoder arc093F
简单的容斥DP。显然111所在位置是不重要的,不妨设p1=1p_1=1p1=1。那么我们可以发现111要比赛的人是另外NNN个大小分别为202^020,212^121,.........,2N−12^{N-1}2N−1的有序集合的最小值。111能获胜即等价于这些集合的最小值均不为AiA_iAi。直接算不好做,考虑容斥,钦定若干个AiA_iAi为某些集合的最小值。按iii从大往小考虑,设F...原创 2019-12-10 23:35:29 · 212 阅读 · 0 评论 -
Atcoder agc021E
易知一只变色龙最后是红色,当且仅当他吃的红球比蓝球多或红蓝数目相等且最后一个是蓝球(至少吃一个红球)。考虑如何判定一个方案是否合法。显然一个合法的方案红球数目不小于蓝球,不妨设红球比蓝球多ppp个(p≥0p\geq 0p≥0),那么红球有K+p2\frac{K+p}{2}2K+p个,蓝球有K−p2\frac{K-p}{2}2K−p个,这里要求红球数目至少是NNN。显然当p≥Np\geq N...原创 2019-12-10 22:59:28 · 286 阅读 · 0 评论 -
Atcoder agc031D
漏了一题可还行。。。这个显然是我不会的群论题,虽然也不用太高深的知识,可能说是找规律题更合适。用置换的符号,可以发现f(p,q)=q⋅p−1f(p,q)=q\cdot p^{-1}f(p,q)=q⋅p−1,这里⋅\cdot⋅指的是置换的复合。于是有:a1=pa_1=pa1=pa2=qa_2=qa2=qa3=qp−1a_3=qp^{-1}a3=qp−1a4=qp−1q−1a_4=...原创 2019-12-10 22:05:00 · 273 阅读 · 0 评论 -
Atcoder agc026E
对于第iii组匹配的aaa和bbb,我们可以将按位置将它们称为(pi,qi)(p_i,q_i)(pi,qi)。将原序列中的aaa看做111,bbb看做−1-1−1,那么前缀和为000的位置就将序列分为了若干段。显然每组pip_ipi和qiq_iqi都在同一段中,且同一段中相应的pip_ipi和qiq_iqi的大小关系不变。我们称pi>qip_i>q_ipi>qi...原创 2019-12-10 20:12:22 · 286 阅读 · 0 评论 -
Atcoder arc096E
显然考虑容斥,求出钦定前kkk种调料最终使用不超过111次的方案数F[k]F[k]F[k]即可。考虑如何求出FFF。对于一个方案,我们可以考虑其中所有使用了这kkk种调料中某几种的拉面,那么它们显然将这kkk种调料中用了一次的调料分为了若干个非空集合,不妨设分成了ccc个集合,枚举用了一次的调料数目,可知对应的方案数为∑i=ck(ki)⋅s(i,c)⋅22n−k⋅2c⋅(n−k)\sum_{i=...原创 2019-12-10 19:59:05 · 522 阅读 · 0 评论 -
Atcoder arc091F
显然是算SG函数。打个表出来,会发现SG(n,k)SG(n,k)SG(n,k)当n mod k=0n\bmod k=0nmodk=0时为n/kn/kn/k,不过其他情况下似乎不能直接O(1)\mathcal O(1)O(1)得出。仔细分析一波,容易归纳证明SG(n−⌊nk⌋,k)SG(n- \lfloor \frac{n}{k} \rfloor,k)SG(n−⌊kn⌋,k)到SG(n,k)S...原创 2019-12-06 22:27:17 · 283 阅读 · 0 评论 -
Atcoder agc028F
考虑从大往小枚举左上角(i,j)(i,j)(i,j),求出所有能到达的点的权值和sum[i][j]sum[i][j]sum[i][j]。如果(i,j+1)(i,j+1)(i,j+1)和(i+1,j)(i+1,j)(i+1,j)中至多只有一个非障碍格子,那么容易计算。否则直接加上sum[i][j+1]sum[i][j+1]sum[i][j+1]和sum[i+1][j]sum[i+1][j]sum[...原创 2019-12-06 21:46:52 · 484 阅读 · 0 评论 -
Atcoder agc035F
完全不会的神仙结论题。考虑对于一个方案(k1,k2,...,kN,l1,l2,...,lM)(k_1,k_2,...,k_N,l_1,l_2,...,l_M)(k1,k2,...,kN,l1,l2,...,lM),如果∃1≤i≤N\exist 1\leq i\leq N∃1≤i≤N使得lki+1=il_{k_i}+1=ilki+1=i,那么将kik_iki减去111,lkil_...原创 2019-12-06 21:00:54 · 236 阅读 · 0 评论 -
Atcoder arc101E
简单的容斥DP。考虑容斥,钦定某些边不被任何路径经过。这样就将原树分为了若干个连通块,每个连通块内部需要两两匹配,注意这样的每个连通块需要有偶数个点。考虑DP,设F[i][j]F[i][j]F[i][j]表示考虑以点iii为根的子树,iii所在的连通块有jjj个点,除iii所在的连通块以外的点已经容斥后匹配好了的贡献。转移的时候大致是合并若干个子树的背包,并讨论一下跟父亲的边是否容斥掉即可。...原创 2019-12-06 19:38:50 · 280 阅读 · 0 评论 -
Atcoder arc095F
考虑逆排列p−1=qp^{-1}=qp−1=q,那么就是对于∀1<i≤n\forall 1<i\leq n∀1<i≤n,qiq_iqi与maxj=1i−1qj\max_{j=1}^{i-1}q_jmaxj=1i−1qj间连了一条边。那么容易发现连出来的树是一个毛毛虫的形状,其中主链上的点是所有qqq的前缀最大值。那么显然将给定的树的直径拿出来贪心算一下即可,注意q1q_...原创 2019-12-06 19:25:16 · 225 阅读 · 0 评论 -
Atcoder agc036F
当时改题的时候没有意识到这个奇怪题意给出的性质,结果完全不会。这个问题本身大致是一个不太可做的完美匹配计数,不过我们注意到对于每个iii,它能匹配到的PiP_iPi是一个区间[Li,Ri][L_i,R_i][Li,Ri],且LLL与RRR均单调不增。如果所有iii均有Li=0L_i=0Li=0,那么我们容易对RiR_iRi排序后O(N)\mathcal O(N)O(N)计算。考虑一...原创 2019-12-01 17:13:02 · 245 阅读 · 0 评论 -
Atcoder agc028C
考虑将所有的AAA和BBB从小到大排序。若前nnn小中全部都是AAA或全部都是BBB容易构造达到下界。否则若同时存在某个AiA_iAi或BiB_iBi也可以构造达到下界(同时存在AiA_iAi和BiB_iBi的iii的个数等于同时不存在AiA_iAi和BiB_iBi的iii的个数,那么我们可以在环上交替放两种数,最后将剩余的只存在AiA_iAi或只存在BiB_iBi的数插在它们之...原创 2019-12-01 16:49:23 · 263 阅读 · 0 评论 -
Atcoder agc023F
考虑相邻交换的思想,对于两个相邻的段xxx和yyy,若它们交换后仍然合法且s1x⋅s0y≤s1y⋅s0xs1_x\cdot s0_y\leq s1_y\cdot s0_xs1x⋅s0y≤s1y⋅s0x,我们交换它们后答案不会变劣。现在对于树上的情况,我们取出目前没有被选且s1s0\frac {s1}{s0}s0s1最小的连通块,若它的根的父亲已经被选,我们就选了它,否则容易证明它一定会...原创 2019-12-01 16:14:06 · 407 阅读 · 0 评论 -
Atcoder agc032C
这题是个大讨论题。因为图连通且每条边恰经过一次,所以三个环可以拼成一个欧拉回路,因此可以尝试从欧拉回路的角度考虑。原图必须存在欧拉回路,有奇点显然无解。有度数≥6\geq 6≥6的点一定有解(任取一条从该点出发的回路,至少经过该点333次,每次即为一个环)。否则若度数全为222或仅有一点度数为444显然无解。还可以发现若存在至少333个度数为444的点也一定有解(设三个点为A,B,C,同...原创 2019-12-01 16:00:22 · 368 阅读 · 0 评论 -
Atcoder agc025E
自闭选手又做不出构造题了,关键是没想到把两条路径合并成一条。先猜测结论,答案可以达到∑i=1N−1min(2,ci)\sum_{i=1}^{N-1} \min(2,c_i)∑i=1N−1min(2,ci)的上界,其中cic_ici是经过第iii条边的路径数目。考虑每次缩掉一个度为111的节点uuu的构造。设跟uuu直接相连的边为iii。若ci=0c_i=0ci=0可以直接缩,ci=...原创 2019-12-01 15:36:03 · 488 阅读 · 0 评论 -
Atcoder arc100F
正难则反,考虑计算所有不colorful的序列SSS的贡献和。我们称一个序列是diff的当且仅当它不存在两个值相同的元素,那么colorful的定义就是包含一个长度为KKK的diff序列。先预处理出F[i][j]F[i][j]F[i][j]表示长度为iii且不colorful的序列中有多少个包含结尾的极长diff子序列长度恰为jjj的。这个可以用简单的DP实现。我们可以注意到一个事实,所有不...原创 2019-12-01 15:12:26 · 276 阅读 · 0 评论 -
Atcoder agc032D
这题有个一眼的dp式,设F[i][j]F[i][j]F[i][j]表示将原序列中权值在[i,j][i,j][i,j]中的点排序的最小代价,转移直接枚举一下左右端点。很可惜是假的,可以被5 1 2 3 4 7 8 9 10 6这种数据卡掉。考虑靠谱的做法,每次旋转只会改变一个数和其他数的相对位置,所以如果改变一个数的相对位置,一定会改到最终的位置。那么设F[i][j]F[i][j]F[i][j...原创 2019-11-26 22:17:12 · 228 阅读 · 0 评论 -
Atcoder agc024D
注意到若两个点为根的树深度不同一定不同构,因此答案的下界为⌈d2⌉\lceil \frac{d}{2}\rceil⌈2d⌉(ddd为直径长度),并且容易达到下界。若ddd为偶数,我们取原树的中心(直径的中点,在边上)为midmidmid,容易证明以midmidmid为根后,任意一层的点都需要儿子数目相同,于是根据原树可以得到每一层儿子数目的下界,容易求出最小叶子数目。若ddd为奇数也类似,不...原创 2019-11-26 22:08:48 · 262 阅读 · 0 评论 -
Atcoder agc025F
做了几天也不会,最后弃疗看了题解。其实做法大概和题解差不多的,就是没想到势能分析后暴力复杂度是对的。。。对于某一位,任意时刻两个数的值可能有四种状态(000000,010101,101010,111111)。考虑从低位往高位依次处理进位关系。假设我们当前处理到某一位,依次维护了更低的位对这一位进位的状态(010101,101010,111111)和时间。一个显然的暴力是依次处理所有的操作,并且...原创 2019-11-26 21:44:50 · 474 阅读 · 0 评论 -
Atcoder agc039E
考完试才发现E是简单题。。。思考一下怎么样是合法的生成树。不妨设111号点跟kkk号点匹配,那么对于区间[2,k−1][2,k-1][2,k−1]和[k+1,n][k+1,n][k+1,n],我们会各自按顺序分成ccc段,每一段内部有奇数个点,其中其他点内部匹配,伸出一个点跨越中间的边跟另一边的一段伸出的一个点匹配,并且匹配的段是按跟111号点距离一一对应的。那么看起来就可以DP了,我们设F[...原创 2019-11-26 21:28:42 · 418 阅读 · 0 评论 -
Atcoder agc020E
这题看上去就有一股乱搞的感觉。注意到答案显然可以DP,对于一个字符串SSS,我们令F[S]F[S]F[S]代表SSS的所有子集的编码方案数之和。那么考虑最左边被编码的是哪个子串,有F[S]=(1+[S1=1])⋅F[S2...∣s∣]+∑ij≤nF[S1...i and Si+1...2i and ...S(j−1)i+1...ij]⋅F[Sij+1......原创 2019-11-26 20:59:28 · 337 阅读 · 0 评论 -
Atcoder agc037D
这题当时居然不会。。。我们显然是要让第一次行内重排后每一列内部为排列。考虑一个简单的算法,我们一列一列考虑,每次把权值和存在该权值的行找一个完美匹配即可。这个是否可行呢?注意到对于还剩ddd列的情况,任意取kkk个不同权值,恰会出现kdkdkd次,而每一行最多只剩ddd个数,因此至少会有kkk行存在这些权值之一,根据Hall定理,一定存在左部图到右部图的完美匹配。使用dinic算法的话时间...原创 2019-11-26 20:40:27 · 230 阅读 · 0 评论 -
Atcoder agc030F
我们忽略掉A2i−1A_{2i-1}A2i−1和A2iA_{2i}A2i均不为−1-1−1的iii,称最终序列中相邻两个数为一对匹配。考虑从大到小分配权值,每对匹配只有在较小的权值出现的时候才确定相对顺序。设F[i][j][k]F[i][j][k]F[i][j][k]表示考虑了不小于iii的权值,剩余没匹配的权值中恰有jjj个出现在AAA序列中,恰有kkk个没出现在AAA序列中。转移的时候...原创 2019-11-23 23:34:19 · 277 阅读 · 0 评论 -
Atcoder agc026D
O(nlogV)\mathcal O(n\log V)O(nlogV)出n=100n=100n=100的出题人nb。对于一个2⋅22\cdot 22⋅2的矩阵,其中黑白格子数目相同的等价条件是考虑四个相邻格子的异或和,那么相对的两组异或和分别相等,且不能四个异或和均为000。考虑如果给定的网格是n⋅mn\cdot mn⋅m的矩阵,我们确定了第一行和第一列的差分异或和的话,之后的每行每列也必须...原创 2019-11-23 23:06:52 · 566 阅读 · 0 评论