QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#603709 | #7780. Dark LaTeX vs. Light LaTeX | xxcdsgyes | TL | 1519ms | 199208kb | C++20 | 2.6kb | 2024-10-01 18:26:51 | 2024-10-01 18:26:52 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define ull unsigned long long
#define int long long
const int Base = 233,N = 5001;
class string_hash{
public:
static ull pow_base[N];
static void init(int n){
pow_base[0] = 1;
for(int i = 1;i <= n;i++)
pow_base[i] = pow_base[i - 1] * Base;
}
vector<ull> hash;
string s;
void get_hash(int n){
hash.resize(n + 1);
for(int i = 0;i < n;i++){
hash[i + 1] = hash[i] * Base + s[i];
}
}
ull get_hash_range(int l,int r){
return hash[r + 1] - hash[l] * pow_base[r - l + 1];
}
}ss[2];
ull string_hash::pow_base[N] = {0};//静态成员变量要初始化,否则无法使用
short dps[N][N];
short dpt[N][N];
short nums[N][N];
short numt[N][N];
int tem[N];
void test(){
cin >> ss[0].s >> ss[1].s;
int n = ss[0].s.size();
int m = ss[1].s.size();
ss[0].get_hash(n);
ss[1].get_hash(m);
for(int len = 1;len <= min(n,m);len++){
unordered_map<ull,int> mps,mpt;
vector<ull> ve;
for(int begin = 0;begin + len - 1 < n;begin++){
ull val = ss[0].get_hash_range(begin,begin + len - 1);
mps[val]++;
ve.push_back(val);
}
for(int begin = 0;begin + len - 1 < m;begin++){
ull val = ss[1].get_hash_range(begin,begin + len - 1);
mpt[val]++;
numt[begin][begin + len - 1] = mps[val];
}
for(int begin = 0;begin + len - 1 < n;begin++){
nums[begin][begin + len - 1] = mpt[ve[begin]];
}
}
for(int i = n - 1;i >= 0;i--){
for(int j = n - 1;j > i;j--){
if(ss[0].s[i] == ss[0].s[j]) dps[i][j] = dps[i + 1][j + 1] + 1;
}
}
for(int i = m - 1;i >= 0;i--){
for(int j = m - 1;j > i;j--){
if(ss[1].s[i] == ss[1].s[j]) dpt[i][j] = dpt[i + 1][j + 1] + 1;
}
}
//s比较大的情况
int ans = 0;
for(int r = 0;r < n;r++){
int rr = 0;
for(int l = 0;l <= r;l++){
if(l != 0)
tem[l] += tem[l - 1];
ans += (tem[l] + 1) * nums[l][r];
// cout << l << ' ' << r << ' ' << nums[l][r] << '\n';
int _r = l + dps[l][r + 1] - 1;
tem[_r + 2]--;
tem[l]++;
rr = max(rr,_r + 2);
}
for(int j = 0;j <= rr;j++) tem[j] = 0;
}
for(int r = 0;r < m;r++){
int rr = 0;
for(int l = 0;l <= r;l++){
if(l != 0)
tem[l] += tem[l - 1];
ans += tem[l] * numt[l][r];
int _r = l + dpt[l][r + 1] - 1;
tem[_r + 2]--;
tem[l]++;
rr = max(rr,_r + 2);
}
for(int j = 0;j <= rr;j++) tem[j] = 0;
}
cout << ans << '\n';
}
signed main(){
IOS
string_hash::init(5000);
int t = 1;//cin >> t;
while(t--){
test();
}
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5704kb
input:
abab ab
output:
8
result:
ok 1 number(s): "8"
Test #2:
score: 0
Accepted
time: 1ms
memory: 5964kb
input:
abab abaaab
output:
29
result:
ok 1 number(s): "29"
Test #3:
score: 0
Accepted
time: 1ms
memory: 5704kb
input:
abcd abcde
output:
10
result:
ok 1 number(s): "10"
Test #4:
score: 0
Accepted
time: 1ms
memory: 5696kb
input:
aaba ba
output:
6
result:
ok 1 number(s): "6"
Test #5:
score: 0
Accepted
time: 1ms
memory: 5880kb
input:
babababaaabbaabababbbaabbbababbaaaaa aaaabbaababbab
output:
1161
result:
ok 1 number(s): "1161"
Test #6:
score: 0
Accepted
time: 420ms
memory: 198956kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
78156256250000
result:
ok 1 number(s): "78156256250000"
Test #7:
score: 0
Accepted
time: 65ms
memory: 44652kb
input:
gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...
output:
60716448
result:
ok 1 number(s): "60716448"
Test #8:
score: 0
Accepted
time: 61ms
memory: 47176kb
input:
mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...
output:
60679828
result:
ok 1 number(s): "60679828"
Test #9:
score: 0
Accepted
time: 1413ms
memory: 199028kb
input:
vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...
output:
2655796915
result:
ok 1 number(s): "2655796915"
Test #10:
score: 0
Accepted
time: 1519ms
memory: 198076kb
input:
ttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdt...
output:
2652657341
result:
ok 1 number(s): "2652657341"
Test #11:
score: 0
Accepted
time: 1509ms
memory: 199144kb
input:
uupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupu...
output:
2619083676
result:
ok 1 number(s): "2619083676"
Test #12:
score: 0
Accepted
time: 58ms
memory: 47328kb
input:
ggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxg...
output:
61227979
result:
ok 1 number(s): "61227979"
Test #13:
score: 0
Accepted
time: 465ms
memory: 124328kb
input:
cwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcw...
output:
834307544
result:
ok 1 number(s): "834307544"
Test #14:
score: 0
Accepted
time: 1498ms
memory: 199208kb
input:
trtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtr...
output:
2663862697
result:
ok 1 number(s): "2663862697"
Test #15:
score: 0
Accepted
time: 16ms
memory: 47164kb
input:
gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg...
output:
0
result:
ok 1 number(s): "0"
Test #16:
score: -100
Time Limit Exceeded
input:
igkkcgocckgoocioiiggcgkigoggkociciigokikkcogkoookkiioikockoigokigiiciikcokoockgiiiogicgkkgoiogcggcgckgikccgcckoocgggogiccgkgcoccckgiooiogckoioiioogiicogkckgiickooiockogkoikogkkociioigocoiioccggkigciigcckkggiccciiiggkcgggcokookogiokoccccgogkcigokkckccoccgkoogokogkcioockkikigokiikkkoikiigckkooioogioio...