QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#456338 | #8772. House Deconstruction | kkkgjyismine4 | AC ✓ | 64ms | 21036kb | C++23 | 1.6kb | 2024-06-27 18:47:02 | 2024-06-27 18:47:02 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define gc getchar
#define pii pair<ll,int>
#define fi first
#define se second
#define mp make_pair
#define N 400005
using namespace std;
const ll inf=1e18;
const int mod=998244353;
void upd(pii &a,const pii b){
if(a.fi>b.fi)a=b;
else if(a.fi==b.fi)a.se=(a.se+b.se)%mod;
}
int s[N];
int x,n,m,ct[N],pos[N],vis[N],lst[N];
ll sum[N];
pii f[N];
pii solve(int k){
for(int i=0;i<=n;++i)f[i].fi=inf,f[i].se=0;
int l=0,r=n;
for(;l<=n&&ct[l]!=k;++l);
for(;r>=0&&ct[r]!=ct[n]+k;--r);
if(l>r)return mp(inf,0);f[l].fi=0,f[l].se=1;
for(int i=l+1;i<=r;++i){
if(s[i]==1)upd(f[i],f[i-1]);
if(lst[i]>=l)upd(f[i],mp(f[lst[i]].fi+abs(sum[i]-sum[lst[i]]),f[lst[i]].se));
}
return mp(f[r].fi+abs(sum[n]+sum[l]-sum[r]+1ll*k*x),f[r].se);
}
int main(){
cin>>x>>n>>m,n+=m;
for(int i=1;i<=n;++i){
scanf("%d",&pos[i]);
char ch=gc();while(ch!='P'&&ch!='H')ch=gc();
if(ch=='H')s[i]=1;else s[i]=-1;
ct[i]=ct[i-1]+s[i],sum[i]=sum[i-1]+1ll*s[i]*pos[i];
}
for(int i=0;i<=400000;++i)vis[i]=-1;
for(int i=0;i<=n;++i)lst[i]=vis[ct[i]+m],vis[ct[i]+m]=i;
int mn=n,mx=-n;
for(int i=0;i<=n;++i)mn=min(mn,ct[i]),mx=max(mx,ct[i]);
int l=mn,r=mx-ct[n];
while(l+1<r){
int mid=l+r>>1;
if(solve(mid)<solve(mid+1))r=mid;
else l=mid+1;
}
int Ans=0;
ll ret=min(solve(l),solve(r)).fi;
cout<<ret<<endl;
for(int i=r;;++i){
pii x=solve(i);
if(x.fi==ret)Ans=(Ans+x.se)%mod;
else break;
}
for(int i=r-1;;--i){
pii x=solve(i);
if(x.fi==ret)Ans=(Ans+x.se)%mod;
else break;
}
cout<<Ans<<endl;
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 11956kb
input:
6 2 4 1 P 2 H 3 P 4 H 5 H 6 H
output:
2 3
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 2ms
memory: 11916kb
input:
1000000000 2 4 1 P 6 H 31415926 H 999999998 H 999999999 H 1000000000 P
output:
4 1
result:
ok 2 lines
Test #3:
score: 0
Accepted
time: 64ms
memory: 20964kb
input:
1000000000 199999 200000 3087 P 3282 H 6407 H 6748 P 9535 P 10098 H 16470 H 22311 H 31045 H 31968 H 32549 H 33037 P 36005 P 36308 H 40284 P 46224 H 52394 P 54922 H 55800 P 56582 H 57548 H 62155 P 63067 P 64237 H 66133 P 71351 P 75667 P 79089 P 79646 P 81144 H 91883 P 96680 H 102797 H 105388 H 105971...
output:
262753966206 1
result:
ok 2 lines
Test #4:
score: 0
Accepted
time: 46ms
memory: 19540kb
input:
1000000000 150000 200000 3087 P 3282 H 6407 H 6748 H 9535 H 10098 H 16470 H 22311 H 31968 H 32549 H 33037 P 36005 P 40284 H 52394 P 54922 H 55800 H 56582 H 57548 H 62155 P 63067 P 64237 H 66133 P 71351 P 75667 H 79089 P 79646 P 81144 H 91883 P 96680 H 102797 H 105388 H 105971 P 106057 P 107807 P 116...
output:
1212175277 8
result:
ok 2 lines
Test #5:
score: 0
Accepted
time: 28ms
memory: 18636kb
input:
1000000000 100000 200000 3068 H 3087 P 3106 H 33031 H 33037 P 33043 H 52370 H 52394 P 52418 H 62996 H 63067 P 63138 H 66040 H 66133 P 66226 H 71350 H 71351 P 71352 H 91852 H 91883 P 91914 H 105924 H 105969 H 105971 P 106018 H 106057 P 106145 H 116361 H 116385 P 116409 H 126036 H 126084 P 126132 H 12...
output:
4978306 463697368
result:
ok 2 lines
Test #6:
score: 0
Accepted
time: 48ms
memory: 19976kb
input:
1000000 150000 200000 2 H 3 H 6 H 8 H 16 P 17 H 19 P 20 P 21 P 24 H 28 H 33 H 37 P 38 H 40 H 44 P 48 H 49 P 58 P 59 P 60 H 62 P 65 P 70 H 72 H 76 P 77 H 79 P 84 P 93 H 96 P 101 H 104 H 106 P 110 H 111 P 112 H 116 H 124 P 125 H 126 H 127 H 128 P 134 H 135 P 137 P 138 P 140 H 142 H 145 H 146 H 147 H 1...
output:
1203722 86861366
result:
ok 2 lines
Test #7:
score: 0
Accepted
time: 28ms
memory: 21036kb
input:
1000000000 199999 200000 966788248 H 966788251 P 966788252 H 966788254 P 966788255 H 966788260 P 966788261 H 966788263 P 966788267 H 966788275 P 966788278 H 966788279 P 966788288 H 966788291 P 966788298 H 966788304 P 966788305 H 966788308 P 966788309 H 966788317 P 966788326 H 966788334 P 966788342 H...
output:
1098446 4586
result:
ok 2 lines
Test #8:
score: 0
Accepted
time: 39ms
memory: 19744kb
input:
10000000 137967 139896 52 P 101 H 106 P 149 P 158 P 190 P 258 P 338 P 349 P 350 P 457 P 486 P 500 P 509 P 517 P 563 P 568 P 630 P 723 P 738 P 801 P 819 P 859 P 872 P 885 P 900 P 972 P 1004 P 1034 P 1087 P 1183 P 1236 P 1245 P 1268 P 1436 H 1481 P 1486 P 1511 P 1544 P 1607 P 1647 P 1685 P 1798 P 1819...
output:
317845182248 2
result:
ok 2 lines
Test #9:
score: 0
Accepted
time: 36ms
memory: 19896kb
input:
400000 137967 139896 1 P 2 H 3 P 4 P 5 P 6 P 9 P 10 P 11 P 15 P 16 P 17 P 18 P 19 P 20 P 22 P 23 P 24 P 26 P 27 P 28 P 29 P 31 P 32 P 33 P 34 P 35 P 36 P 37 P 39 P 40 P 45 P 47 P 48 P 49 H 51 P 52 P 53 P 56 P 57 P 58 P 60 P 61 P 62 P 63 P 64 P 65 P 68 P 71 P 72 P 73 P 74 H 75 P 76 P 77 P 78 P 79 P 8...
output:
12717669314 562027925
result:
ok 2 lines
Test #10:
score: 0
Accepted
time: 30ms
memory: 20872kb
input:
1000000000 199000 200000 526190 H 526213 P 526214 H 526299 P 526309 H 526316 P 526351 H 526355 P 526370 H 526400 P 526482 H 526545 P 526569 H 526573 P 526641 H 526658 P 526707 H 526790 P 526838 H 526844 P 526868 H 526967 P 526975 H 527032 P 527097 H 527154 P 527213 H 527278 P 527299 H 527367 P 52743...
output:
9896423 922405585
result:
ok 2 lines
Test #11:
score: 0
Accepted
time: 37ms
memory: 21012kb
input:
1000000000 199950 200000 5239074 H 5239076 P 5239077 H 5239078 P 5239079 H 5239080 P 5239081 H 5239083 P 5239084 H 5239085 P 5239086 H 5239087 P 5239088 H 5239090 P 5239092 H 5239093 P 5239094 H 5239095 P 5239097 H 5239099 P 5239101 H 5239102 P 5239103 H 5239104 P 5239105 H 5239106 P 5239107 H 52391...
output:
299836 463541155
result:
ok 2 lines
Test #12:
score: 0
Accepted
time: 33ms
memory: 20864kb
input:
1000000000 199500 200000 244421 H 244423 P 244424 H 244425 P 244426 H 244427 P 244428 H 244430 P 244431 H 244432 P 244433 H 244434 P 244435 H 244437 P 244439 H 244440 P 244441 H 244442 P 244444 H 244446 P 244448 H 244449 P 244450 H 244451 P 244452 H 244453 P 244454 H 244455 P 244456 H 244458 P 24446...
output:
298242 524810405
result:
ok 2 lines
Test #13:
score: 0
Accepted
time: 43ms
memory: 18932kb
input:
400000 148599 151281 2 P 3 P 5 P 6 P 7 P 8 P 9 P 10 P 11 P 12 P 13 P 14 P 15 P 16 P 17 P 18 P 19 P 22 P 23 P 25 P 30 P 31 P 32 P 33 H 34 P 35 P 36 P 38 P 39 P 40 P 41 P 43 P 45 P 47 P 49 P 50 P 51 P 53 P 54 P 55 P 57 P 58 P 60 H 61 P 62 H 65 P 67 P 68 P 69 P 70 P 71 P 72 P 73 P 74 P 77 P 78 P 79 P 8...
output:
13764808569 268118240
result:
ok 2 lines
Test #14:
score: 0
Accepted
time: 35ms
memory: 20524kb
input:
1000000000 149183 174434 2 H 6 P 10 H 12 H 13 H 14 H 18 P 21 P 23 H 24 H 25 H 30 H 32 H 35 H 37 P 39 P 41 H 53 P 57 H 61 P 62 P 63 P 65 H 66 P 67 H 71 P 73 H 74 P 75 P 76 H 78 H 79 H 80 H 82 P 83 P 84 H 85 H 93 H 95 H 96 P 99 H 107 P 108 P 109 P 111 H 112 P 116 H 118 P 119 H 120 P 121 P 123 H 124 P ...
output:
1788748 930867409
result:
ok 2 lines