自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 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 860

原创 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 1265

原创 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 721

原创 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 757

原创 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 766

原创 单链表实现原理图解

【代码】单链表实现原理图解。

2025-03-06 21:24:41 230

原创 并查集(启发式搜索优化)

用于快速合并两个集合,判断两个元素是否属于同一集合,时间复杂度均为为O(logn)。

2025-03-04 15:28:05 126

原创 字符串hash

将 pre_hash[l] 左移 (r-l) 位(即乘以 B^(r-l))从 pre_hash[r] 中减去这个值。通过预处理字符串,可将求出一个字符串的子串,并与其他字符串比较是否相同的,时间复杂度变为n(1)。

2025-03-03 12:03:43 319

原创 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 1109

原创 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 806

原创 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 982

原创 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 1117

原创 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 853

原创 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 945

原创 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 1141

原创 python虚拟环境创建

使用virtualenv库进行创建。注意:以下操作均在终端进行。

2025-01-27 00:52:59 324

原创 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 1155

原创 Codeforces Round 997 (Div. 2)(前四题)

对于一个点,当它联通cnt个有比自身大的点时,那么在它前面必定有至少cnt个空位来放置这cnt个数。让 g(a) 表示长度为 f(a) 的回文子序列的个数。换句话说,g(a) 表示 a 中具有最大长度的回文子序列的个数。对于一个有多个正方形组成的图形,计算周长,该图形的宽与高即可。可以证明,经过所有操作后,图章在纸上形成的彩色图形是一个单一的相连区域。,我们将 f(a) 定义为 a 的最长子序列的长度,它是一个回文。注意,不要按纸张左下角的图章。可以证明,在给定的约束条件下,这样的序列总是存在的。

2025-01-18 01:35:02 890 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 967

原创 C++ 数据存储容器(以stl为主)

总结stl容器常用的函数。

2024-12-16 01:15:58 184

原创 C++ 整型数据范围

大概范围(9e18)大概范围(1e19)大概范围(1e38)大概范围(3e38)

2024-12-15 21:01:33 192

原创 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 713

原创 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 568

原创 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 936

原创 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 825

原创 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 1020

原创 浮点型精度控制方法--C++

1.返回当前精度 precision()2. 将精度设置为给定的精度(数字的长度)。precision(new_precision)与precision()/setprecision()配合,可将其变为控制小数点后需要输出的位数。作用与precision()相同。实现无科学记数法的小数点后6位。

2024-11-07 11:23:27 229

原创 算法竞赛数学随笔

持续更新中。。。

2024-11-03 04:01:11 127

原创 Codeforces Round 983 (Div. 2)(前三道)

(码的,比赛脑抽了,还真以为依次改过去就好,红温了)(一般他2s,数据量为1e5左右,算法时间复杂度都为。例如:median([1,2,5,4,3])=3, median([3,2,1])=2,median([2,1,2,1,2,2,2])=2. .观察提示可得出{01,10}状态灯为on,而{11,00}则为off,on灯数量最大的可能即为1与0的匹配数,而最少则为n减能达到关灯的数量。从小到大排序后,维护一个区间,让区间内的线段都满足三角形,而区间外的的都为不满足统统整改。, 和一个整数 k。

2024-11-02 01:34:05 1182

原创 Codeforces Round 982 (Div. 2)(前四题)

例如,数组[1,4,2,3,6,5,5,7,7]在斯大林排序后会变成[1,4,6,7,7]。如果数组 a 可以从数组 b 中删除开头的几个(可能是零或全部)元素和结尾的几个(可能是零或全部)元素,那么数组 a 就是数组 b 的子数组。斯大林排序(Stalin Sort)是一种幽默的排序算法,旨在删除不合适的元素,而不是费心地对它们进行正确排序,其时间复杂度为 O(n)。你需要最小化操作的花费,使数组 a 为空。给定一个由 n 个整数组成的数组 a,求从数组中删除的整数的最小个数,以使数组变得。

2024-10-30 22:16:27 1021

原创 Codeforces Round 980 (Div. 2)(前四题)

例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是一个排列(2 在数组中出现了两次),而 [1,3,4] 也不是一个排列(n=3,但数组中有 4 个)。逆序对主要考虑数与数的大小关系而不是数本身,如果数a在最前面造成的逆序对为x个,数b在最前面造成的逆序对为y个,如果(x>y)则a排在前最好。先排个序(非递减)先对i及之后的按钮按当前插槽中的罐头数(a[i]-a[i-1])*(n-i),后加上试错的次数,判断罐头数是否达到k。注意,在按键过程中,您可以根据是否收到一罐柠檬水来调整您的策略。

2024-10-20 23:01:38 873

原创 Codeforces Round 979 (Div. 2)前四道

第一题 给你一个长为n的数组a,建造两个数组b,c 都含有n个元素,及以下方法 定义a的分数为。在计算分数前,你可以组合你任何想要的a的顺序。 以你组合最佳序列找到a的最大分数。 第二题 对于任意二进制字符串t,让f(t)为t的非空仅含0的子序列数量并让g(t)为t的非空至少含有一个1的子序列数量。 注意f(t)和g(t),每个子序列在t中出现几次就记录几次,如f(000)=7,g(100)=4

2024-10-20 21:53:10 768

原创 A. Valeriy and Deque

由于deque的前两个比较中会把大的留在第一位,因此最终第一位的值是固定的而后面的部分没有比第一个大的会陷入循环。所以模拟题目给的操作并记录直到最大的来到第一位后停止,这时要求的操作数小于模拟次数就直接给出记录的答案,其余情况由于除第一位外处于循环也能直接定位到。

2023-12-17 22:14:59 407 1

原创 E. Bertown roads

low[]更新回溯最短的时间点,dfn[]到达的时间点。深度搜索,遇到访问过的点表明可以构成这段路径强连通分量,更新low。当low[to]>dfn[now]时,说明now不在含有to的强连通分量里,即这个图里含有不止一个强连通分量。在有向图中点与点能互相到达。即求从点1出发的强连通分量是否包含所有点。话说链式前向星的搜索速度比邻接表快好多。好烦,图的连通性要回顾下了(割点,桥,强连通分量)。不过这问题倒也挺典型的。

2023-12-16 20:08:52 373

原创 E. Crazy Robot

判断哪里的疯狂机器人可以回实验室。由于机器人是叛逆的,一定不会往你命令的方向走。因此要让机器人只能单向的走或一定能走到可以会实验室的点;即从实验室出发后的点能接触的“.”小于等于1,并把可以的点标记为“+”。先想完思路再写比较好。

2023-12-15 19:52:51 404

原创 C. Cycle

深度搜索(并传入当前点与上个点的参数),每个走过的位置都打上标记,返回时不用取消,因为必定不可能从该点得到答案了。

2023-12-14 16:39:51 420 1

原创 B. Infinite Maze

使用pair<int,int> vis[maxn][maxn]二维数组,存储每个位置的上个坐标。相同表示重复搜索,起记录作用;不同表示再次走到,以此判断是否循环。一个迷宫判断能否无限走下去。从起点开始使用广搜,第二个走到相似点时,表示可以循环。(x,y)==((x%n+n)%n,(y%m+m)%m)这两个点即为相似点。让一个数组起到两个功能,可以的。1.会重复搜索相同点。

2023-12-13 22:03:17 330

原创 B. Dominoes

先找一个端点(出度为奇数的点),而当端点不止两个时,输出no solution。否则从端点出发走过所有能走的边并记录。最后判断下是否走完输出答案。

2023-12-13 16:19:13 415

原创 D. Cycle in Graph

求vector中元素的位置find(vector.begin(),vector.end(),i)-vector.begin()。find(vector.begin(),vector.end(),i)返回的时迭代器的位置而非寻找元素的位置。找长度不小于k的循环体。直接深搜,数组ans记录路径,当搜到之前走时判断循环长度是否达标。

2023-12-12 18:18:05 311

原创 F. Graph Without Long Directed Paths

YES时的输出问题,开始时记录u,v。并创建vis记录哪个点入度,那个点出度。输出答案时遍历u输出该点入度还是出度即可。要求每条路径长度都必须小于2,才输出YES。因此保持相连点的入度出度的交替,即当前点只有入度那么下个点就只有出度。链式前向星的edge数组开大小时,要注意边的数量。

2023-12-12 15:24:29 395

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除