- 博客(46)
- 收藏
- 关注
原创 并查集(易理解)
压缩就是把左边的查询方式变为右边的,压缩之前查询4的头结点要经过3,2,压缩之后就可以直接查询到1。是一种非常精巧而实用的数据结构,它主要处理一些不相交集合的合并问题。完全模板提,把init,find,union用一下,直接输入输出就行。如图本来4,3的父节点是本身,4的祖先节点指向3,3又指向2,找到i的祖先直接返回,未进行路径压缩。如何把两个集合合并,下面就是代码。起初把每个节点的父节点赋为本身。后续可能继续补充例题。
2024-08-23 15:48:04
384
原创 河南萌新联赛2024第(六)场:郑州大学
小G所在的道路上排列着n个路灯,每个路灯发出的光亮为li。由于视野问题,每次只能看到前方最亮的那盏灯的位置,(若前方有多个亮度值最大,则只会跑到第一个亮度值最大的位置)所以小G每次冲到最亮的那盏灯下,然后进行一次休息。当n=3,中间是奇数的时候就不行了,偶数可以,n>3中间只要有一个大于1,就可以,因为可以向它两边的任意位置跑,但是中间有奇数计算数量要多一次。判断一下两个字符串在缺少的地方之前或者后面是否完全一样,如果一样证明可以添加一个字母之后完全一样,就在这个地方添加就行,不然直接输出0。
2024-08-22 11:26:53
226
原创 Codeforces Round 967 (Div. 2)
奇数就可以第一个数输出x,每次减2,输出1,再每次加2,直到输出次数等于x(这个是观察样例三观察出来的)一个数组,最多实行n-1次,计算最少多少次可以变为同一个数。计算重复次数最多的数,用总数减去重复最多的就行。偶数的时候不行,直接输出‘-1’;
2024-08-21 10:22:43
320
原创 河南萌新联赛2024第(五)场:信息工程大学
有一个含有 n 个元素的随机序列,如果一个序列中所有元素均在 [L,R] 区间内,则称其为一个好的序列,现在每次你可以在使其中一个数+1,另一个数-1,问最少要多少次才可以使随机序列成为一个好的序列。主要就两种情况,一种就是完全不可能的(考虑一下减少,增加的极值);dp,当前数量楼梯等于前一个楼梯的数量,注意每次可以走几个楼梯。任何一个奇数都可以是由三个质数相加得到的,让前两个尽可能小。求中位数,算一下每一个数变为和中位数相等需要多少,最后加一。把所有数变成同一个数,再加一个魔力值就可以达到满分。
2024-08-16 17:35:02
352
原创 河南萌新联赛2024第(四)场:河南理工大学
就是把每个加号之前的数用心定义的字符串接一下,用stoi函数转换为整数,储存到数组中,然后进行排序。一行一个字符串(仅由加法符号以及数字组成),算一下结果,同事要把算式按照从大到小输出。加入你是恶魔一号,要怎么给自己分金币最多的情况下,让至少一半的人同意(包括自己)异或容易求,所以可以求最小异或,用f=pow(2,m)-1去减就能找到最大值。根据样例很容易想到,给一半的人分一个,其余都是自己,注意奇偶数判断就行。就先判断是否为素数,然后根据判断结果输出结果。在一组数中,两个可任意组合,求最大的同或。
2024-08-08 10:41:41
309
原创 Codeforces Round 964 (Div. 4)
怎么说呢,早上到教室,打开昨天B题的代码看看到底哪里有问题,找了各种类型的样例都过了,就想着提交一次,结果对了(一个字母符号都没改),我直接傻了,然后翻看昨天赛时提交的,发现有一次我提交的是把其中的两种情况加了双斜杠,内心活动不可形容。就判断给定的几个区间当前左区间和前一个的右区间差值是否大于等于洗澡时间。判断能否在给定的时间段,并且不在完成任务的时间段,能否完成洗澡。每人两张牌背面朝上,每次翻开一张,两人比较大小,问有几种赢法。给定一个两位数的正整数 n ,求其数位之和。
2024-08-07 10:38:23
339
原创 洛谷练习(8.6)
士兵只能往右或者下走,所以最后一个位置只能从上或者左过去;可能性就dp[i][j]=d[i-1][j]+d[i][-1],依次类推。棋盘中有一个马士兵不能经过马,也不能经过马走一步就能到的位置,计算到终点有几种可能。
2024-08-06 16:14:36
181
原创 洛谷练习(8.4/8.5)
递归,遇到’['后面数字是几就循环接到后面几次,遇到‘]’递归/分治,先减去距离这个数最近的2的i的数,逐层递减。分治,就是对三角形的复制移动(代码注释会详细一点)计算不同长度木棍的数量,排列组合。把一个数用全是2或者0,表示出来。比较苦度和酸度的最小差值。选取4根木棒摆成正三角形。就是把折叠的字符串展开。
2024-08-05 15:20:39
376
原创 Codeforces Round 962 (Div. 3)
定义数组要用char ,当时一开始我用int 花费了大量时间 ,因为会超时,其他挺简单的,两个for循环,每次加k(或者只输出i,j对k求余为0的应该也可以,但是从1开始,不是0,0的话+1求余)当n 大于4时一直减,sum++,最后剩余一个2,再加1。农场有鸡和牛,给定一个数求最小动物数量。将n*n的网格缩小k倍。
2024-07-29 15:16:33
150
原创 Codeforces Pinely Round 4 (Div. 1 + Div. 2)
每次减去当前数组最大值的一半,但是不管一开始还是在该过程中,只要有两个数相等(当时只判断了原始的数组,唉),就直接break,两个相邻的数不可能减去一个整数等于零。一组数据同时减去一个数保留绝对值,在四十次之内,所有值等于零就输出次数及每次减去的值,超过40次输出-1。数组个数是奇数,在数组中可以删除相邻的两个数,求最后剩余的一个数中最大是多少。因为只能删除相邻的,而且是奇数个,所以最后最大的数肯定是第奇数位的。
2024-07-29 11:38:33
460
原创 河南萌新联赛2024第(二)场:南阳理工学院
曾几何时,光芒万丈,一人之下,万人之上。可叹今日,zbk倒在血泊之中,兄弟联手他的未婚妻背刺了他,他的好兄弟小川夺走了属于他的一切,包括他的未婚妻。他如此爱他的未婚妻,为救他身负重伤,才给了小川可乘之机,但现在回想起来,自己也不过是一只爱情的添狗罢了。但在此之前,他需要在人群中分辨出他复仇的对象是否在其中,因为zbk是个死舔狗,不忍心对未婚妻下手,因此他只需要找到小川就好了。对此,他发动了他的大编程术。输出时成员名字字典序小的先输出,每个成员的星座信息中字典序小的先输出,星座信息中前导零也要输出。
2024-07-24 20:04:40
1425
原创 Codeforces Round 960 (Div. 2)
##反思:反思刚开始想到第一个是奇数能赢,后来想到了第一个偶数,第二个是奇数也能赢,很遗憾没想到不止最大的两个数。###思路:排序之后从最大到最小只要个数是奇数Alice就能赢。
2024-07-21 17:28:20
593
原创 bitset和set总结
##unordered_multiset : 元素无序可以出现多次。###unordered_set :元素无序且只能出现一次。###multiset:可以重复,并且有序。###set从小到大的集合,即无重复元素。##bitset常用函数。
2024-07-21 16:52:53
439
原创 河南萌新联赛2024第(一)场:河南农业大学
定义这个图的代价是:你有任意次操作,每次操作合并两个联通块,合并后联通块大小为二者之和,最后剩下两个联通块大小的乘积为此图的代价,若只有一个则代价为0。现在有长度为 n 的数组 a,式子 S 定义为 𝑆=𝑎1÷𝑎2÷𝑎3…循环右移:一次操作使数组从 𝑎1,𝑎2,𝑎3,…,𝑎𝑛形式转换为 𝑎𝑛,𝑎1,𝑎2,…操作1:选择一个数 i(1≤i≤n) 使得 𝑎𝑖:=𝑎𝑖+𝑥,x 可以是[1,n] 范围内任意正整数。选择一个数 i (1≤i≤n) 使得 𝑎𝑖:=𝑎𝑖×𝑥,x 可以是 [1,𝑛] 范围内任意正整数。
2024-07-17 20:11:33
106
原创 N叉树的前序遍历
Problem: 589. N 叉树的前序遍历文章目录思路解题过程Code思路前序遍历,遇到空节点返回解题过程对每个节点进行遍历Code/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _
2024-07-15 10:34:05
350
1
原创 STL(string)
6.s.find_first_not_of(str, pos): 在当前字符串的指定索引位置开始查找第一个不在子串中的字符,返回找到的位置索引,-1 表示查找不到字符。8.s.find_last_not_of(str, pos): 在当前字符串的指定索引位置开始查找最后一个不在子串中的字符,返回找到的位置索引,-1 表示查找不到子串。7.s.find_last_of(str, pos): 在当前字符串的指定索引位置开始查找子串中的最后一个字符,返回找到的位置索引,-1 表示查找不到字符。
2024-05-27 00:18:07
463
原创 最长连续不重复子序列
的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。范围内),表示整数序列。
2024-05-19 23:36:58
1747
原创 2024河南第六届CCPC
例如,当n=12345 时,任意排列得到的n′ 均是合数,因此可以任意取n′。思路:末尾是0,2,4,5,6,8肯定是合数,如果末尾不是,那么五个数字里起码有一个是,和末尾交换就行。对于n=12345678,d=9,可以取 k=404,有 n·k=4987653912 为幸运数。对于n=1,d=6,可以取k=1234567896,有 n·k=1234567896 为幸运数。对于n=233,d=2,可以取k=9217006,有 n·k=2147562398 为幸运数。• 获得1枚扫雷币,目前有2枚扫雷币。
2024-05-19 22:34:04
764
1
原创 【无标题】
给出两个字符串s1和s2,若s1的区间lr子串与s2完全相同,则称s2在s1中出现了,其出现位置为l。现在请你求出s2在s1中所有出现的位置。定义一个字符串s的 border 为s的一个s的子串t,满足t既是s的前缀,又是s的后缀。对于s2,你还需要求出对于其每个前缀s′的最长 bordert′的长度。
2024-05-12 23:18:15
1495
1
原创 20240509J - Similarity (Easy Version)
【代码】20240509J - Similarity (Easy Version)
2024-05-12 22:59:00
413
1
原创 训练赛0505(2023年中国大学生程序设计竞赛女生专场)
阿杰平时最喜欢玩赛尔号,赛尔号里面有很多小游戏,这次活动更新的小游戏描述是这样的:给出一个有 9 个格子水平排列的棋盘,从左到右标号为 1 到 9 ,游戏的开始时标号为 2 的格子上有一个紫色棋子,标号为 3 的格子上有一个绿色棋子,标号为 4 的格子上有一个黄色棋子。这个游戏的终极目标是在最后的展示大会上获得最高的评分,最后的展示大会上有一些评委,每个评委都有各自的评判标准,当你达成了这个评委的评判标准,你就能获得这个评委的评分,评委的评判标准格式如下,可以由一个整数七元组 表示。
2024-05-05 23:03:01
1601
原创 Hello XTCPC
您需要找到尽可能多的序列“xtCpc”。但是字母在同一个位置只能使用一次。第一行是一个整数 n显示字符串的长度。( 1≤n≤2×10 5)第二行是长度为 n 的字符串,由小写字母和大写字母组成。输入文件包含一个整数,显示找到的不同子序列的最大数量。题目中没说但是是个多实例测试。
2024-04-27 21:51:23
158
原创 P1059 明明的随机数
1000 之间的随机整数 (N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1到。输出也是两行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。第 2 行为M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。输入有两行,第 1 行为 1 个正整数,表示所生成的随机数的个数 N。第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。
2024-04-27 19:33:53
195
原创 时间复杂度
i是从0到n,j是从0到m,所以每个n都有m种可能即时间复杂度O(m*n)i从一到n,内层循环执行2,4 ,6等差数列n(2+2。这个时候时间复杂度就是O(sqrt(n))#核心主要分为不同的循环循环次数。1.列出外层循环(i的变化)时间复杂度O(log2n)(n+1)即O(N*N).2.列出内层循环执行次数。1.可以理解为求三维体积。2.也可以理解为列式求和。
2024-04-26 22:54:53
126
1
原创 滑动窗口 /【模板】单调队列(洛谷)
有一个长为 𝑛n 的序列 𝑎a,以及一个大小为 𝑘k 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。输入一共有两行,第一行有两个正整数 n,k。第二行 n 个整数,表示序列 a。对于 100% 的数据,1≤k≤n≤10 6,ai∈[−231,231)。对于 50% 的数据,1≤𝑛≤10 5 ,1≤n≤10 5;输出共两行,第一行为每次窗口滑动的最小值。可以用数组或者双端队列或优先队列做。第二行为每次窗口滑动的最大值。窗口位置最小值最大值。
2024-04-26 14:29:43
334
1
原创 P1115 最大子段和(洛谷)
对于 100% 的数据,保证 1≤𝑛≤2×10 5,1≤n≤2×10 5,−10 4≤ai≤10 4。第二行有 n 个整数,第 𝑖i 个整数表示序列的第 i 个数字 baiai。给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。选取 [3,5] 子段 {3,−1,2},其和为 4。对于 40% 的数据,保证 n≤2×10 3。训练时的代码(只能过两个测试点,时间超限)第一行是一个整数,表示序列的长度 n。输出一行一个整数表示答案。事实上有一种很巧妙的方法。
2024-04-26 13:40:55
256
1
原创 P1303 A*B Problem(洛谷)(高精度乘法)
当最后一个数字大于9,进位更新字符串长度,但是如果0乘以1000,会输出四个0,因此等于0,长度也需要更新,但是保留一位。与乘法相似先储存字符串,但是不懂的是想成怎么储存。每个非负整数不超过 10的2000次方。给出两个非负整数,求它们的乘积。输入共两行,每行一个非负整数。输出一个非负整数表示乘积。
2024-04-23 17:43:50
223
原创 P1601 A+B Problem(高精)(洛谷)
想加之后是倒数的和,所以字符最后一位不是零,长度加一。高精度加法,相当于 a+b problem,40% 的测试数据,0≤𝑎,𝑏≤10 18。20% 的测试数据,0≤𝑎,𝑏≤10 9;输出只有一行,代表 𝑎+𝑏a+b 的值。倒序输出就是所求结果。
2024-04-23 16:45:36
174
原创 P2249 查找(洛谷)
输入 𝑛n 个不超过 109109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 𝑎1,𝑎2,…对于每次询问,给出一个整数 𝑞q,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 −1−1。数据保证,1≤𝑛≤10 6 ,1≤n≤10 6,0≤𝑎𝑖,𝑞≤10 9 ,0≤ai,q≤10 9,1≤𝑚≤10 5,1≤m≤10 5。这道题难度不大主要是算法的问题,多了解一下算法,这次的二分写的更清晰简练 ,所以我觉得有必要写一下。输出一行,𝑚m 个整数,以空格隔开,表示答案。
2024-04-22 14:30:24
321
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人