自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HDOJ 课程例题记录

备战新生赛,决定暂放cf,开始恶补oj题目。

2026-03-14 01:57:16 366

原创 东南大学第六届程序设计竞赛冬季赛(新手组)赛时ABCDF 【差分】

准备打北邮新生赛了,时间有点赶就来找各大高校新生赛补一下。

2026-03-07 01:28:51 267

原创 Codeforces Round 1084 (Div. 3) VP赛时ABCD 栈的应用

我好想上青名~~!!n 个人,第i人有a[i]盘菜,从任意一人开始按照滚动顺序,每个人每次吃1盘菜(如果还有),问谁有可能吃掉全场最后一盘菜。显然只有自己的菜是最大值才可能在最后吃掉。因为每轮每个人都会-1,那么菜最多的就是最后减为0的,而如果有多个最大值,那么初始顺序就能决定最终哪个最大值最后为0。因此我们只需要找最大值的个数即可。这里给出核心代码。

2026-03-01 21:09:39 564

原创 AtCoder Beginner Contest 447 赛时ABCD ( tle专场 ) ,图论

参加过三场abc,这一场是目前最拉的一场,tle成了我的严父。

2026-03-01 02:18:15 400

原创 Codeforces Round 1081 (Div. 2) 赛时ABC

给定一个字符串,你可以任意幅度的滚动该字符串,使其中的“块”最多。一个“块”定义为字符串中一个连续且字符相同的最长子串,如"abbcaccca"中块有"a""bb""c""a""ccc""a"。首先当然是直接计数初始状态下块的数量,然后就是判断能否通过滚动使块变多,如样例abbc变为bcab。观察可以发现,如果字符串中存在长度为2的块,就可以将其中两个字符分居两侧从而块数加一,但还有个前提,那就是当前两侧字符不同,如果已经相同,那么怎么滚动都不会增多。因此简单分类讨论即可。

2026-02-22 11:33:48 517

原创 日常刷题 codeforces 排序

观察可以发现,任选一组 i < j Bob都会处理成 v` = a[i] + b[i] - a[j] - b[j],而这对i , j 在初始状态下的计算是 a[i] - b[i] + a[j] - b[j] ,因此选这对下标相对于初始v的变化量d = 2 * a[j] - 2 * b[i];这一题k是废的,无视即可。:右边的 a 一定小于等于左边的 a ,因此只需要保证右边的a大于等于左边的b即可(右边的a一定大于等于自身的b),因此我们只需要记录出现过(除当前)的最小b,看当前a是不小于最小b即可。

2026-02-21 17:28:22 50

原创 codeforces 构造题 前缀和

a[i + 1],如果a[i] > a[i + 1],那么在i处取前缀-1就是不可避免的,同理如果 a[i] < a[i + 1],那么在i + 1处取后缀-1就是不可避免的。同理当 a[ i ] - a[ j ] = 2,那么 a[i] = 3 ,a[j] = 1 或 a[i] = 4,a[i] = 2,s[i] = 5,s[i] = 3,那么3,4,5都能满足这些需求。对一个长度为n的排列p进行n次操作,第i次操作可以选一个后缀使全部+i,问你使最终结果的逆序对数目最小化的方案。

2026-02-20 00:33:37 250

原创 牛客周赛 131 DEF 动态规划, 枚举MAX, 连通块/二分图染色

对于问题2:假设我们让a[5]为目标max,当a[1]和a[2]同减后可获得的增量1不直接加入a[5],一定不优于直接加入a[5]——因为同样是 a[1] 和 a[2] 同减一,如果直接加入a[5]那么a[5]就能加一,但如果加入其他元素,该元素不一定能与其他元素多一次“同减一”,最终a[5]也不一定能加到这个一。对于问题1:假设我们枚举到a[ i ]为目标max,那么我们需要再 a[1] 到 a[i - 1] 进行邻对同减,在a[i + 1] 到 a[n] 进行邻对同减。以某个“1”为右端点的最长长度,

2026-02-17 21:53:52 591

原创 Codeforces Round 1079 (Div. 2) 赛时ABC

我离pupil又进一步。wa一发,re一发,吃吃又爽爽。

2026-02-17 21:20:45 575

原创 Codeforces Round 1080 (Div. 3) 赛时ABCD

元素对面,那么i + 1可选的元素就有4种,但如果我们多考虑一下i + 2就会发现,如果 i + 2 和 i 元素相同或者在 i 对面,那么i + 1依旧可以有4种元素可选,如果 i + 2 和 i 既不相同,也不在对面,那么 i 依旧还有2种元素可以选,因此 i 位置至少有两个元素满足(i - 1 , i) 和 (i , i + 1)都合法。当我们第一次检查到非法对 i 和 i + 1 时,我们改动i + 1,此时i + 1的数不能和 i 的相等也不能在 i。因此我们只需要遍历,检查即可。

2026-02-16 20:23:25 543

原创 区间调度问题,前缀和化简区间和 AtCoder Weekday Contest 0004 Beta Problem D E

给1到n个车位,有m个人要来停车,这m个人都有自己的偏好区间,即第 i 人只会将车停在Li 到 Ri之间的车位,问是否存在一种方式满足m人都能停车。这里涉及到区间调度问题。而我一开始想要按照左端点排序,次之按右端点排序,然后从左向右依次分配递增的车位,然而这是错误的。这里提供一种正确解法:按右端点排序,次之按左端点,然后从左向右依次在现存车位中寻找第一个 >= 左端点的车位,如何合法则分配,不合法则输出NO,最后可输出YES。

2026-02-13 22:17:56 287

原创 日常刷题 codeforces 鸽巢原理

的方法,使得每一对中的两个非法对字符不同,那么答案就是 k / 2,实现最少步数(这里第二次用到了盒子装彩球原理),套用上述结论:如果每种字符的非法对数目 <= k / 2,则一定存在上述的配对方式;否则一定不存在,若不存在则交换的最小步数应该是:非法对的最大值(可以通过分析得到);先从简单情况说起,对于某一个位置 i 存在 s[ i ] == s[n - 1 - i](以下称为非法对),我们可以将其中一个字符与另一个不同的字符交换一次,即可处理掉这一个非法对 -> 一次解决一对。

2026-02-12 13:05:22 376

原创 日常刷题 codeforces

将PII记录每个元素的下标和对应的值,那么对vector中的PII进行排序就可以保留值和下标的绑定关系,我们先将PII按照PII.second(值的大小)进行降序排列,接着取前k个PII按照PII.first(下标)升序排列 -> 还原该k个元素在原数组中的相对前后关系,然后输出第pos个PII.second即可。假设n = 12,d = 4,如果d = 4能合法,意味着字符串矩阵的第1,5,9列有相同的字母,第2,6,10列有相同字母,第3,7,11列有相同字母,第4,8,12列有相同字母。

2026-02-10 22:34:46 633

原创 20260207 abc A - E

本人打的第一场abc,有些遗憾的,本想着A到D手到擒来,结果C没过(最后好不容易想到思路结果因为一个小细节被最后一个样例卡死了,真佩服atcoder的用例)

2026-02-08 01:30:22 514

原创 20260206 codeforces构造题

我原本这么想:先按照大小顺序构造p为 [1, 2 , 3, 4, 5] 先将1,2和3,4交换(因为这两对都是相邻的,交换只影响一对之间的顺序,不影响其他数的顺序),然后1和4就相邻了,可以再交换1,4。因此大致思路就有了:统计数组a中1到n的次数cnt,将出现0次和2次的数分别排序,并记录对应关系,然后按照上述思路填入数组ans1,ans2,并注意:每个出现两次的数都会遇到两次,每次将对应数对填入ans1和ans2的顺序是相反的,做好记录。(如图中填5的空余),因为数组a中1没出现,所以5的空用1来填。

2026-02-07 01:33:15 643

原创 20260205 codeforces构造题

再想让3赢,那么必须要让比3小(此处可能为2或1)的数在第二轮“1”中胜出,吸取前车之鉴,我们让2在此轮胜出,那么就要保证比2小(此处只能为1)的数在第一轮“0”中获胜,这是可行的,因此3有可能赢到最后;假如在第二轮之前的每一轮我们都只用“除了2和某一个比2小的数”以外的数进行比赛,那么在第二轮“0”进行时,一定有至少一个比2小的数胜出。此时如果再想让2赢,那么必须要让比2小(此处只能为1)的数在第二轮“1”的比赛中胜出,显然这是不可能的,因此2不可能赢到最后。对于成员 1 2 3 4,分类讨论。

2026-02-06 03:00:20 493

原创 20260204 codeforces构造题

显然前半句“把前面的数都取反”这一操作太复杂,会TLE,我们可以用更聪明的方法:初始化一个变量cur1 = 1表示“当前1”,比如当我们每次需要取反时,我们让cur1取反即可,整个过程中我们只需要检查当前元素是否 = cur1,而不是当前元素是否是1(物体的运动是相对的)。由题意,目标并集一定是全集的子集,即“少了某几个元素”,我们可以认为:必定有某个元素不在目标并集中,因此我们可以考虑枚举“少了某个元素”的结果并集,并记录并集长度,由于题目保证元素的值 [1 , 50] ,时间复杂度可行。

2026-02-05 11:57:33 516

原创 20260203 codeforces构造题

即使没有在a,b中出现过,如果其后有任何一个d_j是cnta或cntb中出现过的,那么就可以用d_j覆盖掉之前的所有“不该出现的赋值”使得情况合法,否则就是不合法的,即不存在。,例如 2 , 3 , 5 , 8(偶,奇,奇,偶),选取x = 1结果为 1,2,4,7 (奇,偶,偶,奇),奇数不等于偶数,所以永远不可能全部相同。1·从b:b中与a不同的元素必定是从d中修改来的,所以我们要检查b中出现的每一个数的次数必须都不大于d中对应的次数,一旦出现则判断不可能。

2026-02-04 00:48:15 502

空空如也

空空如也

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

TA关注的人

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