- 博客(83)
- 收藏
- 关注
原创 Codeforces Round 1009 (Div. 3) G
由于最近在做CSP-S的题,又恰好做到了CSP-S 2021的第二题括号序列,于是对于区间DP有了一些船新的体悟,刚好可以用在此题上。
2025-03-12 16:16:40
1032
原创 Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)(A~E1)
给定一个01串s,你一次操作能取非空子序列t,满足t是01交替的,你一次操作可以将这些字符全部反转。求最终组成全0串的最小操作数。
2025-01-27 01:18:28
552
原创 Codeforces Round 966 (Div. 3) H(线段树上二分)
1、定义Fx代表了正整数x所代表的集合负载,例如对于集合34611而言,F51F742、可以发现:对于集合中相邻两个数之间的数字,其Fx是递减的,例如上述例子中F74F83F92F1013、对于一个询问?而言,我们需要找到的是x的最小值,满足k≤Fx4、由于观察2,对于集合中相邻两个数之间的数字而言,若最左侧的kFx,那么这个区间内所有的数都无法满足,因此我们只需要记录所有区间的最左侧数即可。5、为了表示集合中最小的数左侧的。
2024-08-14 02:16:15
1082
4
原创 Codeforces Round 961 (Div. 2)(A~D)
因此我们对于每一个位置,只需要将最大的那个集合设为不可选,然后最终将大集合中的所有小集合同步更新即可。枚金币买尽可能多的价格少的那一种花,然后再用剩下的钱买尽可能多的价格多的那一种花。因此我们只需要从后往前遍历所有位置,然后统计哪些集合是没法选的,最终在剩下的集合中选一个所含字母最少的即可。,接下来我们只需要求最多可以执行多少次这样的操作即可,然后便可以求出最大的花瓣数。然后,我们可以通过放弃价格少的一种花,再购买价格多的那一种花,使得所得到的花瓣加。贪心,先将占有单元格最多的对角线填满,然后依次往下填。
2024-07-24 13:02:49
1604
2
原创 Codeforces Round 954 (Div. 3) (A~F)(不会数学)
暴力枚举一下所有可能可以观察到:若一个数比周围四个数都大,那么最终会变成四个数当中最大的哪一个。对字符串c以及ind数组进行排序,通过贪心可以知道,我们需要按照索引从小到大的修改字符串,同时一个位置只会有一个字母与之对应,因此只需要同时按照字符串c从小到大修改即可。归纳题,观察后可以发现:一定有一个两位数,因此我们可以枚举这个两位数,然后取最小值。接下来考虑如何取最小值:若存在数字0,那么可以通过都用乘法来将最终结果变成0,此外,若存在数字1,可以通过乘法将1消掉。
2024-06-24 01:03:47
2394
原创 Codeforces Round 953 (Div. 2) (A~F)(冒充Div2)
思路:很经典的将区间操作转化成端点操作,首先考虑全部修改,然后可以发现对比于区间修改而言,只有区间最靠左的两个数跟区间最靠右的两个数可能会不一样,因此只需要关注区间的左右四个点即可,若区间长度小于4的我们直接特判。思路:分类讨论,首先若后面的选举人存在比当前选举人票数多的情况,那么必然是将前面所有的人全部排除,然后再看票数是否大于后面最大的票,若还是小,则将后面票数最多的人也排除掉。的图,所有的斜率为-1的线上所有的顶点全部连通(1除外,需要特判)。总上,我们需要统计的是,删去前。个人的票小于他的最小。
2024-06-16 23:23:46
1757
5
原创 篮球杯小白+强者
思维题,注意到完全平方数的约数是奇数个,其余都是偶数个。贪心:用尽可能多的质数来构造这个数。注意到无论怎么改变,这两个数的差值不会变,因此考虑到差值的每个约数能否满足题意,记录最小值即可。计数问题,对于每次询问,大于k的数全部可以选或者不选,而小于k的数至少选一个,然后可以预处理出所有的MEX取值情况,最后输出即可。首先发现排序后没影响,因此先排个序,然后发现若要使得 l - f 最小,必然选取的是前y个数和后m-y个数。构建关于y的函数,发现这是一个有波谷的函数,因此考虑三分求波谷即可。
2024-06-16 00:05:14
499
原创 SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)(A~F)(最爱线段树的一集)
题意:模拟。
2024-06-08 21:43:26
716
原创 Codeforces Round 951 (Div. 2) C、D(构造、线段树)
构造题:观察到k范围很小,首先考虑最终硬币总数可以是多少,我们可以先假设最终的硬币总数为所有k取值的最小公倍数,这样只需要满足每个结果添加1枚硬币即可赚到硬币。
2024-06-07 00:34:32
657
原创 Codeforces Round 950 (Div. 3)G(字典树)
因此我们需要进行奇偶分类,可以发现,到顶点为奇数的各个顶点,两两之间的距离都是偶数,同样,到顶点距离为偶数的各个顶点,两两之间的距离也是偶数。因此我们对深度奇偶进行一个分类,构建两棵字典树,然后每次询问分别求最值。还需要注意的是不能自己和自己异或。由于第一类查询的存在,对于第二种询问而言,其路径需要异或。思路:先有前置知识:对于一颗有根树而言,两个顶点的路径异或为。若没有第一种询问,很显然的是一个简单的异或最大值,其答案就是。,因此若两点距离为奇数,那么其路径异或为。是所有第一类询问的异或。
2024-06-04 02:05:35
567
原创 Educational Codeforces Round 166 (Rated for Div. 2) (C、D)
题意:思路:考虑求出如果多一个程序员,那么整个序列该怎么选,多一个测试员,整个序列该怎么选。那么若第个人原先是程序员,那么他不来面试以后后面的所有人选择情况就是多一个程序员的情况。同理,若第个人原先是测试员,那么他不来面试以后后面所有人选择情况就是多一个测试员的选择情况。然后考虑用前缀和来快速求解。
2024-05-31 00:46:10
1367
7
原创 Codeforces Round 941 (Div. 2) (A~D)
然后考虑若此时存在两个堆,那么对于Alice而言,其操作可以使得小的那个堆只剩下1,下一步Bob必须选1,然后Alice就胜利了。相反,若小的那个堆一开始就是1,那么Alice就输了。接下来推广到若干堆的情况:对于任意一方而言,若最小堆不是1,那么便可以控制胜利,于是我们只需要枚举到最小堆不是1的情况即可,然后看是谁在操作就是谁赢。思路:若要使得所有方格同色,关键在于四个角上的颜色,若对角上的颜色一样就能直接将所有格子变为同色。思路:首先处理 < k 的部分,我们可以通过二进制的思想来构造整数,例如。
2024-04-28 00:34:31
1122
原创 Codeforces Round 940 (Div. 2) and CodeCraft-23 (A~E 最喜欢打表的一集)
题意:给若干根长度不一的棍子,求能够组成的正多边形的最大个数。要求每个边只能用一个棍子。思路:贪心,3个长度一样的棍子凑成一个正多边形,然后统计个数。
2024-04-22 01:03:42
3014
24
原创 Codeforces Round 937 (Div. 4)(D~G)
题意:思路:观察到n的范围很小,先求出所有可能的二进制十位数,然后dp把所有可能的值求出来。注意不能用求因子的方法来求解,因为这些二进制十位数不一定是素数,先除某个数可能会影响整体的分解。(此题数据不大可以忽略)
2024-03-29 09:27:43
992
原创 Codeforces Round #936 (Div. 2)B~D
4、若x的某一位是0,那么如果我们也要将其最终结果为0,同样需要满足每个区间内的个数为偶数,隔板的可能位置被限制。3、若x的某一位是1,那么如果我们将最终结果这一位变成0,那么此后的所有位都不需要讨论了,这一轮的可选位置即是最大方案数。1、比x的最高位还要高的位数,每个区间内的个数必须为偶数,如若不能满足直接输出-1,也就是说隔板的可选位置会被限制。可以想到,每次都将最大连续子序列放到该子序列的最后,也就是每一轮都能将最大连续子序列倍增一次填到数组中,最终求结果。思路:首先异或问题想到拆位去处理。
2024-03-23 03:12:24
777
1
原创 Codeforces Round 935 (Div. 3) (A~G)
题意:三种人安排住宿,a只能跟自己住,b只能三个人住,c能1~3个人,问最终最少房间数思路:a单独安排,b放一起,不足三个人的用c补,然后c按照3人一房间尽可能分配题意:装置A每a分钟放一次烟花,装置B每b分钟放一次烟花,烟花能存在m分钟,求空中同时存在最多多少烟花.思路:两只烟花必然能同时放,然后再看接下来m分钟能放多少只烟花,这样必然最优题意:给定01串,要求从中间某个位置分开,其中左侧0的数量大于等于1的数量,右侧1的数量大于等于0的数量,求满足条件的最靠近中心的位置。思路:直接模拟。
2024-03-20 09:45:40
1346
3
原创 Codeforces Round 929 (Div. 3)(F)
分析:注意到终点那一列是必定没有障碍物的,因此考虑走到终点那一列即可。可以发现:由于障碍物会循环上移,因此对于自身而言,循环向上走等于没走(障碍物相对位置不变)。因此循环向上走只会在最后一列出现。接下来仅考虑向下走和向右走,就是一个普通的bfs了(注意判断一下障碍物)。最后再将最后一列到终点的时间加上去即可取最小值即可。题意:题目很长,大致意思是一个有障碍物的迷宫,要求从起点走到终点,且单位时间障碍物会循环上移一格。你能够向右或者循环向下或者循环向上走。
2024-02-28 08:17:13
647
2
原创 AtCoder ABC 336(A~F)
二分求长度,从头开始遍历,然后判断能否形成这个好序列,首先从头到尾尽可能的组成一组好序列,若到某个数时无法和前面的数组成好序列,那就将这个数变成新序列的第。找出由0 , 2 , 4 , 6 , 8 组成的第x大数,模拟(注意一开始不能取0 , 因此其实是一个开头为4,其余都是5的进制数)。的好序列,现给定一组数组,你可以选中其子序列,同时将其中的数减去若干,组成一组好序列。求好序列的最大长度。最终答案加上第N的位数位,总和为钦定的位数和,余数为0,状态为0或者1的总数。为这个数的值,这样做必然是最优的。
2024-01-19 16:10:50
558
原创 Educational Codeforces Round 161 (Rated for Div. 2)(A~E)
被教育咯题意:思路:读题读了半天..可以发现,若对于第位而言,,那么c就一定与模板匹配。否则模板只需要取大写的即可。因此若所有的,都有,那么就不能构造,否则一定可以构造出模板。
2024-01-19 01:25:40
752
原创 第 3 场 小白入门赛(1~6) + 第 3 场 强者挑战赛 (1 ~ 5)
第 3 场 小白入门赛1、厉不厉害你坤哥(暴力)2、思维3、暴力,前缀和,贪心4、二分5、DP6、容斥,双指针第 3 场 强者挑战赛2、BFS5、树上倍增求第k祖先题意:可以发现,如果我们钦定练习生,那么舞力值的。因此对于而言,需要知道前的最大值跟后的最大值。可以通过数组来存前缀最大跟后缀最大。然后遍历每个即可。
2024-01-14 00:11:06
940
原创 Hello 2024(A~D,F1F2)
思路:可以发现:同一个父亲的两个叶子结点的权值只差了1,且两个叶子结点中小的那个就是父节点的权值.也就是说,dfs序中若相邻两个数差了1,那么这两个数就是同一个父亲结点的。题意:先有一颗未知的完整二叉树,非叶子结点的两条与子节点相连的边权一个为0,另一个为1.如今给出了根据dfs序的叶子结点的权值序列,求能否还原出一颗完整二叉树.定义结点的权值为该节点到根节点的边权之和.思路:可以想到,由于无法改变相对顺序,我们需要从前往后的插入元素.而每一部分的最后一个元素值应当越大越好。思路:奇偶讨论即可。
2024-01-07 01:42:41
935
原创 Codeforces Round 918 (Div. 4)(AK)
A、模拟B、模拟C、模拟D、模拟E、思维,前缀和F、思维、逆序对G、最短路
2023-12-29 01:01:56
3617
2
原创 第 1 场 算法季度赛 蓝桥&搜狐畅游(1~5 , 7)
1、水题2、树上dp3、模拟4、概率5、拆位6、(是没学过的东西了...)7、组合数学直接模拟。
2023-12-28 00:49:56
1069
原创 Codeforces Round 917 (Div. 2)(A~D)(又是数学题)
可以发现:对于同一个开头字母而言,前面位置删除后所能形成的字符串必然涵盖了后面位置开头所形成的字符串,因此不需要遍历所有字符,只需要遍历所有字母即可。思路:由于只能删除前两个数,因此可以考虑固定字符串开头,然后每次删除第二个数就会多形成一个空字符串。而什么情况下会使得总得分更高,即连续使用操作1之后,初始数组得分变的更高了。由此可以发现,对于全是0的数组而言,只需要前一天选择操作1,让。之间的数而言,也是同样的考虑方式,如此不断除以二直到下限为止。之间的逆序对而言,只需要对q数组求一次逆序对即可。
2023-12-25 01:05:07
1914
5
原创 Codeforces Round 915 (Div. 2)(A~C)
坐牢一个半小时...D、E待补(太菜了,做的题还是太少了)思路:手画一下发现:n个城市最多能重建n * n 的城市,所以n * m 需要重建max(n , m)个城市。
2023-12-17 00:34:56
456
原创 蓝桥杯第一场强者挑战赛(C)SOSdp
之前在cf上面接触过SOSdp(子集dp),这里就碰到了。不需要进位,也就是不存在同一位上面都是1。中为1的地方,其他数不能为1,也就是说其对答案的贡献为。需要进位的话,那么就无法满足题意,因此条件弱化为。思路: 异或运算即非进位加法运算,因此如果。
2023-12-12 23:17:10
232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人