
atcoder
文章平均质量分 63
YiPeng_Deng
这个作者很懒,什么都没留下…
展开
-
agc050F NAND
agc050F首先关键在于mod 2的性质使得对于一些对称的方案可以不考虑。如果有相邻两次操作没有交点,那么显然可以交换,其他不变得到相同的结果。具体来说不妨假设操作偶数条边,操作序列两个两个一组,如果没有交就与交换之后的抵消,因此每一组边都相交在可能被统计入答案。再考虑对于NAND操作,如果连续操作两次会发生什么。发现除了000,010,101对称的以外,都相当于是一个点连续吃掉两个点而自己不变,而上面的特殊情况又可以交换顺序使得方案为0,因此问题转化为了每一次选择一个点连续吃掉两个点。不妨考虑原创 2021-07-10 15:38:49 · 240 阅读 · 0 评论 -
agc018F Two Tree
agc018F Two Tree传送门Solution这是一道神奇的结论题。首先你可以手玩一下,可以发现如果根据一个节点儿子的个数可以确定当前权值的奇偶性,如果在两棵树中奇偶性不同则无解。进一步的可以感受到如果满足上面的条件只需要−1,0,1-1,0,1−1,0,1就可以构造出来。考虑关键的在于未确定的−1,1-1,1−1,1,我们需要一个东西来平衡子树内的权值。对于这种看起来是线性的构造问题,一般需要用图论、连边来解决。在我们本就不多的图论知识中,可以用欧拉回路原创 2021-07-08 21:45:28 · 232 阅读 · 0 评论 -
arc121简要题解
ARC121打UR去了,这里是补的题。A:简单取横纵坐标前kkk大或小的点,两两配对即可,kkk可以随意取到3.B:如果全部颜色的个数都为偶数则答案为0,否则考虑A,BA,BA,B为奇数,CCC为偶数,那么要么(Ai,Bj)(A_i,B_j)(Ai,Bj),要么(Ai,Ck),(Bj,Cl)(A_i,C_{k}),(B_j,C_l)(Ai,Ck),(Bj,Cl)配对,绝对值最小值直接排序指针扫一下。一开始没有考虑到后一种爬了。C:考虑将1−n1-n1−n依次放到对应的位置上,不妨假设现原创 2021-05-30 21:35:05 · 406 阅读 · 0 评论 -
arc120简要题解
arc120A:每一次加的都会变成最大值,因此简单计算即可。B:最后的对角线上都相同。C:对于ai+i=aj+ja_i+i=a_j+jai+i=aj+j的一一匹配即可。D:考虑111到nnn的和n+1n+1n+1到2n2n2n的两两匹配最大,设1−n1-n1−n为0,n+1−2nn+1-2nn+1−2n为1,贪心匹配即可。E:首先二分答案,然后考虑从前往后DP,设f[i],g[i]f[i],g[i]f[i],g[i]分别表示iii先往左走并与i−1i-1i−1匹配,回头的时间,以及iii先往原创 2021-05-27 22:50:28 · 389 阅读 · 0 评论 -
arc118简要题解
arc118简要题解A :先二分答案,然后再二分交税之后不超过答案的最大整数,判断即可。B:可以二分∣BiN−AiM∣|B_iN-A_iM|∣BiN−AiM∣,然后可以得到AiA_iAi的范围,判断一下是否能够构成MMM即可,实际上还可以考虑直接对于最优的情况AiA_iAi取小数的上取整或下取整中答案最小的那个,然后选择影响最小的进行调整即可。C:想了很久阴间构造,然后程序测试一下才发现2,3,5中任意两个的倍数大概有2600个可以过了。D:显然先找原根,假设a=gx,b=g原创 2021-05-10 20:21:48 · 469 阅读 · 0 评论 -
arc117C~F
arc117C假设三种颜色分别为0,1,2,那么操作相当于在模3意义下取-x-y,满足结合律,直接组合数算一下即可。D考虑将最后的点权按照从小到大的顺序排列,那么只需要考虑相邻的距离是否满足条件。因此对于相邻的直接取它们的距离即可。等价于求一个排列,点权即为上一个加上两者之间距离,等价于求从某个点开始到某个点结束经过所有点的路径长度最小,那么只有一条路径不会经过两遍,取直径即可。E考虑最后的折线,一层一层DP即可,设f[i][j][k]f[i][j][k]f[i][j][k]表示当原创 2021-04-20 20:23:37 · 349 阅读 · 0 评论 -
agc052E 3 Letters
Description传送门Solution首先由于相邻的都不一样,能不能用特殊的方法表示SSS呢?如果看作是在模3的情况下,我们可以发现相邻的要么是+1要么是-1,因此SSS等价一个数组aaa,ai%3=Sia_i\%3=S_iai%3=Si,∣ai−ai−1∣=1|a_i-a_{i-1}|=1∣ai−ai−1∣=1,在a1a_1a1确定的时候唯一确定。而操作可以看作将aia_iai加或减2,并且要求之后还满足上面的条件。现在我们要把SSS对应的aaa变成TTT对应的bbb,首原创 2021-03-10 10:44:13 · 284 阅读 · 0 评论 -
agc052A~D
A输出1+n个0+n个1B考虑用两两之间的距离来描述这棵树的边权,可以发现固定一个起点,操作u,vu,vu,v相当于交换dis(x,v),dis(x,u)dis(x,v),dis(x,u)dis(x,v),dis(x,u),然而当操作xxx以及xxx相邻的点的时候并不满足,因此考虑建一个虚点x′x'x′,与xxx相连并能够被修改,但是不能被操作,然后不失一般性也满足之前的结论。由于所有的dis(x′,v)dis(x',v)dis(x′,v)都要xor dis(x,x′)xor\ dis原创 2021-03-10 08:23:53 · 365 阅读 · 0 评论 -
arc113F Social Distance
Description传送门Solution考虑将恰好转化为至少,即两两距离不小于z的概率,这是一个函数f(z)f(z)f(z),之后只要对f(z)f(z)f(z)进行积分之后恰好就是答案了。对于一个固定的zzz,我们可以将模型转换一下,第iii个人对应的区间变为[xi−1−(i−1)z,xi−(i−1)z][x_{i-1}-(i-1)z,x_i-(i-1)z][xi−1−(i−1)z,xi−(i−1)z],那么两两之间距离不超过zzz等价于在这个新的区间随机,最后nnn个人单调递增。将原创 2021-02-23 21:24:56 · 416 阅读 · 0 评论 -
arc113E Rvom and Rsrev
Description传送门Solution如果a偶数那么b一定不删,末尾为b则删完a,为a则将a花费最小的代价聚在最后。如果a为奇数,最后为a那么用最小代价将a聚集,最后为b则看b是否大于2个,以及前面是否有b来确定是否花费2个b使得开头有b-2个b。注意花费最小代价聚集可以先将所有大小为1的两两消掉。如果用了b-2的操作则看看最后一段a如果有1个是否可以往前面换。总之一点讨论,有点复杂。#include<cstdio>#include<cmath>#in原创 2021-02-22 22:20:08 · 349 阅读 · 0 评论 -
arc111E Simple Math 3
Description传送门Solution如果i(B−C)+1≥Di(B-C)+1\ge Di(B−C)+1≥D就一定有,那么接下来要求∑i=1lim[Ci+AD−Bi+A−1D=1]=∑i=1limCi+AD−Bi+A−1D\sum_{i=1}^{lim}[\frac{Ci+A}{D}-\frac{Bi+A-1}{D}=1]\\=\sum_{i=1}^{lim}\frac{Ci+A}{D}-\frac{Bi+A-1}{D}i=1∑lim[DCi+A−DBi+A−1=1]=i=1原创 2021-01-10 20:48:18 · 313 阅读 · 0 评论 -
arc110F Esoswap
Description传送门Solution%g%m%h%7%7 orz。多做构造题还是不会NOIP首先要知道1是非常特殊的,我们不断操作1的位置可以使得这个序列不断地轮换。我们不断操作同一个位置,可以发现每一次操作获得到的数字都不相同,并且全部数字都会获得一次,直到0.证明可以考虑一个pip_ipi到pi+pip_{i+p_i}pi+pi的位置之后,想要动到它就要有pip_ipi,可是pip_ipi却已经在后面了,动不到。如果我们先固定小的数字,那么后面的灵活性就不大了,因原创 2020-12-08 22:37:33 · 456 阅读 · 0 评论 -
arc110E Shorten ABC
Description给一个只包含’A’‘B’'C’的字符串sss,每一次可以选择相邻的两个不相同的字符将它们合成与它们不同的字符。问sss经过任意次操作可以变成的不同的字符串有多少个∣S∣≤1e6|S|\le1e6∣S∣≤1e6Solution与agc027E一样假设ABCABCABC分别是123123123,那么如果不考虑相邻的不同的话,那么操作就是将x,yx,yx,y替换为x xor yx\ xor\ yx xor y,那么显然这个是满足结合律原创 2020-12-08 22:27:38 · 546 阅读 · 1 评论 -
arc109A~F
A.Hands贪心B.log贪心换最小C.Large RPS Tournament倍增DPD.L可以在小范围内BFS然后再将终点映射到这个范围内,但是很麻烦。将题意转化为三角形重心的移动,每一次可以向除了对角以外的七个方向移动,因此只需要在max(∣x∣,∣y∣)max(|x|,|y|)max(∣x∣,∣y∣)的基础上加上需要按照对角线调整的+1贡献即可(还要判掉同一个格子内的情况)E.1D Reversi Builder发现性质,1…1,11…1000…0,以及111原创 2020-12-04 09:44:06 · 474 阅读 · 0 评论 -
agc049A~D
A.Erasing Vertices想到了单独考虑一个点的贡献,可惜算的方法有问题,最后没有搞出来对于一个点,考虑能够到达它的点的个数是cntcntcnt,那么这个点被删去的概率为1cnt+1\frac{1}{cnt+1}cnt+11,因为这些点都是等概率的,答案就是∑1cnt+1\sum \frac{1}{cnt+1}∑cnt+11B.Flip Digits操作等价于将一个1向左边移动,如果左边是1则相消。直接每一个位置判断一下,如果不同找到右边的第一个1来修改即可C.Robots原创 2020-11-15 11:39:57 · 519 阅读 · 0 评论 -
arc107F Sum of Abs
arc107F Sum of Abs给一个无向图,点iii有ai,bia_i,b_iai,bi两个权值。现在你可以花费aia_iai的代价删掉iii,最后剩下来的连通块的∣∑bi∣|\sum b_i|∣∑bi∣的和就是贡献。求最大的:贡献-花费。n,m≤300n,m\le300n,m≤300Solution考虑在同一个连通块内的bi>0,bj<0b_i>0,b_j<0bi>0,bj<0,它们之间互相抵消构成绝对值的一个过程,不原创 2020-11-02 12:20:47 · 548 阅读 · 0 评论 -
arc106E Medals
Description有nnn个人,第iii个人会每隔aia_iai上班aia_iai天,初始都上班aia_iai天。现在每一天可以选择至多一个上班的人发奖牌,求最少多少天能够让每个人都拿到kkk个奖牌。n≤18,k,ai≤1e5,n\le18,k,a_i\le1e5,n≤18,k,ai≤1e5,Solution首先二分时间。考虑nnn很小,每一天对应一个人,可以直接hall定理,2n2^n2n枚举人暴力判定。由于最少2e5∗n2e5*n2e5∗n就可以做完,所以值域不大,可以暴原创 2020-10-27 20:04:40 · 461 阅读 · 0 评论 -
agc026F Manju Game
agc026F Manju Game从左到右有nnn个物品,每一个价值为aia_iai。现在A和B轮流取物品。不妨假设现在先手的人是A,他可以任意取一个,假设是xxx,后手的人可以取任意一个与xxx相邻的物品,如果取x+1x+1x+1,那么将轮流往右取直到没有,反之取x−1x-1x−1将轮流往左取直到没有。取完一个物品之后重标号。一开始A先手,A、B都想让自己取的物品最大,求他们在最优策略下最后各获得多大的价值。n≤3e5,ai≤1e3n\le3e5,a_i\le1e3原创 2020-10-23 22:05:50 · 445 阅读 · 0 评论 -
agc024F Simple Subsequence Problem
agc024F Simple Subsequence Problem给若干个01串,求一个最长的01串使得它是至少mmm个给出01串的子序列。在长度最长的情况下求输出字典序最小的01串。∣s∣≤20|s|\le20∣s∣≤20.Solution感觉这种题目就没有什么性质,只能暴力了。问题是怎么暴力。不妨考虑前面已经枚举了一个子序列,那么对于所有串尽可能地匹配,一开始我想记每一个串匹配到的位置,但是由于值域很小,只有2202^{20}220,我们可以状压后面剩下的串!那么记f原创 2020-10-23 20:38:26 · 2578 阅读 · 0 评论 -
agc033F Adding Edges
agc033F Adding Edges给你一棵 NNN 个点的树 TTT 和一个MMM条边的无向图GGG,对于GGG进行如下加边操作直到无法操作:选择a,b,ca,b,ca,b,c使得a,b,ca,b,ca,b,c以某种顺序在TTT的一条链上,并且存在边(a,b),(a,c)(a,b),(a,c)(a,b),(a,c)。将(b,c)(b,c)(b,c)加入GGG。问最后GGG中有多少边。N,M≤2000N,M\le2000N,M≤2000Solution有一种很妙的转化,如果链上原创 2020-10-23 15:45:23 · 287 阅读 · 0 评论 -
agc029F Construction of a tree
agc029F Construction of a tree给n−1n-1n−1个只包括1−n1-n1−n正整数的点集,要求从每一个点集中选择一对点连边,使得最后构成一个nnn个点的树。n≤1e5,∑∣S∣≤2e5n\le1e5,\sum|S|\le2e5n≤1e5,∑∣S∣≤2e5Solution很容易想到一个无解的条件:假设读入的点集是SSS,对于一个T={S}T=\{S\}T={S},如果TTT涵盖的点数c≤∣T∣c\le|T|c≤∣T∣那么一定是无解的。因为这样连不少于点数条边原创 2020-10-22 22:31:00 · 241 阅读 · 0 评论 -
agc032E Modulo Pairing
agc032E Modulo Pairing将2n2n2n个数两两配对,使得每一对的和在模mmm意义下最大值最小。n≤1e5n\le1e5n≤1e5Solution首先二分答案midmidmid。然后考虑配对是可以贪心的,如果我们将2n2n2n个数先分成两个集合A,BA,BA,B,集合AAA内的和是[0,mid][0,mid][0,mid],BBB是[m,m+mid][m,m+mid][m,m+mid],那么这两个集合内部肯定是首尾配对。再考虑A,BA,BA,B如果相交或包含的话原创 2020-10-22 20:59:58 · 371 阅读 · 0 评论 -
agc032D Rotation Sort
agc032D Rotation Sort给你一个长度为nnn的排列ana_nan,通过以下两个操作将它排序:花费AAA将aia_iai向后移到任意一个位置。花费BBB将aia_iai向前移到任意一个位置。求最小花费。n≤5000,0≤A,B≤1e9n\le5000,0\le A,B\le1e9n≤5000,0≤A,B≤1e9Solution首先一个数只会移动一次,如果移动两次不如一次到位。我们考虑哪些位置没有移动,这些位置一定是单调上升的,那么区间内的数一定要大于ara_原创 2020-10-16 07:30:32 · 187 阅读 · 0 评论 -
agc028E High Elements
agc028E High Elements将一个长度为nnn的排列PiP_iPi,将它分成两个序列AAA和BBB,使得A,BA,BA,B的前缀最大值个数相同。设si=0s_i=0si=0表示iii被分到AAA里,反之si=1s_i=1si=1分到BBB里,求一个字典序最小的sss满足上面的条件。n≤2e5n\le2e5n≤2e5Solution首先原排列的前缀最大值一定不管在哪个序列里都是前缀最大值。我们将原本不是前缀最大值,在分到某个序列之后变成了前缀最大值的元素叫做**“新原创 2020-10-16 07:27:03 · 163 阅读 · 0 评论 -
agc020D Min Max Repetition
agc020D Min Max Repetition多组询问。每个询问给定四个整数,A,B,C,DA,B,C,DA,B,C,D,求一个满足这个条件的字符串:长度为A+BA+BA+B,由AAA个字符A和BBB个字符B构成。在此基础上,连续的相同字符个数的最大值最小在此基础上,字典序最小输出这个字符串的第CCC位到第DDD位。Solution答案可以通过选择少数的字符作为间隔数计算得到。可以证明,确定答案为s时,最后的串为:A..AB(n)+A..B..+AB..B(m)A..AB(原创 2020-10-15 21:08:18 · 192 阅读 · 0 评论 -
agc036D Negative Cycle
agc036D Negative Cycle有一个NNN个点的有向图,编号[1,n][1,n][1,n],首先有n−1n-1n−1条边,第iii条为(i,i+1)(i,i+1)(i,i+1),边权为0。然后对于所有有序对(i,j)(i!=j)(i,j)(i!=j)(i,j)(i!=j),如果i<ji<ji<j,边权为−1-1−1,否则边权为111,共加入n∗(n−1)n*(n-1)n∗(n−1)条边,每一个有序对都有一个贡献。要求将后面新加入的n∗(n−1)n*(n-1)n∗(n−原创 2020-10-15 21:06:32 · 429 阅读 · 0 评论 -
agc023D Go Home
agc023D Go Home一条街上有NNN栋楼,第iii栋位置为XiX_iXi,第iii栋楼里有PiP_iPi个人。在位置SSS有一座公司,员工下班时乘坐公司的员工班车回家。每一个时刻车上的人投票,向左或者向右,如果票数相同则向左。每一个员工都绝顶聪明,会使得投票下自己回到家的时间最早,如果左右都一样则投向左的,如果班车经过他们的家,他们就会下车。求最后一个人到家的时间。N≤1e5,Xi,Pi≤1e9N\le1e5,X_i,P_i\le1e9N≤1e5,Xi,P原创 2020-10-15 21:05:23 · 200 阅读 · 0 评论 -
agc039F Min Product Sum
agc039F Min Product SumSolution考虑行和列分别按照最小值排序,那么Ai,jA_{i,j}Ai,j应该是这样的:111111111111111111111122222111122333为若干个LLL型。每个位置乘在一起就是贡献。考虑方案数为这样的:111122333111122333222222333333333333表示的是那个位置填的数要>=上面的矩阵中那个位置的数。考虑按照1−K1-K1−K从左上角往下加入一行一列,但是并原创 2020-10-15 21:04:12 · 327 阅读 · 0 评论 -
agc022F Checkers
agc022F Checkers有nnn个数,第iii个数一开始为(10100)i(10^{100})^i(10100)i,现在进行n−1n-1n−1次操作,选择两个数x,yx,yx,y,将它们变为2x−y2x-y2x−y。求最后的剩下的数有多少种结果。n≤50n\le50n≤50Solution一开始想的是建成一个二叉树,左儿子乘−1-1−1,右儿子乘222,但是我们不知道222次幂相同有什么排布规律使得它不算重,所以我们考虑将这个二叉树上的所有−1-1−1的边缩起来。那么我们会得到一棵树原创 2020-10-15 21:01:07 · 227 阅读 · 0 评论 -
agc020E Encoding Subsets
agc020E Encoding Subsets题意略。Solution暴力递归即可。长度小的时候预处理DP即可。最多递归三层。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define maxn 105#define maxm 14#define ll long long #define uint unsigned int #defi原创 2020-10-15 20:59:11 · 225 阅读 · 0 评论 -
agc027D Modulu Matrix
agc027D Modulu Matrix构造一个n∗nn*nn∗n的矩阵aaa,满足没有两个元素相等,ai,j≤1e15a_{i,j}\le1e15ai,j≤1e15。对于所有相邻的格子值为x,yx,yx,y,满足max(x,y)%min(x,y)max(x,y)\%min(x,y)max(x,y)%min(x,y)全部为某一个固定的值mmm。n≤500n\le500n≤500Solution对于这一类构造题,可以先思考一种简单的能够得到答案的通解,我们寻求的方法应该是简单原创 2020-10-15 20:57:24 · 242 阅读 · 0 评论