题解 CF1554D Diane

上大分的计划失败了。D 没有做出来。

这场吹爆啊!!!都是只有语言基础就可以做的思维题!!!赶紧加 favorites!

先放样例彩蛋图。
题解 CF1554D Diane

构造长度为 \(n\) 的小写字母组成的字符串,使任意一个子串都出现奇数次。

开始想着若干个叠着总会出现偶数个,于是就去想奇奇怪怪的做法,比如 aaba 的重复。但这样的重复总是会使某个串出现偶数次,然后就没辙了。

其实开始想到的反而更接近正解。aaa 这样一段,让 aa 出现了偶数次,但如果再在后面补一个 aa,中间用什么分隔符隔开,就满足条件了。仔细观察这样的补,aaaaaaaaa 出现了两次,而在后面补个 aaaa,不仅 aaaa 满足了,同时 aa 的四次出现也被满足了。

容易发现,前面块和后面一块重复个数相差 \(1\)总是满足条件的,因为一个连续串在前面和后面重复出现的奇偶性肯定不同,和肯定是奇数,而其它子串都只出现了 \(1\) 次。所以满足条件。

代码就这。

#include <iostream>
#include <string>
int T, n;
int main() {
    std::cin >> T;
    while (T--) {
        std::cin >> n;
        std::string ans(n, ‘a‘);
        ans[n/2] = ‘b‘;
        if (n & 1) ans[n/2+1] = ‘c‘;
        std::cout << ans << ‘\n‘;
    }
}

题解 CF1554D Diane

上一篇:原子性


下一篇:基于Redisson实现分布式锁源码解读