- 博客(61)
- 收藏
- 关注
原创 AtCoder Beginner Contest 416(ABCDE)
要理解floyd的最外层是作为中间点存在,在执行查询1时,将中间点固定为x,y;执行查询2时,先确定一个超级原点0,将所有x连在0上,此时中间点为x,0,此时两个机场间的距离会变为2t为了平衡将查询1的时间乘2即可;先对A与B取模,要让和最小那么A,B中和大于M的对数应该最大,以此减去更多的M。给你一个长度为 N 的字符串 S,它由 o 和 x 以及整数 L 和 R 组成。在满足以下所有条件的所有字符串 T 中,找出一个具有最多 o 的字符串。,其中所有元素都在 1 到 N 之间(包括 N),定义字符串。
2025-07-30 22:58:46
738
原创 AtCoder Beginner Contest 412(ABCDEF)
得到相连顺序后到的cnt为最终情况下已经存在的边,ans=m-cnt+n-cnt。当第 i 块多米诺骨牌向右倒下时,如果紧邻第 i 块多米诺骨牌右侧的多米诺骨牌的大小不超过 2S_i,那么该多米诺骨牌也会向右倒下。A_n是非严格递增的,只有当n为质数幂时才会A_n>A_{n-1}。那么就是求(L,R】中质数幂的数量,这个可以用二段筛+记录每个值有几种质数构成实现。, N,第 i 条边是连接顶点 A_i 和 B_i 的无向边。他计划在第i天(1≤i≤N)完成A_i个任务,实际完成了B_i个任务。
2025-06-30 20:25:20
601
原创 AtCoder Beginner Contest 409(ABCDEF)
若x_i < 0,则在顶点i放置−x_i个电子;此外,对于图 G 的两个连通分量 A 和 B,令 V(A) 和 V(B) 分别表示 A 和 B 的顶点集。顶点 A 和 B 之间的距离 d(A,B) 定义为 d(A,B)=min{d(u,v)∣u∈V(A),v∈V(B)}。设 T_i 和 A_i 分别表示 T 和 A 的第 i 个(1≤i≤N)字符。要实现查询3,可使用并查集,实现查询1,2,使用小根堆存储每个点之间的距离,即可。对于图G中的顶点u和v,顶点u和v之间的距离d(u,v)定义为曼哈顿距离,即。
2025-06-08 21:52:22
903
原创 Codeforces Round 1028 (Div. 2)(ABCD)
那么先用最小的次数将一个值变为最终值(广度优先搜索),再通过这个值,与其他不同的值gcd,即可最快完成目标。即我们在遍历r中,记录p,q最大值的下标,再通过比较两者及其对应的qp值大小,可得到最大值。2的i次从二进制数来看2^i+2^j与其他同类型的比较,一般由i,j中的较大部分即可。由于 r 的元素非常大,你只需输出 r 的元素 modulo 998244353。水母的骑士有 c HP,而花花的骑士有 d HP。但由于水母很懒,你必须帮她算出 r 的元素。可以证明,水母总能实现她的目标。
2025-06-01 19:53:44
943
原创 AtCoder Beginner Contest 407(ABCDEF)
序列A的两端是可以确定状态的,之后自前向后同时取两个放入大根堆,并从中取出最大的值,作为符号(。让 (i,j) 表示位于 从上往下数第 i 行的单元格(1≤i≤H)和从左往下数第 j 列的单元格(1≤j≤W)。s从后往前判断,当前数位为 i 时,说明到最终答案的状态要在加0后按i次,而之前的值都要也按 i 次。对于多米诺骨牌的摆放,其得分定义为写在未被任何多米诺骨牌覆盖的单元格中的所有整数的比特 XOR。最初 t 是空字符串。给你一个长度为 2N 的非负整数序列 A=(A 1 ,...,A 2N )。
2025-05-24 23:23:19
1231
原创 AtCoder Beginner Contest 406(ABCDEF)
先用ups,downs数组分别预处理存储局部最大值和局部最小值的下标,再使用滑动窗口的思想,当 i 遍历到满足条件2的点时,通过ups和downs得到满足条件3,4的最小下标 l 和最大下标r ,那么以i点为基础得到的蝶形数组数量为r-l+1。当删除某一行,使用cnt_y[y]对其内部记录,cnt_y[y]表达y列已被删除的垃圾数量,那么在求y列还有几个垃圾时,即为columns[y].size()-cnt_y[y]。在第 i 次运算中(1≤i≤N),他将当前显示的数字乘以一个正整数 A i。
2025-05-19 00:31:02
680
原创 AtCoder Beginner Contest 405(CDEF)
可以保证 d(i,j) 对于给定网格中的每个走廊单元都是可定义的;也就是说,每个走廊单元 (i,j) 至少有一个紧急出口可以通过走廊单元到达。给你一个 H 行 W 列的网格。让 (i,j) 表示从上往下第 i 行和从左往右第 j 列的单元格。从每个E出发进行广度搜索,并记录到达走廊的步数,如果更小则更新到该点步数和箭头。可使用前缀和快速得到区间和,在遍历 i 即可。atcoder前两题的题解就算了,应该也没人想看吧。
2025-05-10 23:03:17
551
原创 Codeforces Round 1023 (Div. 2)(ABCDF1)
2. 如果 x 不在 u->v的路径上,在 x 找最远点时经过u到v路径上的点y,从y点再次出发如果得到的最远点不为u/v。3.如果 x 不在 u->v的路径上,在 x 找最远点时不经过u到v路径上的点,由于是一棵树这两线必定有相联系的点,说明从联系点出发有更远的路径,就与u->v最远不符合。你的任务是补全缺失的部分,使 a 的最大子数组和∗ 恰好为 k,否则就报告不存在解法。1. 如果 x 在 u->v的路径上,那么x到的最远点必为u/v,那么再次dfs得到的必为u到v的路径。的值 来填充你不记得的值。
2025-05-07 01:14:22
953
原创 AtCoder Beginner Contest 404(ABCDEG)
顶点编号为 1,2,...,N,边编号为 1,2,...,M。铃木先生喜欢 M 种动物,即动物 1,...,M。动物 i 可以在 K i 个动物园看到,即动物园 A i,1,...,A i,K i。有两个网格 S 和 T,每个网格有 N 行 N 列。每个碗 i(1≤i≤N-1)上都写有一个整数 C i,最初装有 A i 粒豆子。memo[i]:在点 i 到有豆的其他碗的最小操作数。一排有 N 个大碗,从左边开始依次编号为0,1,...,N-1。为 #,则 S 的单元格 (i,j) 为黑色。
2025-05-03 23:31:31
1272
原创 Codeforces Round 1022 (Div. 2)(ABCD)
这个任务对你来说似乎太简单了,因此你决定给莫里斯一个回礼,在所有这样的数组中构造一个元素之和最小的数组。num 对于被拆分的2的幂次数二进制有数位0为0情况,则可将该数与num都+1,否则num为2,找个数也+2。只要克隆体出现在另一个尚未按下的按钮前,无论它是被创建还是被移动,它都会立即按下该按钮。不考虑有权值相同点的情况下,当一个点值为局部最大值时,它是必定要被创建的,而不是的则可通过局部最大值的左右移动被合理按下。要让和足够小,可先将 x 拆成不同的2的幂次数,再对还要填的数进行添加。
2025-05-02 15:27:27
665
原创 不同版本C++ 函数内函数写法
C++11C++14C++20与在全局变量写函数的优点: 1. 直接捕获局部变量 2. 逻辑集中 3. 闭包隔离状态
2025-04-28 10:01:23
185
原创 Codeforces Round 1019 (Div. 2)(ABCDE)
如果存在一个数组 y1,y2,...,ym,且 y 的元素是不同的(换句话说,对于所有 1≤i<j≤m 的数组,yi≠yj),并且对于所有 1≤i≤m 的数组,xi 和 yi 的乘积是相同的(换句话说,对于所有 1≤i<j≤m 的数组,xi⋅yi=xj⋅yj),那么数组 x1,x2,...xm 就是优美的。对于迭代数为1时,排除非局部最小值,那么必定从最大的开始排除(最大的必定不构成局部最小值),那么对于迭代值为1的位置填的数就从大到小填满,而填的顺序如何构造呢?剩下的数给迭代值-1的位置。
2025-04-23 17:19:57
932
原创 AtCoder Beginner Contest 400(ABCDE)
具体来说,如果 S i 的第 j 个字符(1≤i≤H,1≤j≤W)是 .,则(i,j) 单元是一条路;每个 好整数 的b必定可以是一个奇数,那么先从1开始通过遍历a,结束条件为2^a>N,其间使用二分求出b的最大值,可得到在a_i的情况下有种b是可用的(b要为奇数)。先预处理,先求出1e6内的质数,再求出这些质数能得到的值(<=1e12),在求组合中使用剪枝(两质数相乘>1e6不可行),否则超时。参考最短路的思路,使用堆和广度优先搜索,记录每个点的前踢数,如有更新点的前踢数放入堆中。的方法避免大数相乘。
2025-04-06 18:09:10
1089
原创 AtCoder Beginner Contest 399(ABCD)
记录每个值的两个位置,如果是当前点的首位,这判断当前点与相邻前面的点是否是符合条件的,这可以通过比较两点第二次出现的位置是否相距为1来判断。也就是说,求有多少个整数 i,使得 1≤i≤N S 的第 i 个字符 与 T 的第 i 个字符不同的。有一个长度为 2N 的序列 A=(A 1,A 2 ,...,A 2N )。设置一个数组维护每个人的分数与下标,以分数为关键字排序,使用滑动窗口相同分数的范围,进行操作。树是没有环的,因此在构造图的过程中构成环的边是多余的,可被删除的(判断环通过并查集)。
2025-03-30 00:17:40
936
原创 Codeforces Round 1012 (Div. 2)(ABCD)
每个餐桌由四个单元格定义:(3x+1,3y+1), (3x+1,3y+2), (3x+2,3y+1), (3x+2,3y+2)其中 x,y 为非负整数。如果有多张桌子的距离相同,他们会选择 x 最小的单元格,如果仍然相同,他们会选择 y 最小的单元格。与有关比较的容器有map,set,priority_queue,sort的数组。当ti为1时,优先从小根堆取点,同时要考虑当前桌子比走过剩余的角距离小的可能,这点由上图也可看出。在此基础上找到n/3以上的素数p,以p,p-1,p+1,p-2,p+2,。
2025-03-23 22:56:44
1371
原创 AtCoder Beginner Contest 398(ABCDEF)
也就是说当最初的烟到s[ i ]时,之后的新烟是由s[ j : i ] = s[0 : i ]-s[0 : j]产生的。遍历所有步数 i ,判断当前是否存在s[ j : i ]为人所在的位置,并记录当前的前缀值 [0 : i ]。长为1 放一个 =。记录每个数的出现次数,并放入数组a中,将a降序排序,当下标为1的值大于等于2时可行,否则不可行。在这群人中对于满足“ 其余N-1个人的数没有与自身相同的 ”的人,找到最大的数并输出他的下标。记录出现两次的数的个数cnt2,和出现两个以上的数的个数cnt3。
2025-03-22 23:32:06
772
原创 AtCoder Beginner Contest 397(ABCDE)
前后缀分解,倒序遍历设立一个数组suffix,suffix[i]为[ i : n ]中A的不同整数数量。字符串 io 是没问题,无需改变的。那么删除这些没问题的后剩下都是要在前后插入的字符了,统计一下剩下字符串长度即可。且在d确定的情况下上式单调递增,可用二分判断在d确定下y是否存在。在此问题的约束条件下,可以证明通过插入适当数量的字符、 S 就能满足条件。当把 A 在一个位置分割成两个非空(连续)子数组时,求这两个子数组中不同整数的计数之和的最大值。如果这个整数对,输出这样一个整数对(x,y)。
2025-03-16 21:24:25
811
原创 AtCoder Beginner Contest 396(ABCDEF)
那么在k=0的基础上,当k=i时要找值为m-i的下标的数组change。change中第 i 个值,在这 i 个前面的值除去change中的都为逆序对 : chage[i] - 1 -i。想到异或是针对每个数的二进制数位的,也就是说每个数与它相连的数的相同数位变化是同时的,那么要让和最小就要让同一个联通块的每个二进制数位的0数量大于等于1的数量。在所有简单路径(不多次通过同一顶点的路径)中,从顶点 1 到顶点 N 的所有简单路径(不多次经过同一顶点的路径)中,求路径上边的标签的最小XOR。
2025-03-09 21:29:23
813
原创 字符串hash
将 pre_hash[l] 左移 (r-l) 位(即乘以 B^(r-l))从 pre_hash[r] 中减去这个值。通过预处理字符串,可将求出一个字符串的子串,并与其他字符串比较是否相同的,时间复杂度变为n(1)。
2025-03-03 12:03:43
355
原创 Codeforces Round 1007 (Div. 2)(ABCD1)
我们先遍历深度为i-1的一批节点,那么在之后的遍历中节点一定就到不了i-1以上深度的节点了,以此类推再遍历出i-2深度的节点,此时节点一定到不了i-2以上深度的节点了,一直推到深度为0,en点,记录到这结束后节点一定会在en点了。给定一个正整数 n,找出长度为 n 的完美排列,如果不存在,则打印-1。长度为 n 的排列 p 是完美的。,当n为偶数时满足,a[n+1]是可能与a[n]不同的,所以要当n为偶数时,要推到a[++n]。推几场,可知从第一场开始每过3场,第一场比赛的观众还是观众(即场1,4,7。
2025-03-02 22:22:58
1158
原创 Educational Codeforces Round 174 (Rated for Div. 2)(ABCD)
例如,[1,4,2,4,7] 和 [1,2,4,8] 很美,但 [1,2]、[2,2,4] 和 [1,3,5,3] 却不美。当k==2时,如果a[i]==2,则当前2与前面的1或2结尾数字匹配 dfs(i , k) += dfs(i-1 , 1)当k==3时,如果a[i]==3,则当前3与前面的2结尾数字匹配 dfs(i , k)+=dfs(i-1 , 2)你的任务是计算数组 a 的优美子序列的个数。例如,对于数组 [1,2,2,2,3,3,4,4,4],相等特征为 [0,1,0,0,0,0,1,1]。
2025-02-19 23:28:05
840
原创 AtCoder Beginner Contest 393(ABCDEF)
这里,被称为连续1 当且仅当存在整数 l 和 r(1≤l≤r≤N),使得 S 的第 i 个字符为 1,当且仅当 l≤i≤r,否则为 0。在最后连续1的情况下,左边1与右边1的距离之差是固定的,要达到这种情况必然是去除了其内的0,之后不断向内缩1即可。fine sick 表示高桥没吃有毒牡蛎,青木吃了有病的牡蛎,则3号牡蛎有病毒。sick fine 表示高桥吃了有毒牡蛎,青木没吃有病的牡蛎,则2号牡蛎有病毒。记录每个数的倍数的数量,遍历以当前数为因数且当前数有K个及以上的倍数,更新倍数的答案。
2025-02-16 23:52:12
999
原创 Codeforces Round 1004 (Div. 2)(ABCDE)
如果a为排列,则找到值为1,n的下标i,j。如果为方案A,x点没有出度,返回为0,如果为方案B,因为没有相同的对,返回的必定不为0。遍历整个数组,如果不满足出现两个相同的数,则直接输出NO,否则选中两个相同的数后,对其以相同的数进行加一。那么利用二分答案的思路,先猜答案,在判断能否实现,例如猜测答案为 i 那么判断 n-i 中除尾数外的所有数能否被小于等于 i 加到7即可。例如,如果 n=80,只需进行一次运算即可:在运算 n=179 后,可以把 99 加到 n 中,其中包含数字 7。给你一个正整数 n。
2025-02-12 17:46:20
1185
原创 AtCoder Beginner Contest 392(ABCDE)
先找到每个连通块的无用边,而每条无用边都可连接两个连通块,对无用边进行遍历使连通块和为1即可。确定两个筛子出现相同数字的最大可能性,当筛子选择最佳时。对于每个i=1,2,...,N,找到穿着围裙 i 的人盯着的人上围裙的数字。创建3个数组,围裙 i 所对应的人,i 号人所盯的人,i 号人所穿的围裙。A中的每个元素介于1与N之间,包括1,N,并且每个元素都不同。这有N个数字1到N的服务器和M条数字1到M的电缆。让较小的两个相乘,判断是否与最大的相同。列出所有没出现在A中的1到N按升序排列。
2025-02-09 17:10:38
889
原创 AtCoder Beginner Contest 391(ABCDEF)
用两个数组(nests,pigeon)分别记录,nests[i]记录巢i中有几只鸽子,pigeon[i]记录鸽子i在哪个巢穴中。如果当前 j 块下的3个块中有2个k1, k2与最终值不同,则min( dfs(i+1 , k1), dfs( i+1, k2))从上往下第 i 行和从左往右第 j 列的单元格用 (i,j) 表示。每个区块是 1×1 的正方形,第 i 个区块(1≤i≤N)在 0 时刻位于单元格。有N 只鸽子,编号从1 到N,还有N 个巢,编号从1 到N。为 '#',则单元格 (i,j) 为黑色。
2025-02-01 23:15:09
995
原创 Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)(前三题)
在一次操作中,您可以从 s 中选择一个非空的子序列 t,使得 t 中任何两个相邻的字符都是不同的。然后,翻转 t 中的每个字符(0 变为 1,1 变为 0)。要让过程永续下去必须要走过每个点,判断是否存在一个点 i 会在以该点为起点,向左来回或向右来回时消失,判断条件为i<=2*max(i-1,n-i)。如果某个时钟的时间在某一秒内为 0,即使您可以移动到该时钟并在该秒内重置其时间,您仍然会输。dfs(tmp)为当前序列tmp的最大值,tmp可能会有重复计算的情况,使用memo记忆化。都是 s 的子序列。
2025-01-27 01:25:41
1217
原创 Codeforces Round 1000 (Div. 2)(前三题)
如果一个共素数段 [l,r] 不包含任何不等于它本身的共素数段,那么这个共素数段 [l,r] 就叫做最小共素数段。对于这只能一次的反转,可以选择要求段的左边的小值与要求段的大值交换。或要求段的右边的小值与要求段的大值交换。如果 l 和 r 互为同素数,则正整数 [l,r] 的一段称为同素段。给定正整数段 [l,r],求 [l,r] 中包含的最小共素数段的个数。根据定义,0 个顶点的图有 0 个连通成分。,和一个线段 [l,r](1≤l≤r≤n)。记录每个点的度数,并从度数大层数的开始遍历。
2025-01-22 23:42:56
1197
原创 Codeforces Round 997 (Div. 2)(前四题)
对于一个点,当它联通cnt个有比自身大的点时,那么在它前面必定有至少cnt个空位来放置这cnt个数。让 g(a) 表示长度为 f(a) 的回文子序列的个数。换句话说,g(a) 表示 a 中具有最大长度的回文子序列的个数。对于一个有多个正方形组成的图形,计算周长,该图形的宽与高即可。可以证明,经过所有操作后,图章在纸上形成的彩色图形是一个单一的相连区域。,我们将 f(a) 定义为 a 的最长子序列的长度,它是一个回文。注意,不要按纸张左下角的图章。可以证明,在给定的约束条件下,这样的序列总是存在的。
2025-01-18 01:35:02
932
3
原创 Codeforces Round 994 (Div. 2)前四道
对于每个 i(1≤i≤n),龙 i 与龙 i-1 和 i+1 为好友,其中龙 0 定义为龙 n,龙 n+1 定义为龙 1。此外,龙 x 和龙 y 也是彼此的朋友(如果它们已经是朋友,则不会有任何变化)。在一次操作中,他们可以选择 a 的一个非空子数组∗ b,并用整数 mex(b)† 取而代之。龙 Evirir 溜进了一个巫师的城堡,发现了一个神秘的装置,他们玩耍的本能使他们玩弄(摧毁)了它...符号p代表左侧(l)的所有数字为排列,而s代表右侧(r)的所有数字为排列。当有1段以上的子数组时,运算次数为2。
2024-12-21 19:05:58
992
原创 Rayan Programming Contest 2024 - Selection (Codeforces Round 989, Div. 1 + Div. 2)(前四道)
把拉赫什的身体想象成一条由长度为 n 的二进制字符串 s 表示的斑点线,其中每个 0 表示一个薄弱点,每个 1 表示一个强壮点。罗斯塔姆的目标是确保没有一个间隔由 m 个连续的点组成,这样的间隔是完全薄弱的(都是 0)。有一个关于睿智的凯克霍斯洛国王的故事,他拥有一个巨大的宝库,里面装满了来自波斯帝国各地的珍宝。在每一步移动中,大流士可以选择两根石柱 u 和 v,使这两根石柱的铭文数量之差恰好为 1,然后将铭文较多的石柱中的一个铭文转移到另一根石柱中。的路径的都是可困住的。或会困住的点时,可变为困点;
2024-12-05 21:54:44
934
原创 CodeTON Round 9 (Div. 1 + Div. 2, Rated, Prizes!)(前五道)
每个数为下标i*2-1(注意这里下标i从1开始),这样每个数取余得到的是下标i-1必定不同,且当i=50时,a_{i}为99在范围内符合条件。帮他找到一个s的非空子字符串p并且f(p)为偶数或者声明不存在这样的子字符串。四个字符时,能否在三个字符不行时行,加中间的字符abab,f(abab)=7;,使得每个 1≤i≤n 的数组 ai∈S,并且在所有 1≤i
2024-11-27 21:01:57
613
原创 Codeforces Round 987 (Div. 2)(前五道)
即可以有三个相同的馅料位置为1,10,26,10到26间为奇数有一个没配对,而11+16=27,即11可以与27配对。那么结论即为n>=27,位置1,10,26填相同馅,11,27填相同馅料,剩下的为偶数可以通过偶数情况求解。在 Penchick 生日的时候,Kohane 想送他一份礼物:n 个从左到右排列的烧腊包。在泗水熙熙攘攘的小吃摊上,Kohane 买了 n 根沙爹,把它们排成一行,其中第 i 根沙爹的长度为。对于 1 到 n 中的每个 i,确定兔子从第 i 棵树开始所能到达的所有树的最大高度。
2024-11-16 00:00:37
962
原创 Refact.ai Match 1 (Codeforces Round 985)(前五道)
当k为可行时,从右到左遍历a的下标i,维护以i为跳跃结束时的评分temp到末尾能到k的最小值,判断i之前有无能到temp的情况(使用前缀维护最大值)。f(x,y):x为当前分数,y为当前表现,当x>y分数大于表现时return-1;初始化为dp[0][0]=0,dp[0][1]=-1,dp[0][2]=-1(情况2,3初始化-1可避免只比1场的情况)在第 i 次操作中(你有一个长度为 n 的二进制字符串 s,艾瑞斯 给了你另一个长度为 n-1 的二进制字符串 r。为1替换的情况即为s中的0数量-1,而。
2024-11-12 19:02:34
859
原创 Codeforces Round 986 (Div. 2)(前四道)
之后,她会把这 m+1 块蛋糕分给 m 个生物和她自己(她的那块蛋糕可以是空的)。在一次操作中,爱丽丝用 a 中的最小元素未出现 替换 a中 的最大元素。如果 a 中有多个最大元素,爱丽丝会选择最左边的一个进行替换。现在,爱丽丝在位置 (0,0),红皇后在位置 (a,b)。c小于n-1时,如果c为n-2通过n-1次操作还是可以得到答案,否则无论如何都不行。遍历左边第i块与右边第m-i块中间部分的和,可用前缀和快速求出,最后比较大小即可。=0时,a一定可以变为排序,只要替换掉a中大于n-1的数即可。
2024-11-11 22:56:42
1073
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人