string
题面什么的
抱歉,被我咕咕咕了
考场思路:
sort大法好
n2log2n过 40% 令人着实兴奋
正解:
线段树+桶
利用只有26个字母的优势
好吧,26个字母,只怪我没想到
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define l(k) (k<<1)
#define r(k) (l(k)|1)
const int maxn=1e5+5;
struct tree{
int l,r,sum;
}t[maxn<<5];
int a[maxn];
int n,m,bj[maxn],b[27];
void upc(int k)
{
if(t[k].l==t[k].r)
return;
t[k].sum=(t[l(k)].sum==t[r(k)].sum?t[l(k)].sum:0);
}
void build(int k,int l,int r)
{
/*cout<<k<<" "<<l<<" "<<r<<endl;*/
t[k].l=l,t[k].r=r;
if(l==r)
{
t[k].sum=a[l];
bj[l]=k;
return;
}
int mid=(l+r)>>1;
build(l(k),l,mid);
build(r(k),mid+1,r);
upc(k);
}
void cl(int k)
{
if(!t[k].sum) return;
if(t[k].l!=t[k].r)