某岛

… : "…アッカリ~ン . .. . " .. .
August 28, 2021

Codeforces Round #741

传送门

https://codeforces.com/contest/1562

靠字符串题涨了点分 > <、

Problem B. Scenes From a Memory

给定一个不包含数字 0 的数,要求保留最少的数字,使得最后不是素数,有多解任意输出一组即可,保证一定有解。
先写个保留数字尽可能少的爆搜,然后果断猜一下最后保留的数字不会太多。。。

具体的话,就是如果存在 1 4 6 8 9 那么显然就是 1 位,剩下的只有。。
2 3 5 7 。。那么不能出现重复的数,否则可以整除 11,那么鸽巢一下方案已经非常少了。
最后结论貌似是保留 2 位即可。。。

当然用上面的爆搜的话,其实不用仔细去推,随便给个差不多的上界直接爆过去即可。。。

Problem C. Rings

脑经急转弯。

Problem E. Rescue Niwen!

挺傻的一眼题。。。套个 sa 模板就可以写 dp 了,中间类似求重复子串,要去掉 lcp。

        LL z = 0;
        REP_1(i, n) {
            dp[i] = (n - sa[i]);
            FOR(j, 1, i) if (sa[j] < sa[i]) {
                checkMax(dp[i], dp[j] + (n  - sa[i]) - lcpp(sa[i], sa[j]) ) ;
            }

            checkMax(z, dp[i]);
        }
        cout << z << endl;

O(n2) 爆过去即可,lcp 甚至可以暴力写。所以这个 dp 的复杂度可以进一步优化吗?