题意略. 思路: 将字符分桶,然后暴力去扫,扫完合并.假设有k个桶,每个桶里有n / k个数,那么我们应该要扫 n / (2 * k)次,每次的复杂度是k,最后算得复杂度是O(n). 详见代码: #include<bits/stdc++.h> #define maxn 1000005 using namespace std; struct node{ int color; int numb; node(,){ color = a,numb = b; } }; node store[maxn];…