QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#252283#7780. Dark LaTeX vs. Light LaTeXLynkcat#TL 772ms199532kbC++203.0kb2023-11-15 17:38:422023-11-15 17:38:43

Judging History

你现在查看的是最新测评结果

  • [2024-11-25 20:53:52]
  • hack成功,自动添加数据
  • (/hack/1258)
  • [2023-11-15 17:38:43]
  • 评测
  • 测评结果:TL
  • 用时:772ms
  • 内存:199532kb
  • [2023-11-15 17:38:42]
  • 提交

answer

#include<bits/stdc++.h>
#define poly vector<int>
#define IOS ios::sync_with_stdio(false)
#define ll long long
#define ull unsigned long long
#define mp make_pair
#define mt make_tuple
#define pa pair < int,int >
#define fi first
#define se second
#define inf 1e18
#define mod 998244353
#define sz(x) ((int)((x).size()))
#define int ll
// #define N 
using namespace std;
const int B=10007;
int lcp[5005][5005];
int pre[5005];
void BellaKira()
{
    int ans=0;
    string s,t;
    cin>>s>>t;
    {
        unordered_map<ull,int>Mp;
        for (int i=0;i<t.size();i++)
        {
            ull x=0;
            for (int j=i;j>=0;j--)
            {
                x=x*B+t[j];
                Mp[x]++;
            }
        }
        for (int i=sz(s)-1;i>=0;i--)
            for (int j=sz(s)-1;j>=0;j--)
            {
                if (s[i]==s[j]) lcp[i][j]=lcp[i+1][j+1]+1;
            }
        for (int j=0;j<=sz(s);j++)
        {
            for (int i=0;i<=sz(s);i++)
                pre[i]=0;
            for (int i=0;i+1<j;i++)
                if (lcp[i][j])
                {
                    pre[i+1]++;
                    pre[i+lcp[i][j]+1]--;
                }
            for (int i=0;i<j;i++)
            {
                if (i) pre[i]=(pre[i]+pre[i-1]);
            }
            ull x=0;
            for (int i=j-1;i>=0;i--)
            {
                int coef=1+pre[i];
                x=x*B+s[i];
                ans+=coef*Mp[x];
                // cout<<i<<" "<<j-1<<" "<<coef<<" "<<Mp[x]<<endl;
            }
        }
    }
        for (int i=sz(s)-1;i>=0;i--)
            for (int j=sz(s)-1;j>=0;j--) lcp[i][j]=0;
    swap(s,t);
    {
        unordered_map<ull,int>Mp;
        for (int i=0;i<t.size();i++)
        {
            ull x=0;
            for (int j=i;j>=0;j--)
            {
                x=x*B+t[j];
                Mp[x]++;
            }
        }
        for (int i=sz(s)-1;i>=0;i--)
            for (int j=sz(s)-1;j>=0;j--)
            {
                if (s[i]==s[j]) lcp[i][j]=lcp[i+1][j+1]+1;
            }
        for (int j=0;j<=sz(s);j++)
        {
            for (int i=0;i<=sz(s);i++)
                pre[i]=0;
            for (int i=0;i+1<j;i++)
                if (lcp[i][j])
                {
                    pre[i+1]++;
                    pre[i+lcp[i][j]+1]--;
                }
            for (int i=0;i<j;i++)
            {
                if (i) pre[i]=(pre[i]+pre[i-1]);
            }
            ull x=0;
            for (int i=j-1;i>=0;i--)
            {
                int coef=pre[i];
                x=x*B+s[i];
                ans+=coef*Mp[x];
                // cout<<i<<" "<<j-1<<" "<<coef<<" "<<Mp[x]<<endl;
            }
        }
    }
    cout<<ans<<'\n';


}
signed main()
{
    IOS;
    cin.tie(0);
    int T=1;
    while (T--)
    {
        BellaKira();
    }
}
/*list:
1.mod 998244353 or 1e9+7 or ???
2.N
3.duipai shuju xingtai duoyidian
...
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3536kb

input:

abab
ab

output:

8

result:

ok 1 number(s): "8"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

abab
abaaab

output:

29

result:

ok 1 number(s): "29"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

abcd
abcde

output:

10

result:

ok 1 number(s): "10"

Test #4:

score: 0
Accepted
time: 0ms
memory: 3624kb

input:

aaba
ba

output:

6

result:

ok 1 number(s): "6"

Test #5:

score: 0
Accepted
time: 0ms
memory: 3968kb

input:

babababaaabbaabababbbaabbbababbaaaaa
aaaabbaababbab

output:

1161

result:

ok 1 number(s): "1161"

Test #6:

score: 0
Accepted
time: 772ms
memory: 199532kb

input:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

78156256250000

result:

ok 1 number(s): "78156256250000"

Test #7:

score: 0
Accepted
time: 131ms
memory: 56272kb

input:

gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...

output:

60716448

result:

ok 1 number(s): "60716448"

Test #8:

score: 0
Accepted
time: 126ms
memory: 55584kb

input:

mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...

output:

60679828

result:

ok 1 number(s): "60679828"

Test #9:

score: -100
Time Limit Exceeded

input:

vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...

output:


result: