CF C. Plasticine zebra (思维)】的更多相关文章

Plasticine zebra time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Is there anything better than going to the zoo after a tiresome week at work? No wonder Grisha feels the same while spending…
昨晚忘记判只有一个字符的情况fst了呜呜呜 挺有趣的题,昨晚连刚带猜弄出结论 考虑答案的取值,最优答案可能是一个后缀,或者是一个前缀,或者是一个后缀加上前缀 那么翻转之后最优答案的可选值就有了1的前缀+n的后缀 对于一个合法的zebra串,无论怎么翻转都不会影响他的取值,所以预处理一遍扫过去找答案即可. 强烈谴责CF昨晚的数学大赛pretest数据太水 Code: #include <cstdio> #include <cstring> using namespace std; ;…
C. Plasticine zebra time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Is there anything better than going to the zoo after a tiresome week at work? No wonder Grisha feels the same while spend…
题意: 是输入一个只有'w','b'的字符串,可以对他的任意位置切割成两个子串,切割后的右边的子串翻转后再和左边的子串拼起来会得到一个新的字符串,操作次数不限,问能得到的字符串中wb交替出现的最大的长度是多少 分析:其实只要将原有的字符串进行复制拼接然后扫描一遍得出结果就可以了,为什么呢 ? 其实呀只要这样操作无论怎样操作反转 ,都可以在s+s这个串里找到相同的子串,也就可以大胆的得出这个玄学的结论 . 不加一证明,表示不会,如果不相信可以手动操作一番 #include<bits/stdc++.…
给你一个长度为 \(\left|s\right|\) 的01串 \(s\) ,每次操作你可以任选一个 \(k\) ,使01串的 \([1,k]\) 和 \((k,\left|s\right|]\) 分别翻转(其中一个区间可以为空),求经过任意次操作后能得到的最长的01交替出现的子串的长度.(实际题目中01用w和b代替) #include<cstdio> #include<string> #include<cstdlib> #include<cmath> #i…
http://codeforces.com/contest/987/problem/D 题目大概: 给出一个n个城镇m条边的图,给出每个城镇拥有的特产(可能多个城镇有相同特产).有k种不同特产. 要求每个城镇需要其他城镇运输特产到自己的城镇,每个城镇必须拥有s种特产,那么在城镇满足s种特产后,需要的最短路径是多长,最短路指的是特产运输过来走过的边的数量. 分析: 一开始以为是道水题,因为我只要对每个点都进行一次DFS,那问题就很简单了,但是...细想下,这其实是不行的,因为会TLE. 那现在我们…
问了学长,感觉还是很迷啊,不过懂了个大概,这个翻转操作,实质不就是在序列后面加上前面部分比如 bw | wwbwwbw  操作过后 wbwbwwbww 而 bw | wwbwwbwbw 这样我们就知道这样的实质了,因此我们只需要把序列再次倍增,求最长的间隔序列即可 #include<iostream> #include<string.h> #include<stdio.h> #include<algorithm> #include<map> us…
题意:给你一段字符串,可以选择任意多的位置,每个位置会反转两边的字符串,问交错的字符串最长是多长? 思路:找规律,仔细分析样例1.假设位置为 1 2 3 4 5 6 7 8 9,反转之后会发现答案是7 8 9 1 2 3 4 5 6 ,其中答案串是7 8 9 1 2,所以可以把原字符串复制一份粘在原字符串后面,找最长的交错串即可. #include<cstdio> #include<algorithm> #include<cstring> #include<ios…
题意: n<=1e5 思路:可以证明答案即为极长交替出现的串长度之和 需要注意其实这个串是一个环,复制后再做 #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<iostream> #include<algorithm> #include<map> #include<set> #include<qu…
思路: 不要被骗了,这个操作实际上tm是在循环移位. 实现: #include <bits/stdc++.h> using namespace std; int main() { string s; while (cin >> s) { , cnt = , pos = -; ; i < n - ; i++) { ]) { maxn = max(maxn, cnt); cnt = ; pos = i; } else cnt++; } maxn = max(maxn, cnt);…