Spasmodic @ 2020-12-05 22:21:56
rt
分别是洛谷无O2/洛谷有O2/oi tiku
还有,T2
by Aestas16 @ 2020-12-05 22:22:55
等级不看省份吧 /kk
by _5011_ @ 2020-12-05 22:22:57
动态内存巨大常数?
by Aestas16 @ 2020-12-05 22:23:26
借楼问一下 oitiku 188 lg 178 大概几级
by panyf @ 2020-12-05 22:23:49
lognlog26 84不是很正常吗,logn+26都有人被卡成84
by wangjinbo @ 2020-12-05 22:24:07
你这个复杂度不卡成84才怪,不带log 26都悬
by 无情。浪剑心 @ 2020-12-05 22:24:08
为什么你们都是洛谷分比oi tiku高qwq
我oi tiku比洛谷高了60分
by Spasmodic @ 2020-12-05 22:24:29
@Zephyr_
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll N=1048600;
const ull B=37;
ll T,n,ans,cnt[26],pref[N],sucf[N],bit[28];
ull pw[N],hsh[N];
void update(ll x,ll v){for(;x<=27;x+=x&-x)bit[x]+=v;}
ll sum(ll x){ll res=0;for(;x;x-=x&-x)res+=bit[x];return res;}
char s[N];
bool valid(ll i,ll j){
return hsh[i]*pw[j-i]==(hsh[j]-hsh[j-i]);
}
int main(){
freopen("string.in","r",stdin);
freopen("string.out","w",stdout);
for(scanf("%lld",&T);T--;){
scanf("%s",s+1);ans=0;
n=strlen(s+1);
memset(sucf,0,sizeof(sucf));
memset(pref,0,sizeof(pref));
memset(cnt,0,sizeof(cnt));
for(ll i=1;i<=n;i++){
cnt[s[i]-'a']++;
for(ll j=0;j<26;j++)pref[i]+=(cnt[j]%2==1);
pref[i]++;
}
memset(cnt,0,sizeof(cnt));
for(ll i=n;i;i--){
cnt[s[i]-'a']++;
for(ll j=0;j<26;j++)sucf[i]+=(cnt[j]%2==1);
sucf[i]++;
}
memset(hsh,0,sizeof(hsh));
pw[0]=1;
for(ll i=1;i<=n;i++)pw[i]=pw[i-1]*B,hsh[i]=hsh[i-1]*B+s[i]-'a';
memset(bit,0,sizeof(bit));
for(ll i=1;i<n;i++){
for(ll j=i;j<=n;j+=i)
if(valid(i,j))ans+=sum(sucf[j+1]);
else break;
update(pref[i],1);
}
printf("%lld\n",ans);
}
return 0;
}
by Seauy @ 2020-12-05 22:25:37
我这个复杂度 96……可能要用个getchar?
by 李达琦 @ 2020-12-05 22:26:01
这显然得卡成
by zhoukangyang @ 2020-12-05 22:26:30
Tnlognlog26 手算算大概是 5e8
卡掉也算正常吧(