結果
| 問題 |
No.173 カードゲーム(Medium)
|
| コンテスト | |
| ユーザー |
threepipes_s
|
| 提出日時 | 2015-03-27 22:54:42 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 755 ms / 3,000 ms |
| コード長 | 3,623 bytes |
| コンパイル時間 | 2,432 ms |
| コンパイル使用メモリ | 81,184 KB |
| 実行使用メモリ | 52,432 KB |
| 最終ジャッジ日時 | 2024-06-29 01:27:16 |
| 合計ジャッジ時間 | 9,230 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 |
ソースコード
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 = 100000;
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());
}
}
threepipes_s