首页 > 其他分享 >CF1927 A~G

CF1927 A~G

时间:2024-02-07 17:11:23浏览次数:26  
标签:发现 le CF1927 link 数组 加边

A

link

找最左边和最右边的'B'即可,注意找不到时的处理。

B

link

用 \(26\) 个桶记录一下每一个字母出现的次数,不断找合法字母即可,时间复杂度 \(O(26n)\)。

C

link

明显的贪心,记录一下每个数字在哪个数组中出现过,统计一下每个数组有多少只在自己数组出现的数,如果这个数超过 \(k\) 或有数不在两个数组中出现过,则代表无解,否则一定有解。

读者自证不难。

D

link

经典套路,维护一下每个数后面第一个和它不一样的数即可,这可以从后向前递推得到。

E

link

考虑一个长为 \(k\) 个窗口,如果将其往后滑动一格,可以发现 \(a_1+a_2+\ldots+a_k\rightarrow a_2+a_3+a\ldots+a_{k+1}\),将两者作差发现 \(\operatorname{delta}=a_{k+1}-a_1\),根据题意,\(|a_{k+1}-a_1|\le 1\)。同理,继续往后移,发现 \(|a_{k+2}-a_2|\le 1\)。继续综合题目的限制,有 \(|a_{k+1}+a_{k+2}-a_1-a_2|/le 1\),因为不存在 \(a_{k+1}=a_1\),所以 \(a_{k+1}-a_1=1/-1\),综合这三个式子:

  • \(a_{k+1}-a_1=1/-1\)

  • \(a_{k+2}-a_2=1/-1\)

  • \(|(a_{k+1}-a_1)+(a_{k+2}-a_2)|/le 1\)

发现 \(a_{k+1}-a_1+a_{k+2}-a_2=0\),因此两者一定一个为 \(1\),一个为 \(-1\)。

根据数学归纳法,发现若 \(a_{k+x}-a_x=1\),则 \(a_{k+x+1}-a_{x+1}=-1\),于是我们可以按照如下方法构造:

令 \(a_1=n,a_2=1\),则 \(a_{k+1}=n-1,a),a_{k+2}=2\),依次类推,每次往后跳 \(k\) 步,直到跳出去。

具体可以看代码实现。

F

link

利用生成树的思想,从大到小往里面加边,如果发现成环,则更新最小答案(加边顺序使得新答案一定小于原来),即为答案。

至于寻找简单环,可以利用 dfs 来找环,注意实现的细节,一定要加上记忆化的技巧。

G

标签:发现,le,CF1927,link,数组,加边
From: https://www.cnblogs.com/BYR-KKK/p/18011088

相关文章