大雪 codeforces #110

今日は朝見てみたら雪が降り積もっていて荒れ模様でした。
近所の子供がわーいゆきだゆきだーとか言うけど、まったく嬉しくありません。
それどころか靴がびしょぬれになって非常に憎いです。
なぜこんな日に限って仕事が・・・。

ということでお昼はきのこペペロンチーノで。これが大好きです。
(3月現在はもうやっていません)

f0019846_1845157.jpg


夜は雪も解けていてわりとまともになっていたので、ゲーセンへ。

f0019846_18445287.jpg


が、ゲーセンでイヤホンのイヤーピースが両方共なくなりました。
片方は後々見つかりましたが、もう片方は完全に落としたようです。
とても残念でした。

そしてcodeforces#110をレジストして開始。

A問題 そのマス目の行と列をみて列のほうが多い部分を数えるだけ。

import java.util.Scanner;

public class Test {

public static void main(String args[]){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[][] math = new int[n][n];
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < n ; j++){
math[i][j] = input.nextInt();
}
}
System.out.println(lucky(n,math));
}

public static int lucky(int n,int[][] math){
int count = 0;
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < n ; j++){
int col = 0;
int row = 0;
for(int k = 0 ; k < n ; k++){
col += math[i][k];
row += math[k][j];
}
if(row > col)count++;
}
}
return count;
}

}

B問題。
赤と青でターゲットのように塗りつぶす。
一番外側は青で固定。交互に塗りつぶした時の赤の面積を求める。

import java.util.Scanner;

public class Test {

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

public static double lucky(int n,int[] circles){
Arrays.sort(circles);
double sum = 0;
int count = 0;
for(int i = circles.length-1 ; i >= 0 ; i--){
if(count % 2 == 0){
sum += (circles[i]*circles[i]);
}else{
sum -= (circles[i]*circles[i]);
}
count++;
}
return Math.PI*sum;
}

}

C問題 any end of the stringの解釈を間違える。
実はこれ、始まりと終わり両方を指すというオチ。

最後に文字を付け加える、もしくは最初か最後の文字を消すもしくは文字を変更する
これらの動作を1ターン1回として行い、与えられた文字列から目的の文字列を部分列として出すのに
最少何回かかるかを求める。

D問題 読んだけど無理。
容疑者を指す番号と容疑者でないを指す番号があって、
それぞれが主張している。 何人の容疑者がいて、何人が正しいことを言っているかだけわかる。
その人が嘘を言っているか本当のことを言っているか、それとも判別できないか
それぞれ判定せよ。

  by ddrer-yossi | 2012-02-29 23:41 | codeforces | Comments(0)

<< 修正原稿の提出へ 文章の修正 >>

SEM SKIN - DESIGN by SEM EXE