coedforce #441 Div2不详细解题报告

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了coedforce #441 Div2不详细解题报告相关的知识,希望对你有一定的参考价值。

A: 每次必然选择相邻边中较短的一条,证明如下:
设当前在1号点,1->2 = a, 1->3 = b, 2->3 = c
假设 a < b 按照选择较短的策略
此时如果选择走a, 那么接下来到达2,应当选择Min(a, c)
此时如果不按照策略走b, 那么接下来到达2, 应当选择Min(b, c)
因为 a < b 所以 a + Min(a, c) < b + Min(b, c)
所以只要暴力走较短的边累计答案就可以了

B: 对于任意一组合法解,所有数都是在%m意义下同余的,证明如下:
a0, a1, a2属于一组合法解中
(a1 - a0) % m == (a2 - a0) % m
(a1 - a0) % m - (a2 - a0) % m == 0
(a1 - a0 - a2 + a0) % m == 0
(a1 - a2) % m == 0
a1 % m == a2 % m
所以只要%m的值开桶,并用vector记录方案就可以了

C: n == x + (x的各位之和)
x很大,直接枚举x并判断超时,但x的各位之和 <= 99
所以枚举x的各位之和, 判断 (n - 枚举的和) 分解后是否 == 枚举的和即可

D: 本质是求冒泡排序的扫描次数
考虑这样一种情况 xoxoxo..(后面都是o)
发现这样的扫描次数是等于x的个数
但是 xoxoo(若干个x)x这样一种情况
显然已经出击右边界的x不需要再比较
所以要减去触及右边界的x的个数
解法1:维护并查集每一次修改,将P[i]和P[i+1]合并,并维护size, 复杂度O(nlogn)
解法2: 考虑触及右边界的x的个数单调不降,维护最左边的触及边界的x的指针,复杂度O(n)

E: 考虑相邻的书的第一个不同位上的字母之间有选了就要选,和不能同时选两种关系,于是就可以开开心心各种乱搞了

F:记录每一个二进制位左边第一个,和右边第一个出现的第一个,然后分治处理每一个区间,rmq找最大值,并算出合法的左右边界

以上是关于coedforce #441 Div2不详细解题报告的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #599 Div2解题报告A-D

解题报告CF DIV2 #ROUND 721 A~C

解题报告CF DIV2 #ROUND 723 A~D

leetcode441. 排列硬币

LeetCode 441 排列硬币[数学] HERODING的LeetCode之路

codeforces #296 div2 (527C) STL中set的运用