QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#807925#2668. 论战捆竹竿qojszt100 ✓246ms22444kbC++143.2kb2024-12-10 14:45:252024-12-10 14:45:26

Judging History

This is the latest submission verdict.

  • [2024-12-10 14:45:26]
  • Judged
  • Verdict: 100
  • Time: 246ms
  • Memory: 22444kb
  • [2024-12-10 14:45:25]
  • Submitted

answer

#include <bits/stdc++.h>
#define eb emplace_back
#define N next
using namespace std;
constexpr unsigned MXSZ = 1 << 20;char buf[MXSZ], *p1, *p2;
#ifdef testing
#define gc getchar()
#else
#define gc (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, MXSZ, stdin), p1 == p2)? EOF : *p1++)
#endif
int read(){
    int x = 0;int c = gc;for (; !isdigit(c); c = gc);
    for (; isdigit(c); c = gc)x = (x * 10) + (c ^ 48);return x;
}
long long readll(){
    long long x = 0;int c = gc;for (; !isdigit(c); c = gc);
    for (; isdigit(c); c = gc)x = (x * 10) + (c ^ 48);return x;
}
int n;long long w;constexpr long long inf = 2e18;char s[500010];
vector<int> period(){vector<int> nxt(n + 1), R;nxt[0] = -1;for (int i = 2, j = 0; i <= n; ++i)
    {while (~j && s[j + 1] ^ s[i])j = nxt[j];nxt[i] = ++j;}for (int i = nxt[n]; ~i; i = nxt[i])R.eb(n - i);return R;}
vector<tuple<int, int, int> > toFDC(vector<int> V){vector<tuple<int, int, int> > R;
    for (auto it = V.begin(); it != V.end(); ){auto jt = it;while (N(jt) != V.end() && *N(jt) - *jt == *N(it) - *it)++jt;
        if (it != jt)R.eb(*it, *N(it) - *it, jt - it);else R.eb(*it, 0, 0); it = N(jt);}return R;}
long long f[500010];int Nwmd;void tmn(long long &x, long long y){if (x > y)x = y;}
void ChgMd(int NewMd){
    static long long fnw[500010];copy_n(f, Nwmd, fnw);fill_n(f, NewMd, inf);for (int i = 0; i < Nwmd; ++i)tmn(f[fnw[i] % NewMd], fnw[i]);
    for (int Bgp = 0, Df = __gcd(NewMd, Nwmd); Bgp < Df; ++Bgp){
        vector<int> Ps{Bgp};for (int v = (Bgp + Nwmd) % NewMd; v != Ps.front(); Ps.eb(v), v = (v + Nwmd) % NewMd);
        rotate(Ps.begin(), min_element(Ps.begin(), Ps.end(), [&](int a, int b){return f[a] < f[b];}), Ps.end());
        long long mn = inf, i = 0;for (int p : Ps)tmn(f[p], mn + i * Nwmd), tmn(mn, f[p] - i++ * Nwmd);
    }
    Nwmd = NewMd;
}
void Jsf(int F, int D, int C){
    for (int Bgp = 0, Df = __gcd(F, D); Bgp < Df; ++Bgp){
        vector<int> Ps{Bgp};for (int v = (Bgp + D) % F; v != Ps.front(); Ps.eb(v), v = (v + D) % F);
        rotate(Ps.begin(), min_element(Ps.begin(), Ps.end(), [&](int a, int b){return f[a] < f[b];}), Ps.end());
        static int Q[500010]; static long long w[500010];
        for (int i = 0, HD = 1, TL = 0, _ = Ps.size(); i < _; ++i){
            if (HD <= TL && Q[HD] < i - C)++HD;
            if (HD <= TL)tmn(f[Ps[i]], w[HD] + 1ll * i * D + F);
            while (HD <= TL && w[TL] > f[Ps[i]] - 1ll * i * D)--TL;
            Q[++TL] = i, w[TL] = f[Ps[i]] - 1ll * i * D;
        }
    }
}
long long Prsh, Prrs;
long long Gths(){
    long long ret = 0;
    for (int i = 1; i <= n; ++i)ret *= 13331, ret += s[i], ret %= 998244353;
    return ret;
}
void work(){
    n = read(), w = readll();int c = gc;while (isspace(c))c = gc;for (int i = 1; i <= n; ++i)s[i] = c, c = gc;
    long long Nhs = Gths();if (Nhs == Prsh){cout << Prrs << endl;return;}Prsh = Nhs;
    w -= n;Nwmd = n;auto Ls = toFDC(period());fill_n(f, n, inf);f[0] = 0;for (auto [F, D, C] : Ls){ChgMd(F);Jsf(F, D, C);}
    long long res = 0;for (int i = 0; i < Nwmd; ++i)if (f[i] <= w)res += (w - f[i]) / Nwmd + 1;cout << res << endl;Prrs = res;
}
signed main(){int t = read();while (t--)work();return 0;}
//refer https://www.luogu.com.cn/article/6h0eem0a

详细


Pretests


Final Tests

Test #1:

score: 5
Accepted
time: 1ms
memory: 9708kb

input:

5
3 10
aab
6 10
bbbaaa
6 10
aaaaab
3 10
bba
3 10
baa

output:

3
1
1
3
3

result:

ok 5 number(s): "3 1 1 3 3"

Test #2:

score: 5
Accepted
time: 1ms
memory: 9768kb

input:

5
5 20
aabaa
6 20
bbabab
4 20
aaaa
5 20
abbbb
7 20
abbbaba

output:

14
6
17
4
5

result:

ok 5 number(s): "14 6 17 4 5"

Test #3:

score: 5
Accepted
time: 0ms
memory: 7600kb

input:

5
100 1000000000000000000
pubuapdogqmtxofzuvbvugsmeolvkwcszhiyxlzfgzgkcigttarutfmcxazyebvqtxbaaolirkjsysbpeqcnnbmewyiflnfrdxji
100 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
100 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaa...

output:

10000000000000000
999999999999999901
999999999999999832
999999999999999715
0

result:

ok 5 number(s): "10000000000000000 999999999999...9999999832 999999999999999715 0"

Test #4:

score: 5
Accepted
time: 0ms
memory: 9712kb

input:

5
100 1000000000000000000
shzjdvpdipbefflocbzemtahxhqsmsfkgeglhkdlaojllfcuzezkairuyubwvraoehlhzinzeglirkqsellamtfqsjqumokegxzx
100 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
100 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaa...

output:

10000000000000000
999999999999999901
999999999999999838
0
999999999999999847

result:

ok 5 number(s): "10000000000000000 999999999999...9999999838 0 999999999999999847"

Test #5:

score: 5
Accepted
time: 1ms
memory: 9700kb

input:

5
1000 1000000000000000000
yqfvrrdlnfhymfwvujysliaqsnpkkyoinhtkcasjsmmcxzopcuxihrrlphehsymvxsqbwokwpxdlmoewxncojujmzngxgcbijsesyxdbleiekfsgvhvooeqbxqltddskmuqvhopgjjrsaohmhjilifimfybzwchrqconquqqsfuqqqldityagdpgcfsvgbdpumfdalxujcyzhzqyfwriwjgwovydysqfuvbzqetndazvlkgbjzedafrccfizfpkpuqrhstwtadlkhcbhv...

output:

1000000000000000
999999999999999001
999999999999998482
999999999999998098
999999999999997859

result:

ok 5 number(s): "1000000000000000 9999999999999...999999998098 999999999999997859"

Test #6:

score: 5
Accepted
time: 1ms
memory: 9832kb

input:

5
1000 1000000000000000000
pixtqjtglhxfwbonlhwvddksgnuqjswinhunxhghfnuqirqfnnkioeydhkpbrqxkgkplqzheddxmutzvocqconzicazgfmbyztjnppcstvnqavyouodmgkvwhdxihckhyoxcamxqenjughhusufxyiiivadirmdsqbadxkfaekchfvsukwxbkdejyraihqdndthzuvqblixchamwzmhuenyfpetkgljsnrighareizgfvmtlgxeljluwoklcikmaefcsebndhiqbqpeuv...

output:

1000000000000000
999999999999999001
999999999999998488
0
999999999999997533

result:

ok 5 number(s): "1000000000000000 9999999999999...9999998488 0 999999999999997533"

Test #7:

score: 5
Accepted
time: 10ms
memory: 10672kb

input:

5
50000 100000
xudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyh...

output:

10001
24995
6004
34963
0

result:

ok 5 number(s): "10001 24995 6004 34963 0"

Test #8:

score: 5
Accepted
time: 8ms
memory: 12576kb

input:

5
50000 100000
xudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyh...

output:

10001
24994
6004
34969
1009

result:

ok 5 number(s): "10001 24994 6004 34969 1009"

Test #9:

score: 5
Accepted
time: 12ms
memory: 10708kb

input:

5
50000 100000
xudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyh...

output:

10001
24995
6004
34969
1009

result:

ok 5 number(s): "10001 24995 6004 34969 1009"

Test #10:

score: 5
Accepted
time: 10ms
memory: 10604kb

input:

5
50000 100000
xudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyhxudyh...

output:

10001
24997
6004
34963
1007

result:

ok 5 number(s): "10001 24997 6004 34963 1007"

Test #11:

score: 5
Accepted
time: 28ms
memory: 11220kb

input:

5
70000 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

999999999999894988
499999999999924964
999999999999888298
999999999999533441
999999999999823805

result:

ok 5 number(s): "999999999999894988 49999999999...999999533441 999999999999823805"

Test #12:

score: 5
Accepted
time: 24ms
memory: 12788kb

input:

5
70000 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

999999999999894988
499999999999934948
999999999999888292
999999999999533441
499999999999927943

result:

ok 5 number(s): "999999999999894988 49999999999...999999533441 499999999999927943"

Test #13:

score: 5
Accepted
time: 18ms
memory: 11684kb

input:

5
100000 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

999999999999849979
499999999999894861
999999999999838298
499999998750274995
999999999999647812

result:

ok 5 number(s): "999999999999849979 49999999999...998750274995 999999999999647812"

Test #14:

score: 5
Accepted
time: 40ms
memory: 12352kb

input:

5
100000 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

999999999999849988
499999999999894861
999999999999838292
999999999999369217
499999999999887884

result:

ok 5 number(s): "999999999999849988 49999999999...999999369217 499999999999887884"

Test #15:

score: 5
Accepted
time: 22ms
memory: 13452kb

input:

5
100000 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

999999999999849976
166666666666641659
999999999999838304
499999998750274995
999999999999719421

result:

ok 5 number(s): "999999999999849976 16666666666...998750274995 999999999999719421"

Test #16:

score: 5
Accepted
time: 42ms
memory: 13524kb

input:

5
100000 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

999999999999849982
499999999999894839
999999999999838292
999999999999370145
999999999999687718

result:

ok 5 number(s): "999999999999849982 49999999999...999999370145 999999999999687718"

Test #17:

score: 5
Accepted
time: 218ms
memory: 22324kb

input:

5
500000 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

999999999999249988
249999999999783292
999999999999171633
999999999996226049
999999999998333136

result:

ok 5 number(s): "999999999999249988 24999999999...999996226049 999999999998333136"

Test #18:

score: 5
Accepted
time: 246ms
memory: 22372kb

input:

5
500000 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

999999999999249979
249999999999783302
999999999999171627
999999999996226049
999999999998649255

result:

ok 5 number(s): "999999999999249979 24999999999...999996226049 999999999998649255"

Test #19:

score: 5
Accepted
time: 230ms
memory: 22444kb

input:

5
500000 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

999999999999249985
499999999999466547
999999999999171633
999999999996226049
999999999998649207

result:

ok 5 number(s): "999999999999249985 49999999999...999996226049 999999999998649207"

Test #20:

score: 5
Accepted
time: 236ms
memory: 22292kb

input:

5
500000 1000000000000000000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

999999999999249976
249999999999783302
999999999999171645
999999999996226049
999999999998649333

result:

ok 5 number(s): "999999999999249976 24999999999...999996226049 999999999998649333"

Extra Test:

score: 0
Extra Test Passed