QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#200543 | #7344. Those Russian Hackers | PhantomThreshold# | AC ✓ | 1162ms | 102404kb | C++20 | 2.6kb | 2023-10-04 17:25:48 | 2023-10-04 17:25:48 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define int long long
using namespace std;
const int maxn = 1100000;
const double pi = acos(-1);
struct E
{
double x,y;
friend inline E operator +(const E &k1,const E &k2){ return (E){k1.x+k2.x,k1.y+k2.y}; }
friend inline E operator -(const E &k1,const E &k2){ return (E){k1.x-k2.x,k1.y-k2.y}; }
friend inline E operator *(const E &k1,const E &k2)
{
return (E){ k1.x*k2.x-k1.y*k2.y,k1.x*k2.y+k1.y*k2.x };
}
};
namespace FFT
{
int id[maxn];
void DFT(E f[],const int N,const int sig)
{
for(int i=0;i<N;i++) if(i<id[i]) swap(f[i],f[id[i]]);
for(int m=2;m<=N;m<<=1)
{
int t=m>>1;
for(int i=0;i<t;i++)
{
E temp=(E){cos(2*pi*i/m),sin(2*pi*i/m*sig)};
for(int j=i;j<N;j+=m)
{
E tx=f[j],ty=f[j+t]*temp;
f[j]=tx+ty;
f[j+t]=tx-ty;
}
}
}
if(sig==-1)
{
for(int i=0;i<N;i++) f[i].x/=(double)N;
}
}
E f[maxn],g[maxn];
void FFT(double f1[],double f2[],double ret[],const int n,const int m)
{
int N=1,ln=0;
while(N<=(n+m)) N<<=1,ln++;
for(int i=1;i<N;i++) id[i]=id[i>>1]>>1|(i&1)<<(ln-1);
for(int i=0;i<N;i++)
{
if(i<=n) f[i]=(E){f1[i],0};
else f[i]=(E){0,0};
if(i<=m) g[i]=(E){f2[i],0};
else g[i]=(E){0,0};
}
DFT(f,N,1); DFT(g,N,1);
for(int i=0;i<N;i++) f[i]=f[i]*g[i];
DFT(f,N,-1);
for(int i=0;i<=n+m;i++) ret[i]=f[i].x;
}
}
int n,K;
double p[maxn],q[maxn],sumq[maxn],sump[maxn];
double w1[maxn],w0[maxn],t1[maxn],t2[maxn],t3[maxn];
double sumw[maxn];
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>n>>K;
for(int i=0;i<n;i++)
{
cin>>p[i];
if(!i) sump[i]=p[i];
else sump[i]=sump[i-1]+p[i];
}
p[n]=0;
for(int i=1;i<=2*n-2;i++)
{
cin>>q[i];
sumq[i]=sumq[i-1]+q[i];
}
for(int i=0;i<=2*n-2;i++) t1[i]=sumq[i];
for(int i=0;i<=n;i++) t2[n-i]=p[i];
FFT::FFT(t1,t2,t3,2*n-2,n);
for(int i=0;i<=n;i++) w1[i]= t3[2*n-i];
for(int i=0;i<=n;i++) t1[i]=sumq[i];
for(int i=0;i<=n;i++) t2[n-i]=p[i];
FFT::FFT(t1,t2,t3,n,n);
for(int i=0;i<=n;i++) w0[i]=t3[n-i];
double temp=0;
{
double ss=0;
for(int i=0;i<n;i++)
{
double cc=ss;
if(i==0||sump[i-1]<1.0) cc+= w0[i]; // /(1.0-sump[i-1]);
temp=max(temp, cc );
ss+= p[i]*sumq[n-i-1];
}
}
for(int i=1;i<=n;i++) sumw[i]= sumw[i-1]+p[i-1]*w1[i];
for(int k=K-1,j=n;k>=1;k--)
{
while(j>1&& w1[j]<temp )
j--;
//w1[j]>=temp
temp= sumw[j]+(1-sump[j-1])*temp;
}
cout<<fixed<<setprecision(12)<<temp<<endl;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 24684kb
input:
3 1 0.5 0.25 0.25 0.75 0.25 0.0 0.0
output:
0.687500000000
result:
ok found '0.6875000', expected '0.6875000', error '0.0000000'
Test #2:
score: 0
Accepted
time: 0ms
memory: 24864kb
input:
3 2 0.3 0.4 0.3 0.0 0.0 0.0 1.0
output:
0.090000000000
result:
ok found '0.0900000', expected '0.0900000', error '0.0000000'
Test #3:
score: 0
Accepted
time: 0ms
memory: 24752kb
input:
3 1 0.5 0.2 0.3 1.0 0.0 0.0 0.0
output:
0.800000000000
result:
ok found '0.8000000', expected '0.8000000', error '0.0000000'
Test #4:
score: 0
Accepted
time: 0ms
memory: 24644kb
input:
2 1 1.0 0.0 0.7 0.3
output:
0.700000000000
result:
ok found '0.7000000', expected '0.7000000', error '0.0000000'
Test #5:
score: 0
Accepted
time: 0ms
memory: 24644kb
input:
2 2 0.0 1.0 0.6 0.4
output:
0.600000000000
result:
ok found '0.6000000', expected '0.6000000', error '0.0000000'
Test #6:
score: 0
Accepted
time: 0ms
memory: 24732kb
input:
3 1 0.1 0.1 0.8 1.0 0.0 0.0 0.0
output:
0.900000000000
result:
ok found '0.9000000', expected '0.9000000', error '0.0000000'
Test #7:
score: 0
Accepted
time: 0ms
memory: 24696kb
input:
2 1 0.196570 0.803430 0.417660 0.582340
output:
0.335560573800
result:
ok found '0.3355606', expected '0.3355606', error '0.0000000'
Test #8:
score: 0
Accepted
time: 0ms
memory: 24624kb
input:
2 1 0.392496 0.607504 1.000000 0.000000
output:
0.607504000000
result:
ok found '0.6075040', expected '0.6075040', error '0.0000000'
Test #9:
score: 0
Accepted
time: 0ms
memory: 24752kb
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.901027547899
result:
ok found '0.9010275', expected '0.9010275', error '0.0000000'
Test #10:
score: 0
Accepted
time: 0ms
memory: 24676kb
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.853833380837
result:
ok found '0.8538334', expected '0.8538334', error '0.0000000'
Test #11:
score: 0
Accepted
time: 0ms
memory: 24704kb
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.306330006553
result:
ok found '0.3063300', expected '0.3063300', error '0.0000000'
Test #12:
score: 0
Accepted
time: 2ms
memory: 24732kb
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.999983853959
result:
ok found '0.9999839', expected '0.9999839', error '0.0000000'
Test #13:
score: 0
Accepted
time: 0ms
memory: 24736kb
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.986428786179
result:
ok found '0.9864288', expected '0.9864288', error '0.0000000'
Test #14:
score: 0
Accepted
time: 0ms
memory: 24708kb
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.628303052313
result:
ok found '0.6283031', expected '0.6283031', error '0.0000000'
Test #15:
score: 0
Accepted
time: 0ms
memory: 24924kb
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.000000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #16:
score: 0
Accepted
time: 5ms
memory: 24672kb
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.999998043068
result:
ok found '0.9999980', expected '0.9999980', error '0.0000000'
Test #17:
score: 0
Accepted
time: 0ms
memory: 24928kb
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.758192052457
result:
ok found '0.7581921', expected '0.7581921', error '0.0000000'
Test #18:
score: 0
Accepted
time: 0ms
memory: 24628kb
input:
2 300000 0.044919 0.955081 1.000000 0.000000
output:
1.000000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #19:
score: 0
Accepted
time: 0ms
memory: 24684kb
input:
2 300000 0.922991 0.077009 0.216415 0.783585
output:
0.276758097265
result:
ok found '0.2767581', expected '0.2767581', error '0.0000000'
Test #20:
score: 0
Accepted
time: 1133ms
memory: 99312kb
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.500640852638
result:
ok found '0.5006409', expected '0.5006409', error '0.0000000'
Test #21:
score: 0
Accepted
time: 1162ms
memory: 102208kb
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.250560883052
result:
ok found '0.2505609', expected '0.2505609', error '0.0000000'
Test #22:
score: 0
Accepted
time: 1071ms
memory: 100428kb
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.979810412919
result:
ok found '0.9798104', expected '0.9798104', error '0.0000000'
Test #23:
score: 0
Accepted
time: 1132ms
memory: 102404kb
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.675031975313
result:
ok found '0.6750320', expected '0.6750320', error '0.0000000'
Test #24:
score: 0
Accepted
time: 1093ms
memory: 100496kb
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.999617530758
result:
ok found '0.9996175', expected '0.9996175', error '0.0000000'
Test #25:
score: 0
Accepted
time: 1119ms
memory: 100480kb
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.740882930906
result:
ok found '0.7408829', expected '0.7408829', error '0.0000000'
Test #26:
score: 0
Accepted
time: 1074ms
memory: 100552kb
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.999999999948
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #27:
score: 0
Accepted
time: 1147ms
memory: 98724kb
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.750543689178
result:
ok found '0.7505437', expected '0.7505436', error '0.0000001'