QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#292070 | #7780. Dark LaTeX vs. Light LaTeX | ucup-team902 | WA | 924ms | 199640kb | C++20 | 4.0kb | 2023-12-27 17:08:53 | 2023-12-27 17:08:53 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define cs const
#define re register
#define pb push_back
#define pii pair<int,int>
#define ll long long
#define y1 shinkle
#define fi first
#define se second
#define bg begin
namespace IO{
#define gc getchar
inline int read(){
char ch=gc();
int res=0;bool f=1;
while(!isdigit(ch))f^=ch=='-',ch=gc();
while(isdigit(ch))res=(res*10)+(ch^48),ch=gc();
return f?res:-res;
}
inline ll readll(){
char ch=gc();
ll res=0;bool f=1;
while(!isdigit(ch))f^=ch=='-',ch=gc();
while(isdigit(ch))res=(res*10)+(ch^48),ch=gc();
return f?res:-res;
}
inline char readchar(){
char ch=gc();
while(isspace(ch))ch=gc();
return ch;
}
inline int readstring(char *s){
int top=0;char ch=gc();
while(isspace(ch))ch=gc();
while(!isspace(ch)&&ch!=EOF)s[++top]=ch,ch=gc();
s[top+1]='\0';return top;
}
}
using IO::read;
using IO::readll;
using IO::readchar;
using IO::readstring;
template<typename tp>inline void chemx(tp &a,tp b){(a<b)?(a=b):0;}
template<typename tp>inline void chemn(tp &a,tp b){(a>b)?(a=b):0;}
cs int bs1=173,bs2=17;
cs int mod1=1e9+7,mod2=998244353;
cs int N=5005;
char s[N],t[N];
struct Map{
static cs int mod=20003;
int val[mod];ll key[mod];
int stk[mod],top;
Map(){memset(key,-1,sizeof(key));}
void clear(){
while(top){
val[stk[top]]=0,key[stk[top]]=-1;
top--;
}
}
cs int &operator [](cs ll &k)cs{
int p=k%mod;
while((~key[p])&&(key[p]!=k))p=(p==mod-1)?0:(p+1);
return val[p];
}
int &operator [](cs ll &k){
int p=k%mod;
while((~key[p])&&(key[p]!=k))p=(p==mod-1)?0:(p+1);
if(key[p]!=k)key[p]=k,stk[++top]=p;
return val[p];
}
}res;
ll ans;
int pre[N][N];
int lcp[N][N];
void solve(char *s,char *t,int tmp){
int n=strlen(s+1),m=strlen(t+1);
memset(pre,0,sizeof(pre));
memset(lcp,0,sizeof(lcp));
for(int i=n;i;i--)
for(int j=i;j<=n;j++){
if(s[i]==s[j])lcp[i][j]=lcp[i+1][j+1]+1;
else lcp[i][j]=0;
}
ll del1=1,del2=1;
for(int l=1;l<=min(n,m);l++){
res.clear();
ll vl1=0,vl2=0;del1=del1*bs1%mod1,del2=del2*bs2%mod2;
for(int i=1;i<=l;i++){
vl1*=bs1;
vl1+=t[i]-'a';
vl1%=mod1;
vl2*=bs2;
vl2+=t[i]-'a';
vl2%=mod2;
}
++res[vl1];
for(int i=l+1;i<=m;i++){
vl1*=bs1;
vl1-=del1*(t[i-l]-'a');
vl1+=t[i]-'a';
vl1=(vl1%mod1+mod1)%mod1;
vl2*=bs2;
vl2-=del2*(t[i-l]-'a');
vl2+=t[i]-'a';
vl2=(vl2%mod2+mod2)%mod2;
++res[vl1];
}
vl1=vl2=0;
for(int i=1;i<=l;i++){
vl1*=bs1;
vl1+=s[i]-'a';
vl1%=mod1;
vl2*=bs2;
vl2+=s[i]-'a';
vl2%=mod2;
}
pre[l][1]=res[vl1];
for(int i=l+1;i<=n;i++){
vl1*=bs1;
vl1-=del1*(s[i-l]-'a');
vl1+=s[i]-'a';
vl1=(vl1%mod1+mod1)%mod1;
vl2*=bs2;
vl2-=del2*(s[i-l]-'a');
vl2+=s[i]-'a';
vl2=(vl2%mod2+mod2)%mod2;
pre[i][i-l+1]=res[vl1];
}
}
// for(int i=1;i<=n;i++,puts(""))
// for(int j=1;j<=n;j++)cout<<pre[i][j]<<" ";
for(int i=1;i<=n;i++)
for(int j=i;j;j--)pre[i][j]+=pre[i][j+1];
// for(int i=1;i<=n;i++,puts(""))
// for(int j=1;j<=n;j++)cout<<pre[i][j]<<" ";
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n+1;j++){
int len=min(lcp[i][j],j-i);
int p1=i+len,p2=i+tmp;
// cout<<i<<" "<<j<<" "<<lcp[i][j]<<" "<<len<<" "<<p1<<" "<<p2<<" "<<pre[j-1][p2]<<" "<<pre[j-1][p1+1]<<'\n';
if(p2<=p1)ans+=pre[j-1][p2]-pre[j-1][p1+1];
}
}
int main(){
#ifdef Stargazer
freopen("1.in","r",stdin);
#endif
int x1=readstring(s);
int x2=readstring(t);
solve(s,t,0);
// cout<<ans<<'\n';
//exit(0);
solve(t,s,1);
cout<<ans<<'\n';
// cerr<<clock()-tt<<'\n';
}
詳細信息
Test #1:
score: 100
Accepted
time: 29ms
memory: 199564kb
input:
abab ab
output:
8
result:
ok 1 number(s): "8"
Test #2:
score: 0
Accepted
time: 36ms
memory: 199528kb
input:
abab abaaab
output:
29
result:
ok 1 number(s): "29"
Test #3:
score: 0
Accepted
time: 16ms
memory: 199640kb
input:
abcd abcde
output:
10
result:
ok 1 number(s): "10"
Test #4:
score: 0
Accepted
time: 35ms
memory: 199440kb
input:
aaba ba
output:
6
result:
ok 1 number(s): "6"
Test #5:
score: 0
Accepted
time: 27ms
memory: 199620kb
input:
babababaaabbaabababbbaabbbababbaaaaa aaaabbaababbab
output:
1161
result:
ok 1 number(s): "1161"
Test #6:
score: 0
Accepted
time: 924ms
memory: 199552kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
78156256250000
result:
ok 1 number(s): "78156256250000"
Test #7:
score: 0
Accepted
time: 52ms
memory: 199512kb
input:
gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...
output:
60716448
result:
ok 1 number(s): "60716448"
Test #8:
score: 0
Accepted
time: 72ms
memory: 199536kb
input:
mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...
output:
60679828
result:
ok 1 number(s): "60679828"
Test #9:
score: -100
Wrong Answer
time: 893ms
memory: 199580kb
input:
vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...
output:
2655796926
result:
wrong answer 1st numbers differ - expected: '2655796915', found: '2655796926'