- 博客(24)
- 收藏
- 关注
原创 Educational Codeforces Round 166
签到(写的有点烦…)遍历1≤i≤n显然初始答案为1∑1≤i≤nabsai−bi])如果存在一个i使得bn1在ai和bi之间,那么答案就是上述和否则还要加上minminabsbn1−ai])absbn1−bi]))1≤i≤n。
2024-12-31 15:05:54
761
原创 Educational Codeforces Round 165
答案只会是2或3,分类一下就好了找规律,对于初始前面有1的0,一定要移动到前面去,最小代价是它前面1的个数再加1。
2024-12-31 11:49:07
752
原创 Educational Codeforces Round 157 (Rated for Div. 2)
观察题意发现一个字符串有用的部分只有它的长度和总和,用一个数组来存储就好了。关键在于重复的问题了,我们发现这种做法只能与长度小于等于自身的字符串拼接。那么可以发现,一个字符串如果和长度不等于自身的字符串拼接是不会产生重复的。先找可以接在它右边的,由于要求长度是偶数,接在它后面的长度可以为。个数,分为两组,使得每组的相邻两数之差的绝对值相加之和最好。长度为偶数且字符串前一半的数位和等于后一半的数位和。要减去二,(自己和自己拼接的情况),最后加上。和长度相同的拼接则会有重复,这里可以用。,再计算数位和就好了。
2024-12-07 14:15:59
1133
原创 Educational Codeforces Round 172 (Rated for Div. 2) - Codeforces
右端点大的要先放入集合,这样下面右端点较小的值才可以求出交集,反之会使得两者都无解(可以手动带俩个值模拟一下,假设区间只有。最后还有个要注意的点是这样去做的话对于两个完全相同的区间,第一次去处理的时候会算出交集,这里要特判一下,也可以用。没有消去最后一项,计算会很复杂,做题的时候前缀不行换后缀,顺序不行换倒序(😄))之外的后缀和,将其排序,每次取最大值即可,答案就是取的所有后缀和再加上一。,那么没有区别,因为一定是A拿一个,B再拿一个防止A得两分。A要最大化A的得分,B要最小化A的得分,A先手。
2024-12-06 14:33:26
697
原创 Educational Codeforces Round 80 (Rated for Div. 2) - Codeforces
但要注意取整的时候可能存在偏差,暴力搜索一下附近的值就好了。说实话看到最大的最小值就该想到二分的,但我不会状压…的范围很大,暴力显然会超时,这里可以用二进制压缩。如果有两行数组符合条件,显然他们的按位或的结果为。开始遍历,我们发现第一次求解的时候利用的是。然后就是一些关于位运算的东西,要注意。的不递减序列的个数(对他使用。观察前后项的递推关系发现,在。的初始化问题,先写出代码,从。双钩函数,直接显然极值点是。,然后根据这个值找到对应的。的序列后面都可以接上一个。,可以接受,直接设置一个。
2024-12-05 19:44:02
912
原创 Educational Codeforces Round 169 (Rated for Div. 2) - Codeforces
否则,则需要一个中转点,且只能有一个,因为对于两个没有相同的颜色的城市来说,其余四种颜色组合都可以到达他们,为奇数的话,同理,可以先不看第一个数字,因为B不可能去增加他,只需把后面处理完之后将答案加上第一个数就好了。,否则就是合并区间内的所有门加上区间合并后的两端的门,要注意如果合并前两端相同的话这这一端的门就不用加了。对于两个查询的城市,如果他们之间有相同的颜色,那么他们之间的最短路径只可能是。数组分别记录每个位置的城市,离他最近的,在他之前或者在他之后的可以到达的城市。数组存储在其之前的状态。
2024-12-01 10:48:22
624
原创 Educational Codeforces Round 171 (Rated for Div. 2) - Codeforces
由于给出的数组是递增的,只需要考虑最大的相邻元素差值就好了。要注意奇数的时候需要提取一个出来,再去求最小的最大值。首先肯定要先处理好处理的部分,观察题目发现,像。的时候可以在这天购买,反之不能在这天购买。,那么这天上架的机器人一定不能免费,因为。,利用二分得出,然后就是求不完整段的和。用完了,那么就去找没有用过的最小的。所以可以先求出连续段的个数,总共有。,后面一定有更贵的机器人可以选择。,可以优先和离他最近的比他小的。的天数,再利用一个栈去维护。这样完整的片段的和是可以在。偶数的时候答案是固定的。
2024-11-30 10:55:35
909
原创 质数的问题
原理和上面差不多,找到一个因数后将其约掉,要注意最后特判一下,因为可能存在一个大于。最后是线性筛,具体原理我也不太清楚,这里就验证一下它的正确性。如果一个数不是质数那么它必定可以表示成。就是对于每一个数都去将他的倍数剔除。优化一下,只需用质数去剔除就行了。因为目前最大的质数是。
2024-11-23 19:29:55
1036
原创 二维费用的背包问题
这题和前面有一些不同,这里的费用是不小于,在先前的题目中,我们在反向遍历体积的时候都是直接不考虑。这题是一个变式,要注意第三个循环根据题意应该是大于号,因为体力必须大于0。小于零的情况,但此处需要考虑负下标。可以这样理解,如果最少需要的氧气是。,当然是要选择物品的,所以负下标其实是需要考虑的,在计算的时候如果。从前往后遍历,循环一遍体力的费用,找到最小值输出。背包,但是费用变成了两维,所以要再加一重循环。,但是,每个物品里面的氧气都大于。此处的费用是不超过限定体积。然后是输出最大的体力剩余量。
2024-11-21 19:59:32
364
原创 从零开始的异世界算法*4(前缀和与差分)
接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r]之间的每个数加上 c。前缀和与差分的概念和数列的前n项相似,可用于优化时间复杂度,快速计算一个区间的长度。首先是一维数组的前缀和,求出数组l到r区间上的和,n次读入。然后是一维数组的差分,可以应用于在某一段连续区间的修改。再看看差分,先构造一个b数组使得b数组的前缀和为a数组。首先可以通过递推计算的出二维数组前缀和的公式。然后计算x1y1x2y2构成的子矩阵的和。然后是相对复杂的二维数组的前缀和与差分。
2024-03-06 18:24:07
389
原创 从零开始的异世界算法*3(位运算)
原理是此处的-x即为x的补码,如10100的补码为取反x+1即为01100,用&后便可以返回100,1.lowbit函数,返回一个二进制数的最后一位1。基于此函数可以用于统计二进制数中1的个数。
2024-03-06 08:54:53
305
原创 从零开始的异世界算法*2--二分
第二种则是从右向左查到第一次出现的元素,此处对于mid的计算要格外注意,比如说,当l=r-1,此时l+r>>1是向下取整,仍然为r减一,进入死循环,因此改为l+r+1>>1。一.区间[l,r]被分为[l,mid]与[mid+1,r]二.区间被分为[l,mid-1]与[mid,r]首先是比较复杂的整数二分法,分为两种情况。一种是从左向右查找第一个出现的元素。
2024-02-29 15:52:26
359
原创 用数组实现日期运算
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,a年b月c日放置,定时为n天,请你计算它爆炸的准确日期。在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。每个炸弹都可以设定多少天之后爆炸。
2024-01-31 19:36:27
459
原创 关于我入门dfs写的一段代码
很明显,没有了回溯只会输出其中一个答案,先稍安勿躁,让我们来详细看看这段递归是如何进行的,(先默认输入的n为3),首先,1传递到了dfs函数中,此时step为一,不满足递归结束条件,此时book【1】为1,for循环从2开始,使得a[2]=2,再次递归dfs(3),1,2均已经使用,使得a[3]=3,dfs(4),至此,递归结束,打印1 2 3,运行结束。学习中我发现dfs中最难理解的一步就是回溯,所以我先写出了不带有回溯的代码,如下。这段代码是有关与实现从正整数1到n的全排列。输出结果为1 2 3。
2024-01-28 18:58:05
382
原创 寒假写的一些题目...
有三个字符串S1,S2,S,其中S长度不超过300,S1和S2的长度不超过10.想检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在S中互不交叉(即S1的右边界点在S2的左边界点的左侧)。例如,S=abcd123ab888efghij45ef67kl,S1=ab,S2=ef,其中,S1在S中出现了2次,S2也在S中出现了2次,最大跨距为18.一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。剩下一个月寒假再刷刷。
2024-01-24 18:24:54
453
1
原创 指针的定义及其简单应用
不难发现,xy的值并没有得到交换,这是因为,虽然在开始px py pt分别指向了xyt,但在交换时,并没有使用*px,而是px-指针本身的值,是一个地址,这段语句只是将指针变量的值交换了,使得指针px指向了y,指针py指向了x,但xy本身的值并没有交换。若定义一个指针变量px,使px=arr,那么对arr进行加减常数a,则等价于指针的指向动了a个单位。而在二维数组中,则有些不同,首先,我们知道二位数组在内存中的存储依旧是线性的,因此我们可以利用指针对二维数组进行相对简单的输入输出,这一部分与一维数组相似。
2023-11-29 21:39:08
427
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅