QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#768835 | #7780. Dark LaTeX vs. Light LaTeX | ucup-team5217# | ML | 0ms | 3812kb | C++23 | 2.1kb | 2024-11-21 14:44:59 | 2024-11-21 14:45:00 |
Judging History
This is the latest submission verdict.
- [2024-11-25 20:53:52]
- hack成功,自动添加数据
- (/hack/1258)
- [2024-11-21 14:44:59]
- Submitted
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
using ll = long long;
void solve(void) {
string a,b;cin>>a>>b;
ll ans=0;
auto ope=[&](int t)->void {
int sa=a.size();
int sb=b.size();
vector<vector<int>> fa(sa+1,vector<int>(sa+1));
for(int i=sa-1;i>=0;i--){
for(int j=sa-1;j>=0;j--){
if(a[i]==a[j]) fa[i][j]=1+fa[i+1][j+1];
else fa[i][j]=0;
}
}
vector<vector<int>> fb(sb+1,vector<int>(sb+1));
for(int i=sb-1;i>=0;i--){
for(int j=sb-1;j>=0;j--){
if(b[i]==b[j]) fb[i][j]=1+fb[i+1][j+1];
else fb[i][j]=0;
}
}
string ra=a,rb=b;reverse(ra.begin(),ra.end());reverse(rb.begin(),rb.end());
vector<vector<int>> fab(sa+1,vector<int>(sb+1));
for(int i=sa-1;i>=0;i--){
for(int j=sb-1;j>=0;j--){
if(ra[i]==rb[j]) fab[i][j]=1+fab[i+1][j+1];
else fab[i][j]=0;
}
}
vector<vector<int>> sum(sa,vector<int>(sa+2,0));
for(int i=0;i<sa;i++){
for(int j=0;j<sb;j++){
sum[i][0]++;
sum[i][fab[i][j]+1]--;
// if(i==sa-1) cerr<<fab[i][j]<<' '<<j<<'\n';
}
for(int j=1;j<=sa+1;j++){
sum[i][j]+=sum[i][j-1];
}
for(int j=1;j<=sa+1;j++){
sum[i][j]+=sum[i][j-1];
}
}
// cerr<<sum[sa-1][1]-sum[sa-1][0]<<'\n'
for(int i=0;i<sa;i++){
for(int j=i+1;j<=sa;j++){
int len=min(fa[i][j],j-i);
int lw=max(1ll,j-i-len),up=j-i;
if(t) up--;
ans=(ans+sum[sa-j][up]-sum[sa-j][lw-1]);
// cerr<<i<<' '<<j<<' '<<lw<<' '<<up<<' '<<ans<<'\n';
}
}
};
ope(0);
swap(a,b);
// cerr<<'\n';
ope(1);
cout<<ans<<'\n';
}
signed main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int _ = 1;
while (_--) solve();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3780kb
input:
abab ab
output:
8
result:
ok 1 number(s): "8"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3592kb
input:
abab abaaab
output:
29
result:
ok 1 number(s): "29"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3776kb
input:
abcd abcde
output:
10
result:
ok 1 number(s): "10"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3812kb
input:
aaba ba
output:
6
result:
ok 1 number(s): "6"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
babababaaabbaabababbbaabbbababbaaaaa aaaabbaababbab
output:
1161
result:
ok 1 number(s): "1161"
Test #6:
score: -100
Memory Limit Exceeded
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
78156256250000