結果

問題 No.173 カードゲーム(Medium)
ユーザー threepipes_sthreepipes_s
提出日時 2015-03-27 22:57:14
言語 Java21
(openjdk 21)
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 3,622 bytes
コンパイル時間 2,559 ms
コンパイル使用メモリ 81,292 KB
実行使用メモリ 57,672 KB
最終ジャッジ日時 2024-07-03 23:49:41
合計ジャッジ時間 5,125 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 90 ms
53,696 KB
testcase_01 AC 117 ms
55,128 KB
testcase_02 WA -
testcase_03 AC 225 ms
57,672 KB
testcase_04 AC 228 ms
57,388 KB
testcase_05 AC 225 ms
57,176 KB
testcase_06 AC 216 ms
57,360 KB
testcase_07 AC 221 ms
57,580 KB
testcase_08 AC 220 ms
57,264 KB
testcase_09 AC 240 ms
57,336 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;

public class Main {
	public static void main(String[] args) throws NumberFormatException,
	IOException {
		ContestScanner in = new ContestScanner();
		int n = in.nextInt();
		final int trial = 10000;
		double pa = in.nextDouble();
		double pb = in.nextDouble();
		int[] a = new int[n];
		int[] b = new int[n];
		for(int i=0; i<n; i++){
			a[i] = in.nextInt();
		}
		for(int i=0; i<n; i++){
			b[i] = in.nextInt();
		}
		Arrays.sort(a);
		Arrays.sort(b);
		Random rand = new Random();
		double winNum = 0;
		
		for(int i=0; i<trial; i++){
			List<Integer> ca = new ArrayList<Integer>();
			List<Integer> cb = new ArrayList<Integer>();
			int scoreA = 0;
			int scoreB = 0;
			for(int j=0; j<n; j++){
				ca.add(a[j]);
				cb.add(b[j]);
			}
			while(!ca.isEmpty()){
				int cardA;
				int cardB;
				if(rand.nextDouble() <= pa || ca.size() == 1){
					cardA = ca.remove(0);
				}else{
					cardA = ca.remove(rand.nextInt(ca.size()-1)+1);
				}
				if(rand.nextDouble() <= pb || cb.size() == 1){
					cardB = cb.remove(0);
				}else{
					cardB = cb.remove(rand.nextInt(cb.size()-1)+1);
				}
				if(cardA > cardB){
					scoreA += cardA + cardB;
				}else if(cardA < cardB){
					scoreB += cardA + cardB;
				}
				Collections.sort(ca);
				Collections.sort(cb);
			}
			if(scoreA > scoreB){
				winNum++;
			}
		}
		System.out.println(winNum/trial);
	}
}

class MyComp0 implements Comparator<int[]> {
	public int compare(int[] a, int[] b) {
		return a[0] - b[0];
	}
}

class MyComp1 implements Comparator<long[]> {
	public int compare(long[] a, long[] b) {
		return Long.compare(a[1], b[1]);
	}
}

class Reverse implements Comparator<Integer> {
	public int compare(Integer arg0, Integer arg1) {
		return arg1 - arg0;
	}
}

class Node{
	int id;
	List<Node> edge = new ArrayList<Node>();

	public Node(int id) {
		this.id = id;
	}

	public void createEdge(Node node) {
		edge.add(node);
	}
}

class ContestWriter {
	private PrintWriter out;

	public ContestWriter(String filename) throws IOException {
		out = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
	}

	public ContestWriter() throws IOException {
		out = new PrintWriter(System.out);
	}

	public void println(String str) {
		out.println(str);
	}

	public void print(String str) {
		out.print(str);
	}

	public void close() {
		out.close();
	}
}

class ContestScanner {
	private BufferedReader reader;
	private String[] line;
	private int idx;

	public ContestScanner() throws FileNotFoundException {
		reader = new BufferedReader(new InputStreamReader(System.in));
	}

	public ContestScanner(String filename) throws FileNotFoundException {
		reader = new BufferedReader(new InputStreamReader(new FileInputStream(
				filename)));
	}

	public String nextToken() throws IOException {
		if (line == null || line.length <= idx) {
			line = reader.readLine().trim().split(" ");
			idx = 0;
		}
		return line[idx++];
	}

	public long nextLong() throws IOException, NumberFormatException {
		return Long.parseLong(nextToken());
	}

	public int nextInt() throws NumberFormatException, IOException {
		return (int) nextLong();
	}

	public double nextDouble() throws NumberFormatException, IOException {
		return Double.parseDouble(nextToken());
	}
}
0