結果

問題 No.173 カードゲーム(Medium)
ユーザー motimoti
提出日時 2015-04-03 10:54:12
言語 C++11
(gcc 11.4.0)
結果
TLE  
実行時間 -
コード長 908 bytes
コンパイル時間 1,319 ms
コンパイル使用メモリ 163,728 KB
実行使用メモリ 8,448 KB
最終ジャッジ日時 2024-07-04 01:37:08
合計ジャッジ時間 10,195 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2,232 ms
5,248 KB
testcase_01 TLE -
testcase_02 -- -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>

using namespace std;

#define REP(i,a,b) for(int i=a;i<(int)b;i++)
#define rep(i,n) REP(i,0,n)

int N, T;
double pa, pb;
int A[22], B[22];
int awins, sum;

default_random_engine gene;
uniform_real_distribution<double> dist(0,1);

vector<int> getrandvec(double p) {
	int x;
	vector<int> v,r;
	rep(i, N) v.push_back(i);

	rep(i, N-1) {
		double d = dist(gene);
		if(d < p) x = 0;
		else x = 1+(N-1-i)*(d-p) / (1-p);
		r.push_back(v[x]);
		v.erase(v.begin()+x);
	}
	r.push_back(v[0]);
	return r;
}

int main() {

	cin >> N;
	rep(i, N) cin >> A[i];	sort(A, A+N);
	rep(i, N) cin >> B[i];	sort(B, B+N);

	rep(_, 22222222) {
		sum++;
		vector<int> va(getrandvec(pa)), vb(getrandvec(pb));
		int ascore = 0;
		rep(i, N) {
			if(A[va[i]] <= B[vb[i]]) { continue; }
			ascore += A[va[i]] + B[vb[i]];
		}
		if(ascore > T/2) { awins++; }
	}
	
	printf("%.10f\n", (double)awins/sum);

	return 0;
}
0