- 博客(26)
- 收藏
- 关注
原创 Codeforces Round 1000 (Div. 2) B and C
题意:给定一个数组 可以选择任意个元素 后对这些元素进行排序 问你给定一个区间 这个区间的最小值算法:贪心思路:下标1到r的最小个(r-l+1)元素 或者 下标l到n的最小个(r-l+1)元素。
2025-01-22 23:09:01
436
原创 Codeforces Round 998 (Div. 3) C~E
题意:一个数组alice和bob依次选数,若他们选的数的和为k则得分+1,alice想最小化得分,bob最大得分算法:模拟思路:最终的数对是由bob决定的alice的决定并不影响结果,统计数组中相加为k的数对即可。
2025-01-20 01:06:19
666
原创 Educational Codeforces Round 165 (Rated for Div. 2) D. Shop Game
思路:alice先把所有商店价格低于alice价格的都买掉,然后bob从中选择k个alice价格最贵的,然后alice每次少买商店价格最大的一个若少买的这一个为bob选择的则从剩下的再选一个最贵的,若不是bob已经选择的则bob的花费将该物品的alice减去。
2025-01-18 18:22:14
160
原创 Codeforces Round 997 (Div. 2) A~C
D题和BC题的难度差距太大了,手速场,但偏偏手速场没了手速还爆了罚时本文章只做思路分享,并非完全正确如果有什么不对的请指出。
2025-01-18 13:29:40
437
原创 Educational Codeforces Round 167 (Rated for Div. 2) D. Smithing Skill
题意:n个武器和m种锻造锭,每个武器 每次锻造花费a[i]个锭 熔断获得b[i]个锭,锻造和熔断都能获得1点经验,所以锻造并熔断是获得经验的最好做法,m种锭,每个锭有 c[i]个,问你能获得的最大经验值。算法:动态规划 预处理。
2025-01-16 16:30:06
157
原创 Codeforces Round 996 (Div. 2) B~D
思路:先求出当前每行每列的元素和,然后从起点1,1开始为每个位置赋值,若当前位置往下走也就是为D的时候,上一行的总和也就确认了,若当前位置往右走也就是为R的时候,左一行的总和也就确认了,S为每行的总和,因为我们需要 S⋅n=S⋅m S⋅n=S⋅m ,而由于 n≠m ,所以 S=0 ,如果当前为往下则当前位置的值也就是这一行的负总和,从而使得当前行为0,列同理。若到最后一个稻草人还未到达终点,则需要终点减当前位置个时间单位。
2025-01-13 01:24:27
914
1
原创 Educational Codeforces Round 173 (Rated for Div. 2) A~D
算法:模拟 枚举思路:记录当前每个硬币大小 当每个硬币大小大于3时候 将硬币个数翻倍 再将每个硬币大小除以四 枚举直到硬币大小小于3时 输出硬币个数。
2024-12-25 09:39:21
535
原创 “可达鸭编程杯“山东大学程序设计挑战赛决赛题解(A,B,C,H,J)
算法:模拟思路:把所有相同字符放在一起,回文子串最多,且每个回文子串的贡献是从1加到该字符的个数。
2024-12-08 20:00:44
584
1
原创 Educational Codeforces Round 169 (Rated for Div. 2) D. Colored Portals
②起点和终点各不相同,起点和终点之间的点有一点可以作为中间节点,也就是说起点和终点的四个传送门皆不相同,但起点和终点之间有一对传送门组合 和起点不同 和终点也不同,例如起点是12 终点是34 则中间节点可以是13 14 23 24的任意组合 只要不是12 或者34则可以通过中间节点传送,这样花费也是终点减去起点的绝对值R-L。通过二分查找,找出终点后或起点前的最近的结点可以作为中转节点,也就是同时和起点和终点的组合不同的传送门组,并且与起点或者终点最近的点。
2024-11-30 15:08:23
316
原创 Educational Codeforces Round 171 (Rated for Div. 2) C. Action Figures
思路:因为位置为0的地方是没有办法免费的,所以为0的点必须购买,所以当我们从后往前遍历的时候,遇到0时候直接购买,遇到1的时候找当前位置前一个0,并将这个位置的0改为-1,下次遇到的时候就跳过,如果当前1位置前面没有0了,则从第一个位置往后以此购买。
2024-11-16 12:34:33
290
1
原创 2024 年第六届码蹄杯全国大学生程序设计大赛 本科组决赛 2 4 7题
算法:组合数学思路:考虑三种情况第一种情况是一个中心点连着三个点,先枚举点,枚举点的连接点的个数,组合数学C(点的个数,3) 从连接个数中选3个有多少种选法。第二种情况是三个点互相连接的三角形,先枚举边,统计左右两个端点相同的连接点.
2024-07-27 18:30:35
729
原创 2024 CCPC 全国邀请赛(山东)暨山东省大学生程序设计竞赛题解 A C F I K
思路:将除了所有和之外的所有数的后缀和 加入优先队列 然后每次从后缀和中取出一个最大的数 即在当前位置前加入一个挡板将其划分出一块 当前挡板之后的每个数都多一倍 所以答案更新 加上当前位置的后缀和 每次取最大的数 这样可以保证答案是最优的。思路:构造第一行为1~n的数 第一列除了最后一个 和第一个 为n+1 ~ 2n-2 然后最后一行的第二个和第三个为2n-1 和 2n 然后最后一行剩下的数 复制第一行同等位置的数 剩下的位置都为一 即可。需要特判2的情况 遇到2 输出 1 2 3 4。
2024-05-26 20:52:10
1756
原创 Codeforces Round 946 (Div. 3) A~E G
思路:单独存下第12个数相同的个数 23个数相同的个数 13个数相同的个数 123都相同的个数 每次加上每两个为相同的数的个数 然后减去三个数都相同的 因为如果三个数都相同了 前三种也都符合了 所以减去相同的时候 就得减去三倍。思路:一个屏幕可以放下两个2x2的应用 所以我们先把2x2的应用先放下 看一下需要几个屏幕 然后把这些屏幕的剩余空间计算出来 放1x1的应用。思路:因为更换前后的数在排序去重后没有变化 所以将更新之后的数放进vector里排序去重 再找到一一对应的关系 从而还原字符串。
2024-05-21 09:03:04
1219
原创 Educational Codeforces Round 154 (Rated for Div. 2) D - Sorting By Multiplication
思路:我们要操作数组变成递增的数据 因为你可以选择负数 所以我们可以让前x个数变成负的 后n-x个数为正的 我们先把每两个数之间的大小关系记录一下 数组d 1为我小于我后面的数 -1为我大于我后面的数 0为相同 循环枚举x为 1到n 因为我把前x个数变成负数最低需要操作一次 所以now先+1 然后每次遇到递减的也就是-1 我们就可以少操作一次 如果每次遇到1我们就得多操作一次 由于我们一开始的ans是把所有相邻相同的数也多操作一次 所以我们如果x的右边的数和x相同 我们就可以少操作一次。
2024-05-20 13:42:55
240
原创 Educational Codeforces Round 92 (Rated for Div. 2) B. Array Walk
思路:因为不能连续后退 所以我们后退一次就得再回去 z的数据范围最大为5 所以我们可以直接暴力 从1+1到1+k的每一个位置往前1~z次 找出最大的ans值 我们可以通过前缀和来记录走到当前位置的ans加上来回踱步的答案 注意判断越界和我往前n次之后能否走到那个位置。
2024-05-12 16:22:35
400
1
原创 Educational Codeforces Round 96 (Rated for Div. 2) D. String Deletion
【代码】Educational Codeforces Round 96 (Rated for Div. 2) D. String Deletion。
2024-05-05 17:37:58
194
3
原创 Educational Codeforces Round 128 (Rated for Div. 2) C. Binary String
思路:预处理前缀1的个数和0的个数 首先二分我的最小成本是多少 从0到n进行二分 检查当前成本能否完成任务 设置两个指针 l和r 代表我要保留的区间 左指针从1到n的起点枚举 右指针从0开始往右跑 当窗口内我保留的0的个数小于我能解决的最小成本时 r++ 更新一下当前的成本值为窗口外1的个数 取一个最小值 当我成本小于mid时 符合条件。算法:二分 前缀和 双指针 滑动窗口。
2024-05-04 16:43:11
332
1
原创 Codeforces Round 943 (Div. 3) B~E
思路:一个l指针指向a字符串的第一个字母 r指针指向b的第一个字母,若l和r指向的字母相同 则双指针往后移动 并更新ans值为l指针 若l和r不相同 则移动r指针至第一个可以和l指针匹配的位置 直到l或者r指针跑到n或m。思路:看数据范围可以得知 取模后的值最多为500 所以即使500个500 也远远小于1e9 所以可以大胆的 从后往前跑 从1e9开始 每次减去要取模的值 肯定符合条件。思路:一种验证可行的构造方法 为第一行的前n-2个单元格和最后一行的第二个和最后一个。PS:赛时没想出来 寄。
2024-05-03 11:45:26
1360
1
原创 Educational Codeforces Round 100 (Rated for Div. 2) C. Busy Robot
思路:遍历 先判断当前操作执不执行 若执行 则更新走之前的时间和地点 和 走之后的时间和地点 若我走到头都下一个指令都不到 即当前指令有效 当前指令若不执行 则判断上次有效指令走之前的时间当前时间能走到什么位置 和下一次指令的开始时间能走到哪 若当前的目标位置为这个范围之内 则当前指令有效。
2024-05-02 22:23:10
272
1
原创 Educational Codeforces Round 99 (Rated for Div. 2) D. Sequence and Swaps
思路:给定的x从第一个开始交换 遇到第一个比它自己x大的数就交换 因为数据范围是500 每次交换都可以检查一下是否程递增 如果是 则输出当前换的个数 如果跑完还没有符合 那就输出-1。
2024-05-02 15:46:57
507
2
原创 Educational Codeforces Round 162 (Rated for Div. 2) D. Slimes
可能会出错的特殊样例:Case:41132 1 152 2 2 2 251 1 1 2 2Answer:-1-1 1 2-1 -1 -1 -1 -13 2 1 -1 2
2024-04-28 17:21:11
331
原创 Educational Codeforces Round 158 (Rated for Div. 2) D. Yet Another Monster Fight
【代码】Educational Codeforces Round 158 (Rated for Div. 2) D. Yet Another Monster Fight。
2024-04-28 15:29:42
316
原创 Codeforces Round 938 (Div. 3) C~F
思路:先开一个map记录一下b数组的数 假设b的数组位数为 m 使用双指针先指向 1 和 m 将 1 到 m 之间的数加入map2判断一下map里是否存在该数 若存在 则cnt++ 每次移动右指针 将新的数加入mp2 判断新数是否存在 判断左指针的数是否存在mp 若存在则 cnt-- 每次记录一下cnt是否>=k ans++题意:给定一个a数组和b数组 选出b数组位数个a数组的连续数组组成一个新数组 然后重新排序后对b进行匹配 要使相同的个数尽可能的多 至少为k个的 连续子段的数量。算法:双指针 map。
2024-04-09 09:27:21
1120
原创 Educational Codeforces Round 120 (Rated for Div. 2) C. Set or Decrease
我们目前的操作次数为m 我们可以遍历后m个数(如果m>=n则 先让最小的数mix减去m-n+1 然后操作次数m变成n-1 )每次循环让变成最小数的个数往后推一个 但是相应的 我们可以对最小数自减的次数多了 每次让最小的数min进行自减 每次记录一下当前的贡献 并取一个最大值 当所有数的总和减去当前操作次数下的最大贡献 即当前操作次数下的最小数组和 如果最小数组和=n则 先让最小的数mix减去m-n+1 然后操作次数m变成n-1。题意简介:给定一个数组n个数 a1到an 和一个 k。
2024-04-04 21:30:12
469
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人