新宿でランチ、Codeforces Round #185

今日は親と新宿で焼肉店のランチに行った。

f0019846_1556825.jpg


f0019846_15562592.jpg


f0019846_15563351.jpg


f0019846_15564563.jpg


f0019846_1556592.jpg


f0019846_1557975.jpg


f0019846_15572452.jpg


f0019846_15573294.jpg


野菜がバイキング形式で沢山食べられました。悪くないです。

その後は新宿タイトーGWへ。

f0019846_15582479.jpg

High School Love(A)フルコン

友人と合流し、リフレクなど。
f0019846_1559381.jpg

めうめうぺったんたん! 96.6%

f0019846_1559288.jpg

灼熱 85.8%

f0019846_15594779.jpg

FLOWER 87.5%

f0019846_160924.jpg

まほろば教 82.1% フルコン

f0019846_1603833.jpg

蛇神 91.1% 1miss

その後はDDRへ。
f0019846_1612111.jpg

A Geisha's Dream AAA

f0019846_1614292.jpg

めうめうぺったんたん! AAA

帰路につき、地元ゲーセンではポップンをメインに。

f0019846_1623615.jpg

亜空間ジャズ (HYPER)フルコン

f0019846_16326.jpg

アドレッセンス(EX)フルコン

f0019846_1634369.jpg

イークリニック(EX)フルコン

f0019846_16452.jpg

ヴィジュアルリミックス(EX)フルコン

f0019846_1643422.jpg

亜空間ジャズ(EX)初クリア!

f0019846_165114.jpg

ウィッシュ(EX)フルコン

f0019846_1653687.jpg

敬老パンクは無理でした。

帰宅後はCodeforces #185。

A問題は、Fredaは文章の最後にlala.といい、Rainbowは文章の最初にmiao.という。
どっちなのか判定せよという問題。
片方合致で出力、両方合致と合致しないのはダメと条件分岐するだけでok。


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main2 {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
input.nextLine();
for(int i = 0 ; i < n ; i++){
System.out.println(sentence(input.nextLine()));
}
}

public static String sentence(String s){
if(s.length() < 5 || (s.substring(s.length()-5,s.length()).equals("lala.") && s.substring(0,5).equals("miao.")))return "OMG>.< I don't know!";
if(s.substring(s.length()-5,s.length()).equals("lala."))return "Freda's";
if(s.substring(0,5).equals("miao."))return "Rainbow's";
return "OMG>.< I don't know!";
}

}


B問題は、先行はa/bの確率、後攻はc/dの確率で的を射る。
的を射るまで延々と行う場合、先行が勝利する確率を求めよという問題。


××○
××××○
といったように実際にシミュレートしてしまうのが早い。
回数が甘いと正確な値が出ない。


import java.util.Scanner;

public class Main2 {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
double a = input.nextInt();
double b = input.nextInt();
double c = input.nextInt();
double d = input.nextInt();
System.out.println(sentence(a,b,c,d));

}

public static double sentence(double a,double b,double c,double d){
int turn = 0;
double sump = 0;
double probable = 1;
while(turn != 10000){
sump += probable*(a/b);
probable *= (1-a/b);
probable *= (1-c/d);
turn++;
}
return sump;
}

}


C問題は、いくつかのポイントがあって、二点距離の最小値を求めるアルゴリズムが書かれている。
点の数が与えられる時、時間k以上となるようなテストケースがあるならそれを与えよ、ないなら
no solutionと出力せよという問題。

最大時間がすべて実行できるn*(n-1)/2より大きかったら
必ずうまくいくので答えはない。
そして、アルゴリズムをよく見ると、yについては考慮されていないので、
xを同じ値にして、yを1ずつ増加させればよい。


import java.util.Scanner;

public class Main2 {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int k = input.nextInt();
sentence(n,k);

}

public static void sentence(int n,int k){
if(n == 2 || k >= (n*(n-1))/2){
System.out.println("no solution");
}else{
for(int i = 0 ; i < n ; i++){
System.out.println(0+" "+i);
}
}
}

}


Dは問題読んで解けなさそう、Eは途中まで書いてましたが、テスト2で落ちました。

  by ddrer-yossi | 2013-05-26 23:52 | codeforces | Comments(0)

<< 仕事のちゲーセン TopCoder SRM580... >>

SEM SKIN - DESIGN by SEM EXE