QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#106315 | #2668. 论战捆竹竿 | xiaoyaowudi | 100 ✓ | 769ms | 21444kb | C++17 | 2.1kb | 2023-05-17 13:27:33 | 2023-05-17 13:27:35 |
Judging History
answer
#include <algorithm>
#include <iostream>
#include <tuple>
using ll=long long;
constexpr ll inf(1.01e18);
constexpr int N(5e5+10);
void trans(ll mn[],int &q,int p,int d,int c)
{
static ll b[N];std::fill(b,b+p,inf);
for(int i(0),j;i<q;++i) j=mn[i]%p,b[j]=std::min(b[j],mn[i]);
{
int t(std::__gcd(p,q)),r(q%p);
for(int i(0);i<t;++i)
{
ll mt(inf);int pt(0),s(i);
do
{
if(b[s]<mt) mt=b[s],pt=s;
s+=r;if(s>=p) s-=p;
}while(s!=i);
mt=inf;s=pt;
do
{
mt=std::min(mt+q,b[s]);
b[s]=mt;s+=r;if(s>=p) s-=p;
}while(s!=pt);
}
}
{
int t(std::__gcd(p,d)),r(d%p);
for(int i(0);i<t;++i)
{
ll mt(inf);int pt(0),s(i);
do
{
if(b[s]<mt) mt=b[s],pt=s;
s+=r;if(s>=p) s-=p;
}while(s!=i);
struct _q
{
ll val;int pos;
};static _q qq[N];int ql(0),qr(0);
s=pt;int k(0);
do
{
++k;if(ql<qr) b[s]=std::min(b[s],qq[ql].val+1ll*k*d+p);
ll val(b[s]-1ll*k*d);
while(ql<qr && qq[qr-1].val>=val) --qr;qq[qr++]=(_q){val,k};
while(ql<qr && qq[ql].pos<=k-c) ++ql;
s+=r;if(s>=p) s-=p;
}while(s!=pt);
}
}
std::copy(b,b+p,mn);q=p;
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int T;std::cin>>T;
while(T--)
{
static std::tuple<int,int,int> ds[20];int cnt(0);static int fl[N];
int n;ll x;static char s[N];std::cin>>n>>x>>(s+1);
for(int i(2);i<=n;++i)
{
int j(fl[i-1]);while(j && s[j+1]!=s[i]) j=fl[j];
if(s[j+1]==s[i]) ++j;fl[i]=j;
}
for(int i(fl[n]);i;)
{
int j(i),k(1);
for(;fl[j]>i/2;j=fl[j],++k);
if(k==1) ds[++cnt]={n-i,1,0};
else ds[++cnt]={n-i,(i-j)/(k-1),k-1};
i=fl[j];
}
static ll mn[N];int cur(n);std::fill(mn,mn+n,inf);mn[0]=n;
for(int i(1);i<=cnt;++i)
{
auto [m,d,c]=ds[i];
// std::cerr<<m<<" "<<d<<" "<<c<<std::endl;
trans(mn,cur,m,d,c);
// for(int i(0);i<cur;++i) std::cerr<<mn[i]<<" ";std::cerr<<std::endl;
}
long long ans(0);
for(int i(0);i<cur;++i) if(mn[i]<=x) ans+=(x-mn[i])/cur+1;
std::cout<<ans<<"\n";
}
return 0;
}
详细
Test #1:
score: 5
Accepted
time: 1ms
memory: 3496kb
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: 0ms
memory: 3340kb
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: 2ms
memory: 3452kb
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: 3344kb
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: 2ms
memory: 3384kb
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: 2ms
memory: 3344kb
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: 51ms
memory: 5112kb
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: 45ms
memory: 5192kb
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: 51ms
memory: 5192kb
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: 73ms
memory: 5160kb
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: 75ms
memory: 5992kb
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: 91ms
memory: 5936kb
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: 95ms
memory: 7020kb
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: 123ms
memory: 7116kb
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: 103ms
memory: 7076kb
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: 115ms
memory: 7108kb
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: 760ms
memory: 21392kb
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: 758ms
memory: 21444kb
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: 752ms
memory: 21360kb
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: 769ms
memory: 21400kb
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