QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#671508#958. Lockout vs touristnullptr_qwqAC ✓336ms38456kbC++205.4kb2024-10-24 13:02:272024-10-24 13:02:28

Judging History

This is the latest submission verdict.

  • [2024-10-24 13:02:28]
  • Judged
  • Verdict: AC
  • Time: 336ms
  • Memory: 38456kb
  • [2024-10-24 13:02:27]
  • Submitted

answer

// 私は猫です

#include<bits/stdc++.h>
#define ull unsigned long long
#define ll long long
#define int long long
#define pb push_back
#define mkp make_pair
#define fi first
#define se second
#define inf 1000000000
#define infll 1000000000000000000ll
#define pii pair<int,int>
#define rep(i,a,b,c) for(int i=(a);i<=(b);i+=(c))
#define per(i,a,b,c) for(int i=(a);i>=(b);i-=(c))
#define F(i,a,b) for(int i=a,i##end=b;i<=i##end;i++)
#define dF(i,a,b) for(int i=a,i##end=b;i>=i##end;i--)
#define cmh(sjy) while(sjy--)
#define lowbit(x) (x&(-x))
#define HH printf("\n")
#define eb emplace_back
#define poly vector<int>
using namespace std;
ll read(){
	ll x=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
	while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
	return x*f;
}
namespace Fastio{struct Reader{template<typename T>Reader&operator>>(T&x){x=0;short f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f*=-1;c=getchar();}while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+(c^48),c=getchar();x*=f;return*this;}Reader&operator>>(double&x){x=0;double t=0;short f=1,s=0;char c=getchar();while((c<'0'||c>'9')&&c!='.'){if(c=='-')f*=-1;c=getchar();}while(c>='0'&&c<='9'&&c!='.')x=x*10+(c^48),c=getchar();if(c=='.')c=getchar();else{x*=f;return*this;}while(c>='0'&&c<='9')t=t*10+(c^48),s++,c=getchar();while(s--)t/=10.0;x=(x+t)*f;return*this;}Reader&operator>>(long double&x){x=0;long double t=0;short f=1,s=0;char c=getchar();while((c<'0'||c>'9')&&c!='.'){if(c=='-')f*=-1;c=getchar();}while(c>='0'&&c<='9'&&c!='.')x=x*10+(c^48),c=getchar();if(c=='.')c=getchar();else{x*=f;return*this;}while(c>='0'&&c<='9')t=t*10+(c^48),s++,c=getchar();while(s--)t/=10.0;x=(x+t)*f;return*this;}Reader&operator>>(__float128&x){x=0;__float128 t=0;short f=1,s=0;char c=getchar();while((c<'0'||c>'9')&&c!='.'){if(c=='-')f*=-1;c=getchar();}while(c>='0'&&c<='9'&&c!='.')x=x*10+(c^48),c=getchar();if(c=='.')c=getchar();else{x*=f;return*this;}while(c>='0'&&c<='9')t=t*10+(c^48),s++,c=getchar();while(s--)t/=10.0;x=(x+t)*f;return*this;}Reader&operator>>(char&c){c=getchar();while(c==' '||c=='\n'||c=='\r')c=getchar();return*this;}Reader&operator>>(char*str){int len=0;char c=getchar();while(c==' '||c=='\n'||c=='\r')c=getchar();while(c!=' '&&c!='\n'&&c!='\r')str[len++]=c,c=getchar();str[len]='\0';return*this;}Reader&operator>>(string&str){str.clear();char c=getchar();while(c==' '||c=='\n'||c=='\r')c=getchar();while(c!=' '&&c!='\n'&&c!='\r')str.push_back(c),c=getchar();return*this;}Reader(){}}cin;const char endl='\n';struct Writer{const int Setprecision=6;typedef int mxdouble;template<typename T>Writer&operator<<(T x){if(x==0){putchar('0');return*this;}if(x<0)putchar('-'),x=-x;static short sta[40];short top=0;while(x>0)sta[++top]=x%10,x/=10;while(top>0)putchar(sta[top]+'0'),top--;return*this;}Writer&operator<<(double x){if(x<0)putchar('-'),x=-x;mxdouble _=x;x-=(double)_;static short sta[40];short top=0;while(_>0)sta[++top]=_%10,_/=10;if(top==0)putchar('0');while(top>0)putchar(sta[top]+'0'),top--;putchar('.');for(int i=0;i<Setprecision;i++)x*=10;_=x;while(_>0)sta[++top]=_%10,_/=10;for(int i=0;i<Setprecision-top;i++)putchar('0');while(top>0)putchar(sta[top]+'0'),top--;return*this;}Writer&operator<<(long double x){if(x<0)putchar('-'),x=-x;mxdouble _=x;x-=(long double)_;static short sta[40];short top=0;while(_>0)sta[++top]=_%10,_/=10;if(top==0)putchar('0');while(top>0)putchar(sta[top]+'0'),top--;putchar('.');for(int i=0;i<Setprecision;i++)x*=10;_=x;while(_>0)sta[++top]=_%10,_/=10;for(int i=0;i<Setprecision-top;i++)putchar('0');while(top>0)putchar(sta[top]+'0'),top--;return*this;}Writer&operator<<(__float128 x){if(x<0)putchar('-'),x=-x;mxdouble _=x;x-=(__float128)_;static short sta[40];short top=0;while(_>0)sta[++top]=_%10,_/=10;if(top==0)putchar('0');while(top>0)putchar(sta[top]+'0'),top--;putchar('.');for(int i=0;i<Setprecision;i++)x*=10;_=x;while(_>0)sta[++top]=_%10,_/=10;for(int i=0;i<Setprecision-top;i++)putchar('0');while(top>0)putchar(sta[top]+'0'),top--;return*this;}Writer&operator<<(char c){putchar(c);return*this;}Writer&operator<<(char*str){int cur=0;while(str[cur])putchar(str[cur++]);return*this;}Writer&operator<<(const char*str){int cur=0;while(str[cur])putchar(str[cur++]);return*this;}Writer&operator<<(string str){int st=0,ed=str.size();while(st<ed)putchar(str[st++]);return*this;}Writer(){}}cout;}using namespace Fastio;
#define cin Fastio::cin
#define cout Fastio::cout
#define endl Fastio::endl
template<typename T>inline void chkmax(T &x,const T &y){ x=std::max(x,y); }
template<typename T>inline void chkmin(T &x,const T &y){ x=std::min(x,y); }
const int mod=998244353,maxn=(1<<23)+5;
int n,a[25];
double f[maxn];
/*
 
选择一个系数序列 p_1,p_2,...,p_{|S|} 使得 \sum p_i=1,p_i>=0,
最小化 \max(f_{S\{i}}(1-p_i)+a_ip_i)

纳什均衡,可以取等号。

*/
vector<pair<double,double>>vec;
void solve(){
	cin>>n;
	F(i,0,n-1)cin>>a[i];
	sort(a,a+n),reverse(a,a+n);
	const int mx=(1<<n)-1;
	F(s,1,mx){
		vec.clear();
		F(i,0,n-1)if((s>>i)&1)vec.push_back(mkp(a[i],f[s^(1<<i)]));
		auto Solve=[&](){
			const int siz=vec.size();
			double x=1/(vec[0].fi-vec[0].se),y=0;
			F(i,1,siz-1){
				const double v=vec[i-1].fi-vec[i].fi;
				if(1<y+v*x)return f[s]=vec[i-1].fi-(1-y)/x,void();
				if(vec[i].fi<=vec[i].se)return f[s]=vec[i].fi,void();
				y+=v*x,x+=1/(vec[i].fi-vec[i].se);
			}
			return f[s]=vec.back().fi-(1-y)/x,void();
		}; Solve();
    }
    printf("%.12lf\n",f[mx]);
}
signed main(){
	const int zsy=1;
	F(____,1,zsy)solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3804kb

input:

2
6 7

output:

3.230769230769

result:

ok found '3.2307692', expected '3.2307692', error '0.0000000'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3940kb

input:

3
1 1 1

output:

0.833333333333

result:

ok found '0.8333333', expected '0.8333333', error '0.0000000'

Test #3:

score: 0
Accepted
time: 1ms
memory: 3924kb

input:

11
1 2 3 4 5 6 7 8 9 10 11

output:

9.442271386610

result:

ok found '9.4422714', expected '9.4422714', error '0.0000000'

Test #4:

score: 0
Accepted
time: 0ms
memory: 3740kb

input:

2
1 1000000000

output:

0.999999999000

result:

ok found '1.0000000', expected '1.0000000', error '0.0000000'

Test #5:

score: 0
Accepted
time: 0ms
memory: 3872kb

input:

5
76 57 68 36 63

output:

63.353965112431

result:

ok found '63.3539651', expected '63.3539651', error '0.0000000'

Test #6:

score: 0
Accepted
time: 0ms
memory: 3944kb

input:

10
550060 445055 787034 728427 572554 894096 875473 622886 575460 119034

output:

818911.373928632820

result:

ok found '818911.3739286', expected '818911.3739286', error '0.0000000'

Test #7:

score: 0
Accepted
time: 2ms
memory: 4124kb

input:

15
10 8 9 6 9 5 3 9 7 8 7 6 7 10 7

output:

9.498679631760

result:

ok found '9.4986796', expected '9.4986796', error '0.0000000'

Test #8:

score: 0
Accepted
time: 83ms
memory: 12616kb

input:

20
3 2 2 1 2 3 1 3 3 2 1 2 3 2 3 2 3 1 3 1

output:

2.999975198413

result:

ok found '2.9999752', expected '2.9999752', error '0.0000000'

Test #9:

score: 0
Accepted
time: 151ms
memory: 21212kb

input:

21
608646711 538679781 175667175 596079164 43084965 174585378 46825084 647100103 820432909 254925688 469580725 888475497 802835182 554123188 53822453 849477025 715668397 194908968 407987651 349577139 457598738

output:

831669480.282169222832

result:

ok found '831669480.2821692', expected '831669480.2821692', error '0.0000000'

Test #10:

score: 0
Accepted
time: 304ms
memory: 37244kb

input:

22
593316975 268451765 664075355 817013319 325389147 553878522 663160635 289932897 995002446 771863307 252061346 171723220 102306933 722521207 52895206 996540774 335816175 415049181 629862034 371890996 327908946 357122932

output:

899795716.348148584366

result:

ok found '899795716.3481486', expected '899795716.3481486', error '0.0000000'

Test #11:

score: 0
Accepted
time: 307ms
memory: 38456kb

input:

22
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152

output:

895851.534057118930

result:

ok found '895851.5340571', expected '895851.5340571', error '0.0000000'

Test #12:

score: 0
Accepted
time: 319ms
memory: 37056kb

input:

22
1000001 1000002 1000003 1000004 1000005 1000006 1000007 1000008 1000009 1000010 1000011 1000012 1000013 1000014 1000015 1000016 1000017 1000018 1000019 1000020 1000021 1000022

output:

1000020.442125287838

result:

ok found '1000020.4421253', expected '1000020.4421253', error '0.0000000'

Test #13:

score: 0
Accepted
time: 0ms
memory: 3864kb

input:

10
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000

output:

999999724.426807761192

result:

ok found '999999724.4268078', expected '999999724.4268078', error '0.0000000'

Test #14:

score: 0
Accepted
time: 336ms
memory: 38204kb

input:

22
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000

output:

1000000000.000000000000

result:

ok found '1000000000.0000000', expected '1000000000.0000000', error '0.0000000'

Test #15:

score: 0
Accepted
time: 145ms
memory: 20080kb

input:

21
728645832 499372030 251249515 630474794 602042850 686098859 164334367 88772048 746898743 759695983 264178590 77784010 969248695 194487863 333341710 979132664 389787588 237190234 881432878 265149252 412117176

output:

904983051.313902497292

result:

ok found '904983051.3139025', expected '904983051.3139025', error '0.0000000'

Test #16:

score: 0
Accepted
time: 302ms
memory: 36664kb

input:

22
314176712 731128902 493616429 895194945 944147610 264333375 726725941 275896968 22590087 347618504 348534546 434375739 41042380 833655175 812796321 965972943 895005482 106474689 268333939 73317639 692105187 921714965

output:

931516498.441391706467

result:

ok found '931516498.4413917', expected '931516498.4413917', error '0.0000000'

Test #17:

score: 0
Accepted
time: 301ms
memory: 37072kb

input:

22
619182033 404890231 483695686 505942949 17974691 191865554 285191465 20725875 768798333 549358594 794203186 500489670 673327262 914017660 189568084 691193705 497008772 813277003 87684441 894142475 811860050 857365145

output:

872232180.526017546654

result:

ok found '872232180.5260175', expected '872232180.5260175', error '0.0000000'

Test #18:

score: 0
Accepted
time: 0ms
memory: 3868kb

input:

1
1

output:

0.000000000000

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'