QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#201997 | #7344. Those Russian Hackers | SolitaryDream | AC ✓ | 413ms | 126884kb | C++14 | 2.4kb | 2023-10-05 18:13:37 | 2023-10-05 18:13:38 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define FOR(i,s,t) for(int i=(s),_t=(t); i<=_t; ++i)
typedef double db;
typedef long long ll;
const int N=1.1e6+50;
typedef complex<db> comp;
const db pi=acos(-1);
void DFT(comp *a,int n,int f) {
static comp ww[N],iw[N];
static int rev[N],pn=0;
if(pn!=n) {
FOR(i,0,n-1) ww[i]=comp(cos(pi*2/n*i),sin(pi*2/n*i));
FOR(i,0,n-1) iw[i]=conj(ww[i]);
FOR(i,0,n-1) rev[i]=(rev[i>>1]>>1)|((i&1)*(n>>1));
pn=n;
}
comp *w=f>0?ww:iw;
FOR(i,0,n-1) if(rev[i]<i) swap(a[rev[i]],a[i]);
for(int l=2; l<=n; l<<=1) {
for(comp *p=a; p!=a+n; p+=l) {
for(int i=0,m=l>>1; i<m; ++i) {
comp t=p[i+m];
p[i+m]=p[i]+t*w[n/l*(i+m)];
p[i]=p[i]+t*w[n/l*i];
}
}
}
if(f<0) FOR(i,0,n-1) a[i]/=n;
}
void Poly_Mul(const db *A,int LenA,const db *B,int LenB,db *C) {
// FOR(i,0,LenA-1) FOR(j,0,LenB-1) C[i+j]+=A[i]*B[j];
static comp a[N],b[N];
int n=1;for(; n<LenA+LenB; n<<=1);
FOR(i,0,n-1) a[i]=b[i]={0,0};
FOR(i,0,LenA-1) a[i]={A[i],0};
FOR(i,0,LenB-1) b[i]={B[i],0};
DFT(a,n,1);
DFT(b,n,1);
FOR(i,0,n-1) b[i]*=a[i];
// FOR(i,0,n-1) b[i]=(a[i]*a[i]-conj(a[i?n-i:0]*a[i?n-i:0]))*comp(0,-0.25);
DFT(b,n,-1);
FOR(i,0,n-1) C[i]=b[i].real();
}
db p[N],q[N],P[N];
db Q[N];
db A[N],B[N];
db sum[N];
int n,K;
db pr;
int e=0;
db qry(int i,int r) {
db t=0,t0=0,t1=0;
FOR(j,1,n) {
if(j<=r) {
t+=p[j]*(sum[n*3-2]-sum[n-2+j]);
} else {
t0+=p[j]*pr;
}
}
return t+max(t0,t1);
}
db sum0[N];
int main() {
scanf("%d%d",&n,&K);
FOR(i,1,n) scanf("%lf",&p[i]),P[i]=P[i-1]+p[i];
FOR(i,1,n*2-2) scanf("%lf",&q[i]),Q[i]=Q[i-1]+q[i];
FOR(i,1,n*2-2) A[i]=q[n*2-1-i];
Poly_Mul(p,n+1,A,n*2-1,B);
FOR(i,1,n+n*2-1) sum[i]=sum[i-1]+B[i];
db s0=0,s1=sum[n*3-2]-sum[n*2-1];
db s2=0;
FOR(i,1,n) {
sum0[i]=sum0[i-1]+p[i]*(sum[n*3-2]-sum[n-1+i]);
s0+=Q[n-i]*p[i];
s1=max(s1,s0+sum[n*3-2]-sum[n*2-1+i]);
// cerr << s1 << endl;
}
pr=s1;
int j=n;
FOR(i,2,K) {
while(j && pr>=(sum[n*3-2]-sum[n-1+j])) --j;
pr=sum0[j]+pr*(P[n]-P[j]);
}
printf("%.9lf\n",pr);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 22656kb
input:
3 1 0.5 0.25 0.25 0.75 0.25 0.0 0.0
output:
0.687500000
result:
ok found '0.6875000', expected '0.6875000', error '0.0000000'
Test #2:
score: 0
Accepted
time: 0ms
memory: 22600kb
input:
3 2 0.3 0.4 0.3 0.0 0.0 0.0 1.0
output:
0.090000000
result:
ok found '0.0900000', expected '0.0900000', error '0.0000000'
Test #3:
score: 0
Accepted
time: 3ms
memory: 22556kb
input:
3 1 0.5 0.2 0.3 1.0 0.0 0.0 0.0
output:
0.800000000
result:
ok found '0.8000000', expected '0.8000000', error '0.0000000'
Test #4:
score: 0
Accepted
time: 0ms
memory: 22564kb
input:
2 1 1.0 0.0 0.7 0.3
output:
0.700000000
result:
ok found '0.7000000', expected '0.7000000', error '0.0000000'
Test #5:
score: 0
Accepted
time: 0ms
memory: 22596kb
input:
2 2 0.0 1.0 0.6 0.4
output:
0.600000000
result:
ok found '0.6000000', expected '0.6000000', error '0.0000000'
Test #6:
score: 0
Accepted
time: 3ms
memory: 22512kb
input:
3 1 0.1 0.1 0.8 1.0 0.0 0.0 0.0
output:
0.900000000
result:
ok found '0.9000000', expected '0.9000000', error '0.0000000'
Test #7:
score: 0
Accepted
time: 0ms
memory: 22552kb
input:
2 1 0.196570 0.803430 0.417660 0.582340
output:
0.335560574
result:
ok found '0.3355606', expected '0.3355606', error '0.0000000'
Test #8:
score: 0
Accepted
time: 0ms
memory: 22536kb
input:
2 1 0.392496 0.607504 1.000000 0.000000
output:
0.607504000
result:
ok found '0.6075040', expected '0.6075040', error '0.0000000'
Test #9:
score: 0
Accepted
time: 0ms
memory: 22648kb
input:
10 1 0.012643 0.123624 0.053820 0.040365 0.028873 0.020157 0.055711 0.484945 0.098421 0.081441 0.085328 0.047990 0.714931 0.138813 0.012938 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
output:
0.901027548
result:
ok found '0.9010275', expected '0.9010275', error '0.0000000'
Test #10:
score: 0
Accepted
time: 0ms
memory: 22584kb
input:
10 1 0.006649 0.073200 0.000565 0.045068 0.112668 0.035625 0.046072 0.103194 0.005569 0.571390 0.195573 0.074055 0.047683 0.369439 0.161507 0.054811 0.055588 0.037380 0.003964 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
output:
0.853833381
result:
ok found '0.8538334', expected '0.8538334', error '0.0000000'
Test #11:
score: 0
Accepted
time: 3ms
memory: 22488kb
input:
10 1 0.145228 0.019318 0.105821 0.185187 0.088991 0.042625 0.024569 0.088478 0.047174 0.252609 0.018498 0.107130 0.001316 0.120833 0.069263 0.099338 0.005632 0.009075 0.036279 0.023135 0.008573 0.029578 0.025695 0.067194 0.023536 0.116172 0.157449 0.081304
output:
0.306330007
result:
ok found '0.3063300', expected '0.3063300', error '0.0000000'
Test #12:
score: 0
Accepted
time: 0ms
memory: 22440kb
input:
10 10 0.044299 0.160436 0.044139 0.088241 0.291281 0.136777 0.020766 0.124310 0.013255 0.076496 0.081824 0.025457 0.068874 0.265701 0.558144 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
output:
0.999983854
result:
ok found '0.9999839', expected '0.9999839', error '0.0000000'
Test #13:
score: 0
Accepted
time: 3ms
memory: 22532kb
input:
10 10 0.098756 0.001607 0.002767 0.264946 0.282086 0.080842 0.027809 0.031328 0.176685 0.033174 0.072398 0.177002 0.005668 0.017867 0.488488 0.060093 0.085645 0.025416 0.067423 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
output:
0.986428786
result:
ok found '0.9864288', expected '0.9864288', error '0.0000000'
Test #14:
score: 0
Accepted
time: 0ms
memory: 22592kb
input:
10 10 0.429937 0.091639 0.001306 0.006129 0.006155 0.171890 0.227093 0.040566 0.003681 0.021604 0.041201 0.062705 0.028561 0.106362 0.004036 0.034025 0.097426 0.071704 0.050975 0.005562 0.042348 0.065488 0.055791 0.033996 0.101538 0.032639 0.105819 0.059824
output:
0.628303052
result:
ok found '0.6283031', expected '0.6283031', error '0.0000000'
Test #15:
score: 0
Accepted
time: 3ms
memory: 22584kb
input:
1000 1000 0.000186 0.000277 0.000747 0.004770 0.001251 0.001097 0.001523 0.000697 0.002943 0.000903 0.000046 0.000063 0.000033 0.000233 0.000333 0.000385 0.000192 0.001261 0.002266 0.000046 0.001039 0.001668 0.000955 0.002996 0.000001 0.000635 0.001404 0.000237 0.000757 0.000273 0.001566 0.000076 0....
output:
1.000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #16:
score: 0
Accepted
time: 0ms
memory: 22580kb
input:
1000 1000 0.000547 0.000752 0.000703 0.001254 0.003381 0.000643 0.002170 0.000597 0.001286 0.005326 0.000228 0.000866 0.002296 0.000276 0.001162 0.000225 0.001080 0.002429 0.001119 0.001858 0.001548 0.000080 0.002263 0.000292 0.000358 0.000841 0.000658 0.001286 0.002226 0.004054 0.000382 0.001406 0....
output:
0.999998043
result:
ok found '0.9999980', expected '0.9999980', error '0.0000000'
Test #17:
score: 0
Accepted
time: 0ms
memory: 24652kb
input:
1000 1000 0.000362 0.001464 0.000148 0.000631 0.000095 0.000870 0.000089 0.000110 0.000545 0.000621 0.001660 0.000251 0.000261 0.001025 0.001456 0.002287 0.000990 0.001421 0.000920 0.001709 0.002256 0.002731 0.000697 0.002399 0.003296 0.000171 0.000584 0.000437 0.001456 0.000772 0.000126 0.000171 0....
output:
0.758192052
result:
ok found '0.7581921', expected '0.7581921', error '0.0000000'
Test #18:
score: 0
Accepted
time: 0ms
memory: 22460kb
input:
2 300000 0.044919 0.955081 1.000000 0.000000
output:
1.000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #19:
score: 0
Accepted
time: 0ms
memory: 22592kb
input:
2 300000 0.922991 0.077009 0.216415 0.783585
output:
0.276758097
result:
ok found '0.2767581', expected '0.2767581', error '0.0000000'
Test #20:
score: 0
Accepted
time: 391ms
memory: 125420kb
input:
300000 1 0.000003 0.000000 0.000001 0.000003 0.000006 0.000001 0.000001 0.000001 0.000003 0.000003 0.000001 0.000003 0.000000 0.000005 0.000002 0.000001 0.000001 0.000002 0.000003 0.000002 0.000007 0.000000 0.000010 0.000000 0.000001 0.000000 0.000005 0.000009 0.000001 0.000002 0.000001 0.000006 0.0...
output:
0.500640853
result:
ok found '0.5006409', expected '0.5006409', error '0.0000000'
Test #21:
score: 0
Accepted
time: 384ms
memory: 123940kb
input:
300000 1 0.000007 0.000000 0.000003 0.000020 0.000001 0.000001 0.000000 0.000009 0.000000 0.000004 0.000000 0.000002 0.000001 0.000001 0.000002 0.000012 0.000001 0.000004 0.000001 0.000004 0.000003 0.000005 0.000013 0.000001 0.000002 0.000007 0.000001 0.000001 0.000005 0.000003 0.000001 0.000002 0.0...
output:
0.250560883
result:
ok found '0.2505609', expected '0.2505609', error '0.0000000'
Test #22:
score: 0
Accepted
time: 386ms
memory: 125832kb
input:
300000 10 0.000001 0.000001 0.000000 0.000000 0.000000 0.000001 0.000004 0.000001 0.000007 0.000004 0.000003 0.000002 0.000000 0.000004 0.000002 0.000001 0.000020 0.000001 0.000000 0.000003 0.000010 0.000001 0.000002 0.000013 0.000001 0.000007 0.000003 0.000006 0.000001 0.000001 0.000003 0.000001 0....
output:
0.979810413
result:
ok found '0.9798104', expected '0.9798104', error '0.0000000'
Test #23:
score: 0
Accepted
time: 391ms
memory: 124512kb
input:
300000 10 0.000002 0.000002 0.000000 0.000001 0.000001 0.000001 0.000001 0.000014 0.000000 0.000004 0.000001 0.000002 0.000006 0.000000 0.000002 0.000002 0.000005 0.000001 0.000000 0.000001 0.000000 0.000003 0.000000 0.000001 0.000002 0.000000 0.000007 0.000000 0.000003 0.000002 0.000001 0.000003 0....
output:
0.675031975
result:
ok found '0.6750320', expected '0.6750320', error '0.0000000'
Test #24:
score: 0
Accepted
time: 388ms
memory: 126884kb
input:
300000 100 0.000000 0.000002 0.000003 0.000007 0.000001 0.000004 0.000003 0.000000 0.000001 0.000000 0.000003 0.000001 0.000002 0.000000 0.000008 0.000002 0.000003 0.000002 0.000000 0.000004 0.000005 0.000004 0.000003 0.000004 0.000003 0.000001 0.000000 0.000005 0.000005 0.000003 0.000006 0.000002 0...
output:
0.999617531
result:
ok found '0.9996175', expected '0.9996175', error '0.0000000'
Test #25:
score: 0
Accepted
time: 413ms
memory: 126008kb
input:
300000 100 0.000000 0.000006 0.000000 0.000001 0.000001 0.000003 0.000005 0.000005 0.000004 0.000000 0.000004 0.000001 0.000001 0.000000 0.000002 0.000001 0.000001 0.000001 0.000003 0.000007 0.000004 0.000000 0.000002 0.000002 0.000003 0.000002 0.000012 0.000003 0.000001 0.000002 0.000003 0.000000 0...
output:
0.740882931
result:
ok found '0.7408829', expected '0.7408829', error '0.0000000'
Test #26:
score: 0
Accepted
time: 389ms
memory: 125760kb
input:
300000 300000 0.000000 0.000007 0.000002 0.000003 0.000003 0.000004 0.000006 0.000008 0.000002 0.000001 0.000002 0.000001 0.000000 0.000005 0.000012 0.000003 0.000000 0.000014 0.000000 0.000000 0.000003 0.000008 0.000001 0.000001 0.000002 0.000001 0.000001 0.000005 0.000005 0.000000 0.000003 0.00000...
output:
0.999999986
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #27:
score: 0
Accepted
time: 372ms
memory: 126880kb
input:
300000 300000 0.000001 0.000003 0.000001 0.000005 0.000003 0.000001 0.000000 0.000002 0.000003 0.000002 0.000002 0.000001 0.000020 0.000002 0.000006 0.000008 0.000002 0.000003 0.000012 0.000002 0.000002 0.000001 0.000005 0.000001 0.000001 0.000008 0.000004 0.000000 0.000004 0.000002 0.000006 0.00001...
output:
0.750543572
result:
ok found '0.7505436', expected '0.7505436', error '0.0000000'