Codeforces Round 949-(Div.2)B题题解 B. Turtle and an Infinite Sequence 题意 有一个无限长的序列 。初始: 每过一秒,序列中的每个元素都会同时发生变化,具体变化为:每一个变化为(特别地,变化为) 问:秒后的值 解题思路 不难发现,秒后(其中) 而求解到的或和,我们按位枚举二进制位,累加该二进制位对答案的贡献值,即为。 具体来说: 若区间[l,r]存在有二进制位为的数,则其对答 2024-05-31 codeforces #codeforces
Atcoder352(D-E)题解 D - Permutation Subsequence 题意 给你一个到的排列,找到一个长为的子序列,满足子序列中元素重排后构成公差为的等差数列,求子序列的最小跨度。 解题思路 首先我们可以开一个pos数组记录中每一个数的位置,由此问题转换求 解决方案一:式子中关键部分:求出一个区间值,这可以用来快速解决此题,时间复杂度为 解决方案二:由于区间长度是固定的,我们可以用动态维护一个 2024-05-07 Atcoder Beginner Contest #Atcoder
Atcoder351(D-F)题解 D - Grid and Magnet 题意 有一个用字符类型表示的 行 列的地图 ,如果是字符 . 则代表这一格是空地,如果是 # 则代表这一格上有一个磁铁。现在身着铁甲的高桥从一个格子上出发,每次可以到达与之相邻(上、下、左、右)的四个格子,但如果有一个磁铁与之相邻(上下左右的四个格子中至少有一个磁铁)他就不能动了。求高桥从某一格出发,经过任意多次运动,可以到达的格子的最大数量 2024-05-01 Atcoder Beginner Contest #Atcoder
Codeforces-Global-Round-25 C. Ticket Hoarding 题意 给定一个长度为 的正整数数组 ,求一个正整数数组 在满足=k的条件下,求的最小值。 解题思路 将上述式子进行变形: 故要使上式值最小,则应使尽可能的大,而要使尽可能的大, 等价于:较小的尽可能匹配较大的,较大的尽可能匹配较小的 由此可通过将进行排序(从小到大),将的前项置,第项置,后面全置,可得到最优解 解题代码 123456 2024-04-22 codeforces
codeforces(1200-1600训练2) Hamon Odyssey 题意 给定一个长度为的数组,请你将数组划分为若干连续的段,要求每一段的逻辑与的结果之和最小,问最多划分为多少段 解题思路 根据位与性质:连续位与操作只会让结果不变或变小 由此我们可以得出结论:每一段的逻辑与的结果之和的最小值=将整个数组相与的结果 若这个最小值大于,则最多划分成段(因为如果划分成多个段必然会使结果变大) 若这个最小值等于,可以采取贪心 2023-11-24 codeforces #codeforces
kmp 算法 求解给定一个模式串和一个主串,求模式串在主串中出现的位置(字符串的下标均从1开始) 算法思路 取最长的相等前后缀,可以保证不漏解 通过模式串前后缀的自我匹配的长度,计算函数,给指针打一张表,失配时就跳到的位置继续匹配 函数:表示模式串中相等前后缀的最长长度 如何计算函数 双指针:扫描模式串,扫描前缀 初始化: 若,让回跳能匹配的位置,如果找不 2023-11-09 基础算法 #kmp
双指针 1.双指针理论部分 双指针是一个常用的优化技巧,是一种通过设置两个指针不断进行单向移动用来解决序列的区间问题 两个指针,有两种扫描方向: 同向扫描(快慢指针):方向相同,都从头到尾,一个走的慢,一个走快 反向扫描:方向相反,一个从头到尾,一个从尾到头,在中间相会 双指针的核心:找单调关系:和的之间关系 (1)如何判断一个题目是否可以用双指针来解 因为双指针算法是一种优化时 2023-11-09 基础算法 #双指针
codeforces(1200-1600训练1) Consecutive Points Segment 题意 在 轴上给出 个横坐标,每个点可以变为,,,问该序列最后是否可以变为一个接续序列 解题思路 对于一段接续的点要保证其连续性,就必须将这段接续的点作为一个整体全部向左移动一格或向右移动一格 因此,在轴可以划分出若干条线段(各线段中间以空隙点将线段隔开),并且最左侧线段最多只能右移一格,不能左移,最多能使空隙点数量减一,最右侧线 2023-10-21 codeforces #codeforces