QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#739065 | #9482. Count Pseudo-Palindromes | HuTao | TL | 659ms | 126100kb | C++14 | 1.6kb | 2024-11-12 20:45:27 | 2024-11-12 20:45:48 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
namespace FastRead{
char buf[1000005], *s = buf, *t = buf, ch, f;
#define gc() s == t && (t = (s = buf) + fread(buf, 1, 1000000, stdin), s == t) ? EOF : *s ++
template <typename T>
inline void Read(T &x)
{
x = f = 0, ch = gc();
while(ch < '0' || ch > '9') f = ch == '-', ch = gc();
while('0' <= ch && ch <= '9') x = x * 10 + ch - 48, ch = gc();
f && (x = -x);
}
};
using FastRead::Read;
typedef unsigned long long ULL;
const int N = 1e6 + 5;
int n, a[N], vis[N];
mt19937_64 mrand(72346070);
ULL val[N], s[N];
unordered_multiset<ULL> st;
int fa[N];
vector<int> pos[N];
long long res[N];
inline int gfa(int i)
{
return i == fa[i] ? i : (fa[i] = gfa(fa[i]));
}
inline void Work()
{
for(int i = 1; i <= n * 2 + 1; i ++ ) fa[i] = i, pos[i].clear();
for(int i = 1; i <= n * 2; i ++ )
{
s[i] = s[i - 1] ^ val[a[i]];
if(vis[a[i]])
{
for(int j = gfa(vis[a[i]] + 1); j <= i; j = gfa(j))
{
pos[i].push_back(j);
fa[j] = j + 1;
}
}
vis[a[i]] ^= i;
}
st.clear();
for(int i = n * 2; i >= 1; i -- )
{
st.insert(s[i]);
if(vis[a[i]] != i)
{
for(int j : pos[i])
{
res[i] += st.count(s[j - 1] ^ val[a[i]]);
}
}
vis[a[i]] ^= i;
}
}
int main()
{
Read(n);
for(int i = 1; i <= n; i ++ ) val[i] = mrand();
for(int i = 1; i <= n * 2; i ++ ) Read(a[i]);
Work();
reverse(a + 1, a + n * 2 + 1);
reverse(res + 1, res + n * 2 + 1);
Work();
reverse(res + 1, res + n * 2 + 1);
for(int i = 1; i <= n * 2; i ++ ) printf("%lld ", res[i]);
puts("");
}
詳細信息
Test #1:
score: 100
Accepted
time: 8ms
memory: 36512kb
input:
2 1 1 2 2
output:
1 2 2 1
result:
ok 4 tokens
Test #2:
score: 0
Accepted
time: 0ms
memory: 40664kb
input:
3 2 1 2 3 1 3
output:
1 2 2 2 2 1
result:
ok 6 tokens
Test #3:
score: 0
Accepted
time: 9ms
memory: 40612kb
input:
4 1 2 4 3 4 1 3 2
output:
1 2 1 2 1 3 1 1
result:
ok 8 tokens
Test #4:
score: 0
Accepted
time: 8ms
memory: 36448kb
input:
1 1 1
output:
1 1
result:
ok 2 tokens
Test #5:
score: 0
Accepted
time: 631ms
memory: 124664kb
input:
500000 233733 151347 468353 495903 234861 297169 312993 2734 287872 359375 79017 285205 219439 37290 409190 194953 306816 472906 123794 121028 66509 62235 385879 300188 485875 72413 167304 333428 33910 220100 151575 22575 206653 82054 111518 34032 48702 198940 6262 222529 170641 1735 38943 235003 11...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 1000000 tokens
Test #6:
score: 0
Accepted
time: 630ms
memory: 125804kb
input:
499999 20175 421667 477513 164648 153952 133902 58509 432946 498621 54699 294105 304055 93092 259617 486830 464621 6039 242867 382241 360345 10071 252829 103706 252083 473217 323326 33901 422497 383693 356571 238499 427265 431925 199533 488748 223250 479343 214815 342665 7527 397982 388425 441947 22...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 999998 tokens
Test #7:
score: 0
Accepted
time: 641ms
memory: 126100kb
input:
499997 45410 344491 448636 181028 373083 59862 259850 450733 79631 85900 495425 239044 136232 298896 153214 415427 38484 109664 137285 119717 218023 298593 471654 176162 70510 350483 399376 389216 216264 101701 215546 228021 276411 466038 129279 195937 428850 265629 401774 256885 390764 413922 17303...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 999994 tokens
Test #8:
score: 0
Accepted
time: 640ms
memory: 125204kb
input:
499997 37608 326519 54760 248123 204348 346642 61147 436793 69778 214333 218891 483667 384161 403360 356390 248198 29856 493073 233598 389736 369609 270007 220631 136593 466701 181463 411612 427328 118151 122803 284544 460648 272586 195734 336665 122951 379375 367270 245020 25504 383525 41863 81696 ...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 999994 tokens
Test #9:
score: 0
Accepted
time: 659ms
memory: 126008kb
input:
500000 135935 181205 141645 138625 249427 195506 123419 458633 63023 374714 401464 251761 277589 411743 487913 258512 492432 128739 193919 223871 363101 432296 482273 312836 246225 444114 374199 486518 186449 150064 106819 451666 347007 343676 417429 283175 281930 230703 379421 67177 249744 37489 14...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 1000000 tokens
Test #10:
score: 0
Accepted
time: 141ms
memory: 37976kb
input:
10363 10142 10142 2131 2738 2131 2738 680 5820 5820 680 5427 5427 5351 5351 5858 2523 2523 5858 441 7894 441 7894 1030 1030 719 719 9367 6333 1473 9367 6333 1473 7794 5563 2057 7794 2057 5563 4537 6187 7424 6187 4537 7424 4036 6607 9275 6607 9275 4036 4467 6358 1636 1636 4467 6358 4832 9601 7151 715...
output:
1 3591 2 3 3591 3590 6 1 1 7178 4 3588 5 3587 12 1 1 7172 7 8 3586 3585 8 3584 9 3583 10 1 11 3583 1 3582 11 12 1 3583 1 3581 12 1 14 1 3581 3580 26 1 2 2 1 7158 14 16 1 1 3580 3578 30 2 1 1 2 7154 16 17 3577 17 3577 3576 17 35 3577 1 1 7150 18 19 3575 3574 19 3573 40 1 1 22 7145 3572 63 1 2 2 1 107...
result:
ok 20726 tokens
Test #11:
score: -100
Time Limit Exceeded
input:
499999 395932 97222 230492 15912 230492 255343 255343 97222 15912 395932 5114 483045 466140 64914 153803 327261 213658 466140 153803 64914 2964 487362 283821 280934 487362 483045 5114 283821 50697 327261 280934 50697 2964 213658 375562 126491 470816 375562 126491 470816 450983 67957 450983 67957 183...