Codeforces
文章平均质量分 76
YB Lin
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 84 (Rated for Div. 2) D. Infinite Path 构建环 + 思维
传送门文章目录题意:思路:题意:懒得写了,直接贴图了。思路:遇事不决画成图,考虑将iii向p[i]p[i]p[i]连一个边,可以发现每个点入度为111,出度为111,所以画出来是若干个环,比如说样例三画出来就是这样的(这里只画了一个环)上图为p1p^1p1的情况,进而可以发现,当ppp的幂次为kkk的时候,就是将每个数与其往下数kkk个数之间连边,比如p2p^2p2的图如下所示:所以我们假设环的长度为lenlenlen,那么可以发现只有len mod k=0len\bmod k=0len原创 2021-05-19 20:51:38 · 74 阅读 · 0 评论 -
Codeforces Round #628 (Div. 2) F. Ehab‘s Last Theorem dfs树
传送门文章目录题意:思路:题意:给你个nnn个点mmm条边的图,可以选择完成以下两个任务中的一个:(1)(1)(1)找出大小恰好为n\sqrt nn的一个独立集。(2)(2)(2)找出一个长度≥n\ge \sqrt n≥n的一个环。n≤1e5,m≤2e5n\le 1e5,m\le 2e5n≤1e5,m≤2e5。思路:我们构造出一颗dfs树,这棵树有一个很重要的性质就是所有非树边链接的两个点都是一个树上的点以及这个点的后代。所以我们可与边建树边找环,可以直接用vectorvectorvec原创 2021-05-19 16:04:02 · 83 阅读 · 0 评论 -
Codeforces Round #628 (Div. 2) E. Ehab‘s REAL Number Theory Problem 巧妙的质因子建图
传送门文章目录题意:思路:题意:给你nnn个数,每个数的因子个数不超过777个,选出最少的数使其乘积为平方数。n≤1e5n\le 1e5n≤1e5思路:由于因子不超过777个,所以由约数个数(1+p1)∗(1+p2)∗...∗(1+pn)(1+p_1)*(1+p_2)*...*(1+p_n)(1+p1)∗(1+p2)∗...∗(1+pn)得其质因子个数不超过222个,启发我们用质因子来做这个题。一个显然的性质就是平方数的质因子幂次 mod 2\bmod 2mod2之后这个平方数为111。原创 2021-05-19 11:20:30 · 68 阅读 · 0 评论 -
Codeforces Round #626 (Div. 2) D. Present 按位贡献 + 快排新姿势
传送门文章目录题意:思路:题意:给你一个长度为nnn的序列aaa,让你计算n≤4e5,a≤1e7n\le 4e5,a\le 1e7n≤4e5,a≤1e7思路:首先这个式子是n2n^2n2的,显然不能直接算,并且异或没有分配律,所以碰到这种情况我们自然的就想到按位考虑。分开考虑每一位,假设当前为第kkk位,当这一位是111的时候,两个数的和一定在[2k,2k+1−1][2^k,2^{k+1}-1][2k,2k+1−1]之间,由于有可能会溢出,比如全是111的情况相加,所以还有可能在[2k+2k原创 2021-05-12 22:37:57 · 104 阅读 · 0 评论 -
Educational Codeforces Round 108 (Rated for Div. 2) D. Maximum Sum of Products 思维 + dp
传送门文章目录题意:思路:题意:给你两个长度为nnn的数组a,ba,ba,b,你可以至多反转一段连续区间,求∑i=1nai∗bi\sum _{i=1}^n a_i*b_i∑i=1nai∗bi最大是多少。n<=5e3n<=5e3n<=5e3思路:首先我们可以通过n2n^2n2来枚举所有的区间,但是要计算翻转之后的贡献的话还需要多加一个nnn,这样复杂度是n3n^3n3,显然不可接受。考虑能否通过小区间来递推出大区间。定义f[i][j]f[i][j]f[i][j]为将[i原创 2021-05-12 13:59:09 · 140 阅读 · 0 评论 -
CodeCraft-20 (Div. 2) C. Primitive Primes 思维 + 数论
传送门文章目录题意:思路:题意:给你两个长度分别为n,mn,mn,m的多项式,将他们乘起来,问系数 mod p=0\bmod p =0modp=0的项的指数是多少,两个多项式所有项的系数gcd=1gcd=1gcd=1。n,m<=1e6n,m<=1e6n,m<=1e6思路:这个题真是妙鸭,卡了我一年。由于两个多项式所有项的系数gcd=1gcd=1gcd=1,所以我们分别在两个多项式中找到第一个 mod p=0\bmod p=0modp=0的位置,答案就是两个位置相加,为什么这样原创 2021-05-12 10:06:08 · 77 阅读 · 0 评论 -
Ozon Tech Challenge 2020 (Div.1 + Div.2) E.Kuroni and the Score Distribution 构造
传送门文章目录题意:思路:题意:思路:不难想到,长度为nnn的数组最多的满足条件的三元组序列是1,2,3....,n1,2,3....,n1,2,3....,n,对于每一个位置贡献为i−12\frac{i-1}{2}2i−1,那么如果m>∑i=1ni−12m>\sum _{i=1}^{n} \frac{i-1}{2}m>∑i=1n2i−1的时候无解。考虑如果∑i=1ni−12≥sum\sum _{i=1}^{n} \frac{i-1}{2}\ge sum∑i=1n2i−原创 2021-05-10 20:34:06 · 120 阅读 · 1 评论 -
Codeforces Global Round 14 E. Phoenix and Computers 思维 + dp
传送门文章目录题意:思路:题意:有nnn台电脑,你可以手动打开某个电脑,如果第i−1,i+1i-1,i+1i−1,i+1台电脑都打开了,那么第iii台电脑会自动打开。不能手动打开自动打开的电脑,问有多少种打开的方式使得所有电脑都开机。思路:首先考虑全都手动打开nnn台电脑有多少种方案。从111开始,那么111右边的所有电脑都必须依次打开,方案数是C(n−1,0)C(n-1,0)C(n−1,0)。从222开始,那么222右边的所有电脑都必须依次打开,左边的电脑可以在保证顺序的情况下任意时刻打开,原创 2021-05-05 10:59:33 · 109 阅读 · 0 评论 -
Codeforces Round #700 (Div. 1) C. Continuous City 构造 + 二进制
传送门文章目录题意:思路:题意:构造一个图,使其从111到nnn的路径的长度与[L,R][L,R][L,R]中某个值一一对应,不能有两条路径长度一样,且每个值都必须出现一次,每两个点之间只能连一条边。n≤32n\le32n≤32,ai,bi≤na_i,b_i\le nai,bi≤n,1≤ci≤1e61\le c_i\le 1e61≤ci≤1e6。思路:看到n≤32n\le 32n≤32,不难想到二进制拆分,我们分情况来讨论。(1) L=1,R=2k(1)\ \ L=原创 2021-05-05 10:30:16 · 146 阅读 · 1 评论 -
Codeforces Global Round 14 F. Phoenix and Earthquake 思维 + 并查集
传送门文章目录题意:思路:题意:给你nnn个点,mmm条边,限制xxx,每个点都有沥青aia_iai,定义合并两个点即两点之间有边且au+av≥xa_u+a_v\ge xau+av≥x,合并之后的沥青为au+av−xa_u+a_v-xau+av−x,现在让你输出一种选选边方式,选n−1n-1n−1条边使得nnn个点联通。n,m<=3e5,n−1≤m,1≤x,ai≤1e9n,m<=3e5,n-1\le m,1\le x,a_i \le1e9n,m<=3e5,n−1≤m,1≤原创 2021-05-04 09:04:55 · 128 阅读 · 0 评论 -
Codeforces Round #624 (Div. 3) E. Construct the Binary Tree 思维 + 构造
传送门文章目录题意:思路:题意:给你n,dn,dn,d,让你构造有nnn个点的二叉树,他们每个节点深度和为ddd。n,d≤3000n,d\le 3000n,d≤3000.思路:先考虑不能构造出来的情况,设sumsumsum为最小的深度和,那么sum>dsum>dsum>d或n∗(n−1)2<d\frac{n*(n-1)}{2}<d2n∗(n−1)<d的时候无解。考虑构造的深度最小的情况,我们让每个点iii的父亲等于⌊i2⌋\left \lfloor \fr原创 2021-05-03 09:00:47 · 96 阅读 · 0 评论 -
Codeforces Round #624 (Div. 3) D. Three Integers 数论
传送门文章目录题意:思路:题意:给定A,B,CA,B,CA,B,C,找到一个三元组(a,b,c)(a,b,c)(a,b,c),使得aaa是bbb的因子,bbb是ccc的因子,且abs(A−a)+abs(B−b)+abs(C−c)abs(A-a)+abs(B-b)+abs(C-c)abs(A−a)+abs(B−b)+abs(C−c)最小。A,B,C≤1e4A,B,C\le 1e4A,B,C≤1e4思路:注意到aaa是bbb的因子,bbb是ccc的因子,所以考虑枚举aaa,那么枚举bbb就是k∗ak原创 2021-05-02 20:29:10 · 82 阅读 · 0 评论 -
Codeforces Round #622 (Div. 2) D. Happy New Year 状压dp
传送门文章目录题意:思路:题意:n≤1e5,m≤1e9,k≤8.n\le 1e5,m\le 1e9,k\le 8.n≤1e5,m≤1e9,k≤8.思路:注意到题目中保证了每个孩子至多收到kkk个,且k≤8k\le 8k≤8,注意到这是题目保证的,并不是说这个孩子能收到很多,但是收到kkk个就接受不了别的了,我理解错题意想了一晚上。看到kkk这么小,自然的想到状压了,复杂度O(n∗2k)O(n*2^k)O(n∗2k)很完美。发现区间很大,自然想到离散化。通过离散化, 我们可以将其分成若干个左闭原创 2021-05-01 08:23:22 · 156 阅读 · 1 评论 -
Codeforces Round #620 (Div. 2) E. 1-Trees and Queries 思维 + LCA
传送门文章目录题意思路:题意思路:照例,先考虑不加边怎么做。由于可以经过重复的边或点,设aaa与bbb之间长度为lenlenlen,那么需要len<=klen<=klen<=k并且还需要(k−len) mod 2==0(k-len) \bmod 2==0(k−len)mod2==0,因为他可以到终点的时候来回走一个偶数长度。那么加上一条边有什么用呢?由于上面是(k−len) mod 2==0(k-len) \bmod 2==0(k−len)mod2==0的时候才符合条件,那么我原创 2021-04-28 15:47:03 · 101 阅读 · 0 评论 -
Codeforces Round #620 (Div. 2) F2. Animal Observation (hard version) dp + 线段树
传送门文章目录题意:思路:题意:比如下面这个图:思路:对于这个题,比较容易就能考虑到dpdpdp,设f[i][j]f[i][j]f[i][j]为到了第iii行,覆盖了[j,j+k−1][j,j+k-1][j,j+k−1]范围时候的最大值。先不考虑重叠的情况,那么转移方程就是f[i][j]=max(f[i−1][t]+∑x=tt+k−1a[i][x])+∑x=jj+k−1a[i][x]f[i][j]=max(f[i-1][t]+\sum _{x=t}^{t+k-1}a[i][x])+\sum原创 2021-04-28 12:57:02 · 120 阅读 · 0 评论 -
Codeforces Round #619 (Div. 2) F. Super Jaber 多源bfs + 思维转换
传送门文章目录题意:思路:题意:给你一个矩阵,每个格子都有一个颜色kkk,每秒可以移动到相邻矩阵或者瞬移到同一颜色的任意矩阵。有qqq个询问,每次询问给出两个点,求从一个点到另一个点的最短时间。注意n,m≤1000,q≤1e5,k≤40n,m\le1000,q\le1e5,k\le40n,m≤1000,q≤1e5,k≤40。思路:由于询问过于庞大而且点数也很多不能直接处理出来,更不能在询问里面跑,所以我们肯定是要从kkk入手。运用dpdpdp转移的思想,我们可以枚举颜色作为中间颜色进行转移,也原创 2021-04-27 20:16:47 · 140 阅读 · 0 评论 -
Codeforces Round #701 (Div. 2) E. Move and Swap 思维 + dp
传送门文章目录题意:思路:题意:思路:由于是按层来的,所以我们肯定先按照层来分组。定义dp[i]dp[i]dp[i]为红棋在位置iii的时候的最大得分和。先考虑不换的情况,我们对于每个点都从他的父节点转移过来就好了,蓝棋由于可以到当前层的任意位置,所以让他贪心的到最大或者最小位置一定是最优的,我们取个maxmaxmax即可,转移方程为dp[i]=max(dp[i],dp[fa[i]]+max(a[i]−mind,maxd−a[i]))dp[i]=max(dp[i],dp[fa[i]]+max(原创 2021-04-27 13:14:37 · 87 阅读 · 0 评论 -
Codeforces Round #619 (Div. 2) E. Nanosoft 思维 + 二维前缀和
传送门文章目录题意:思路:题意:思路:考虑到最大面积是由四种颜色构成的,且四种颜色可以从中心扩展出去,所以我们分别维护四种颜色的二维前缀和,O(1)O(1)O(1)计算矩阵内颜色的个数。现在我们只需要找到矩阵左上角,即红色的位置,让后每次暴力扩展一个长度,并且用二维前缀和检查是否合法。记f[i][j][k]f[i][j][k]f[i][j][k]表示以(i,j)(i,j)(i,j)为左上角,所要求的矩阵边长一半为kkk的方案是否存在。这个显然我们刚才已经处理出来了。考虑如何快速查询。我们可以对原创 2021-04-27 09:01:32 · 109 阅读 · 0 评论 -
Codeforces Round #619 (Div. 2) D. Time to Run 矩阵回路构造
传送门文章目录题意:思路:题意:给你一个n∗mn*mn∗m的矩阵,每两个相邻点之间有个双向边,问你能不能走满kkk步,每一步走的边不同,但是点可以相同,换句话说就是走的边不能再走了。输出的时候输出一个fff和一串不超过444个的字符,表示按照这个字符走fff次。输出的行数不能超过300030003000行。思路:能看出来这是个欧拉回路,每个点度数为偶数,一定有解,所以先判断一下是否≤(4∗n∗m−2∗n−2∗m)\le (4*n*m-2*n-2*m)≤(4∗n∗m−2∗n−2∗m)。判断有解后,原创 2021-04-26 21:03:38 · 109 阅读 · 0 评论 -
Codeforces Round #609 (Div. 2) D. Domino for Young 黑白染色
传送门文章目录题意:思路:题意:给你个不规则的网络格子,有nnn列,每列有aia_iai个格子,让你将1×21×21×2的多米诺骨牌无重叠的放进去,问最多能放多少个。思路:首先如果点数小的话,就是个网络流建模的板子,但是显然这个题是不能建图的,但是我们还是可以利用网络流的思想。将格子进行黑白染色,一个多米诺骨牌就包含了一个黑格子和一个白格子。比较显然的是如果黑白格子数量一样,那么一定可以将其全部填上多米诺骨牌。否则我们将多余的骨牌都删掉就好啦,答案就是min(ans1,ans2)min(ans原创 2021-04-23 10:08:34 · 148 阅读 · 0 评论 -
Codeforces Round #717 (Div. 2) D. Cut 倍增
传送门文章目录题意:思路:题意:给定长度为nnn的序列,有qqq个询问,每次询问一个区间,输出至少将这个区间分成多少个连续区间才能使每个区间内的数互质。思路:首先要判断互质,这个比较容易想到分解质因子,两个数互质当且仅当他们不含有相同的质因子。考虑一个朴素的做法,就是从lll开始,每次都遍历他的质因子,如果他的质因子在前面出现过了,那么我门就贪心的在这里分段,让后将前面的质因子出现的位置都清空。考虑如果我们能预处理出来getlget_lgetl,即[l,getl−1][l,get_l-1][原创 2021-04-22 14:38:33 · 461 阅读 · 0 评论 -
Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp
cf传送门文章目录题意:思路:题意:aia_iai在[li,ri][l_i,r_i][li,ri]等概率随机选一个数,求aaa数组不增的概率。思路:这里贴了两个链接,因为这俩题是极其相似的,我们先来说一下洛谷的。洛谷的也是选一个数,求aaa数组递增的概率。看到这个很容易写出一个dpdpdp数组f[i][j]f[i][j]f[i][j]表示到了第iii个,第iii个选了jjj个的方案数,转移就是f[i][j]=∑c=0j−1∑k=0i−1f[k][c] j∈[li,r原创 2021-04-21 21:09:05 · 131 阅读 · 0 评论 -
Codeforces Round #712 (Div. 2) F. Flip the Cards 思维 + 贪心
传送门文章目录题意:思路:题意:给你nnn张卡片,每张卡片正面写有数字aaa,反面写有数字bbb,[1,2∗n][1,2*n][1,2∗n]之间的整数在这些数字中都恰好出现一次,我们认为这nnn张牌是排好序的当且仅当ai<ai+1,bi>bi+1a_i<a_{i+1},b_i>b_{i+1}ai<ai+1,bi>bi+1,你现在有两种操作:(1)(1)(1)将第iii张牌翻过来。(2)(2)(2)重新排序nnn张牌,顺序任意。问最少需要翻几次牌,或者无原创 2021-04-21 15:08:54 · 130 阅读 · 2 评论 -
Codeforces Round #716 (Div. 2) D. Cut and Stick 主席树 + 思维
传送门文章目录题意:思路:题意:给你个长为nnn的数组aaa,定义好的区间为这个区间中每个数出现的次数≤⌈n2⌉\le \left \lceil \frac{n}{2} \right \rceil≤⌈2n⌉,定义划分为将这个区间的若干个子序列拿出来构成若干区间。有qqq个询问,每次询问一个区间,问将这个区间最少划分为多少个区间才能使每个区间都是好区间。思路:要注意划分出来的区间是原区间的子序列,且划分后的区间也要是好区间,读错题做了一个多小时,自闭啦。注意到子序列,所以我们可以将其分开考虑。假原创 2021-04-20 08:54:25 · 236 阅读 · 0 评论 -
Codeforces Round #617 (Div. 3) E2. String Coloring (hard version) 思维 + dp + Dilworth定理
传送门文章目录题意:思路:题意:让你给一个串染色,不同颜色且相邻的一对字符可以互换位置,用最少的颜色,使交换后这个字符串字典序最小。思路:考虑将字符串分成若干个非递减的子序列,由于其非递减的性质,所以在排到字典序的时候他们的相对位置不变,我们可以将其染成一个颜色,不同的非递减子序列染成不同的颜色,这样就可以符合要求了。下面考虑如何找出有多少个非递减子序列呢?这个就跟导弹拦截这个题差不多了,我们只需要求一个严格递减的最长子序列长度,定义f[i]f[i]f[i]表示到这个点的最长严格递减子序列长度,原创 2021-04-19 21:08:58 · 93 阅读 · 0 评论 -
Codeforces Round #617 (Div. 3) F. Berland Beauty 思维
传送门文章目录题意:思路:题意:给定一棵树,再给定若干两点最短路之间边权的最小值,让你给树的边权赋值,使得满足给定的条件,如果不存在输出−1-1−1。思路:观察一个性质,加入经过这条边的路径的最小边权为w1,w2,..,wxw_1,w_2,..,w_xw1,w2,..,wx,那么当前这个边的边权wnow≥max(w1,w2,...,wx)w_{now}\ge max(w_1,w_2,...,w_x)wnow≥max(w1,w2,...,wx)。所以我们先按照边权从小到大排序,让后每次原创 2021-04-19 19:12:28 · 95 阅读 · 0 评论 -
Codeforces Round #615 (Div. 3) A-F
传送门这场比较简单,简单的题就不说题意了。A.问加nnn个数,能否使a,b,ca,b,ca,b,c相等。直接先加到相等再看看模333是否为000即可。//#pragma GCC optimize(2)#include<cstdio>#include<iostream>#include<string>#include<cstring>#include<map>#include<cmath>#include<c原创 2021-04-19 11:15:28 · 90 阅读 · 0 评论 -
Educational Codeforces Round 81 (Rated for Div. 2) C. Obtain The String 序列自动机
传送门文章目录题意:思路:题意:给你两个串s,ts,ts,t,每次可以取sss串的一个子序列,问你最少取多少次子序列,将这些子序列拼起来能得到ttt。思路:发现我题解里面没写过序列自动机,来存个板子。我们可以贪心的从ttt的开头开始取,每次都找离当前位置最近的一个字符,这样可以保证次数最少。所以这就转换成了序列自动机的裸题了,从头开始跑序列自动机就行了,如果不存在当前字符就返回−1-1−1。//#pragma GCC optimize("Ofast,no-stack-protector,unr原创 2021-04-19 10:46:17 · 71 阅读 · 0 评论 -
Codeforces Round #715 (Div. 2) D. Binary Literature 构造
传送门文章目录题意:思路:题意:给你个nnn和三个长度为n∗2n*2n∗2的串,让你构造一个长度≤n∗3\le n*3≤n∗3的串,使其子序列包含至少两个给定串。思路:先考虑如果没有长度限制,那么我们肯定就是把两个串链接在一起就行了,这样长度就是n∗4n*4n∗4的,考虑怎么优化成n∗3n*3n∗3的串。我们要减少长度nnn,所以可以考虑两个串共用nnn个字符,这样两个串长度减去公用的字符就变成了nnn,而我们构造的串长度目前也是nnn,所以我们直接将两个串剩余的字符都插入我们目前构造的长度为nn原创 2021-04-17 15:10:48 · 174 阅读 · 0 评论 -
Educational Codeforces Round 81 (Rated for Div. 2) E. Permutation Separation 线段树 + dp
传送门文章目录题意:思路:题意:给你一个打乱的排列,每个位置都各有一个价值,让你选择一个分界点,分成p1,p2,...,prp_1,p_2,...,p_rp1,p2,...,pr和pr+1,...,pn−1,pnp_{r+1},...,p_{n-1},p_{n}pr+1,...,pn−1,pn,两部分非空,可以将某一边的数花费代价aia_iai移动到另一边,当左边所有数都小于右边或者某一边为空的时候,符合条件,求符合条件的时候的最小代价。思路:先考虑暴力怎么写。定义f[i][j]f原创 2021-04-16 15:40:09 · 98 阅读 · 0 评论 -
Educational Codeforces Round 81 (Rated for Div. 2) D. Same GCDs 欧拉函数\莫比乌斯
传送门文章目录题意:思路:题意:给定a,ma,ma,m,求满足gcd(a,m)=gcd(a+x,m)gcd(a,m)=gcd(a+x,m)gcd(a,m)=gcd(a+x,m)的xxx的个数,且0<=x<m0<=x<m0<=x<m。思路:由辗转相除法得:gcd(a+x,m)=gcd((a+x) mod m,m)gcd(a+x,m)=gcd((a+x)\bmod m,m)gcd(a+x,m)=gcd((a+x)modm,m)而(a+x) mod m(a+x)\b原创 2021-04-16 09:08:27 · 91 阅读 · 0 评论 -
Codeforces Round #614 (Div. 2) D. Aroma‘s Search 暴力 + 思维
传送门文章目录题意:思路:题意:给你x0,y0,ax,ay,bx,byx_0,y_0,a_x,a_y,b_x,b_yx0,y0,ax,ay,bx,by,让后根据[ax∗xi−1+bx,ay∗yi−1+by][a_x*x_{i-1}+b_x,a_y*y_{i-1}+b_y][ax∗xi−1+bx,ay∗yi−1+by]构造出一堆有价值的点,让后有个起点sx,sys_x,s_ysx,sy,以及时间ttt,每次可以往相邻位置移动一格,消耗111秒时间,问能获得最多的价值是多少。原创 2021-04-13 22:15:52 · 84 阅读 · 0 评论 -
Codeforces Round #712 (Div. 2) E. Travelling Salesman Problem 思维转换
传送门文章目录题意:思路:题意:给你nnn个点,从iii到jjj的花费是max(ci,aj−ai)max(c_i,a_j-a_i)max(ci,aj−ai),求从111开始经过每个点再回到111的最小花费。思路:首先可以发现我们的起点在哪里是一样的,只需要走出一个环来就行。让后由于花费是max(ci,aj−ai)max(c_i,a_j-a_i)max(ci,aj−ai),所以我们至少要花费cic_ici,最终的花费一定>=∑i=1nci>=\sum _{i=1} ^n c原创 2021-04-12 16:48:10 · 162 阅读 · 4 评论 -
Codeforces Round #712 (Div. 2) D. 3-Coloring 交互 构造
传送门文章目录题意:思路:题意:给一个n∗nn*nn∗n的格子染色,一共可以染三种颜色,每次都会给一种颜色,代表当前这种颜色不可以使用,染色要求相邻的颜色不能相同,让你给出一种染色方案。思路:类似奇偶染色,我们按(i+j) mod 2(i+j)\bmod 2(i+j)mod2将块分成奇偶,让后分三种情况:(1)(1)(1) 当前禁止染颜色111,那么我们就将颜色222填到偶数格子里,如果偶数格子没有了,就将333填到奇数格子里。(2)(2)(2) 当前禁止染颜色222,那么我们就将颜色111填原创 2021-04-12 15:29:31 · 124 阅读 · 0 评论 -
Codeforces Round #613 (Div. 2) E. Delete a Segment 离散化
传送门文章目录题意:思路:题意:思路:我们考虑将区间内的位置都+1+1+1,之后求区间段数就可以转换成求,连续不为000的区间段数,由于范围有[−1e9,1e9][-1e9,1e9][−1e9,1e9]的级别,所以我们考虑将其离散化。注意离散化之后的时候需要将区间∗2−1*2-1∗2−1,这样做是为了防止[1,3][1,3][1,3]和[4,5][4,5][4,5]这段区间之后合并。让后我们考虑如何快速的求去掉当前区间之后增加的段数。我们将连续111的起点和终点都+1+1+1,之后求前缀和,原创 2021-04-08 10:29:33 · 71 阅读 · 0 评论 -
Codeforces Round #163 (Div. 2) C. Below the Diagonal 分治
传送门文章目录题意:思路:题意:给你一个n∗nn*nn∗n的矩阵,给你n−1n-1n−1个位置,这些位置为111,其他位置为000,操作定义为交换两行或者交换两列,让你通过不超过1e51e51e5次操作,将所有为111的位置的都换到主对角线的下面。思路:题目中说n−1n-1n−1个111的位置,那么必定有一列全为000,那么我们通过一次操作将这一列换到第nnn列,之后在找任意一个有111的一行换到第nnn行,让后递归处理(n−1)∗(n−1)(n-1)*(n-1)(n−1)∗(n−1)规模的矩阵即原创 2021-04-06 16:10:37 · 136 阅读 · 0 评论 -
CodeCraft-21 and Codeforces Round #711 (Div. 2) D. Bananas in a Microwave 优化暴力
传送门文章目录题意:思路:题意:有nnn个时间,每个时间给你两个操作,第一个是k=k+xk=k+xk=k+x,第二个是k=k∗xk=k*xk=k∗x,且可以执行[0,y][0,y][0,y]次,kkk初始状态为000,求[1,m][1,m][1,m]中kkk能到达的数的最短时间。思路:首先比较容易的能想到一个nm2nm^2nm2的暴力方法,就是遍历[1,n][1,n][1,n],让后对于每个已经出现过的数,尝试进行[0,y][0,y][0,y]次相应的操作,yyy的范围[0,m][0,m][0,m原创 2021-03-30 08:43:33 · 2937 阅读 · 9 评论 -
Codeforces Round #610 (Div. 2) D. Enchanted Artifact 交互 + 思维
传送门文章目录题意:思路:题意:思路:首先我们发现如果知道了字符串的长度,我们就可以O(n+1)O(n+1)O(n+1)次询问求解出来。比如当前长度为nnn,那么我们就可以构造出一个长度为nnn的全′a′'a'′a′字符串,让后问一下他的花费costcostcost,之后遍历每一位,把它修改成′b′'b'′b′,看花费是否减少,如果不能减少就改回′a′'a'′a′,否则的话就更新花费。既然如此我们考虑如何111次询问求出长度。首先它可以插入,修改,删除。修改求长度不是很现实,我们考虑插入和删除原创 2021-03-29 11:04:32 · 92 阅读 · 0 评论 -
CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths 树启 + 状压
传送门文章目录题意:思路:题意:思路:据说是树启的压轴题。先观察题意,字符有1−221-221−22中,为什么不是1−261-261−26个?显然他就是让你状压的。我们考虑将每条路径上字符状压成statestatestate,让后从111开始遍历,记从111到iii的路径上的statestatestate为dis[i]dis[i]dis[i]。再观察一下回文的性质,回文中奇数个字母最多只有一个,如果两条路径能构成回文,那么他们的dis[i] xor原创 2021-03-26 10:27:58 · 341 阅读 · 0 评论 -
CF1042E Vasya and Magic Matrix 期望dp + 推公式
传送门文章目录题意:思路:题意:思路:将矩阵中的数放到数组里排序,就是一个比较明显的期望dpdpdp了。定义f[i]f[i]f[i]表示从第iii个出发的期望得分,所以转移方程也比较好写了:f[i]=∑(f[j]+(x[i]−x[j])2+(y[i]−y[j])2)cntf[i]=\frac{\sum(f[j]+(x[i]-x[j])^2+(y[i]-y[j])^2)}{cnt}f[i]=cnt∑(f[j]+(x[i]−x[j])2+(y[i]−y[j])2)但是这样有个问题,如果直接转移的原创 2021-03-23 20:51:29 · 112 阅读 · 0 评论