算法竞赛
🧠Codeforces Round 859 (Div. 4) 总结
00 分钟
2023-4-24
2023-11-23
type
status
date
slug
summary
tags
category
icon
password
Email
文章首发于我的个人博客:欢迎大佬们来逛逛
 

A

直接 + 或者 - 模拟即可。

B

分别计算偶数的总和奇数的总和,然后比较偶数的和是否严格大于奇数的和即可。

C

题目要求把由 26 个字母组成的字符串转换为 01 串,要求统一个字母对应的 0或者1的情况是唯一的。
也就是说如果字母a第一次出现,并且对应一个0或者1,则后面所有的a都是与之对应的。
利用哈希表可以维护某个字母对应的0或者1 ,也可以使用array<int,26>来模拟。
并且维护一个随着每个位置变换的pre,每次pre^=1,并且把这个pre映射到当前字母所在的哈希表中,如果往后到某个字符出现在哈希表中,但是其对应的字母却与pre不一致,则说明一定无法构成01串。

D

题目要求是有几个询问,然后给出 l,r,num,让我们把[l,r]的数字都改为num,然后计算整个序列中所有元素之和。
利用前缀和presum维护即可。
则每次的更新就是 di

E

交互题,直接跳过

F

题目要求:一个小球在地图上移动,每次碰到墙壁都会反弹,每次碰到角落都会逆着往回走,给定一个终点,询问经过几次碰撞可以到达这个终点。
小球一共可以移动 4*n*m 个状态 ,因此我们建立一个这样的数组,并且对方向进行一个合适的判断,例如我们分别设:DL UL DR UR 为 0,1,2,3
这样我们就可以方便的进行如下的更新:
  • 四个边界的判定,记录碰壁的次数。
  • 移动的过程中小球的位置更新。
并且每次移动我们都记录这个位置的状态被保存过,如果第二次访问过了这个状态,则说明是回路。
如果我们到达了终点,则输出碰壁的次数。

G1, G2

题目要求:给你一个目标数组,问你是否能只通过一个原始{1} a数组来合成,合成的原因是a数组的子序列和可以作为新的元素插入。
我们给目标数组进行排序,如果它的某位置元素大于这个位置之前的所有元素之和,则表示这个元素无论如何也不可能得到,它后面的元素更不要说了。
因此排序后记录前缀和然后依次比较即可。
 

评论
  • Twikoo
  • Valine