だいぶ久しぶりの投稿。
TopCoderに登録して、Practiceで何問か遊んでみました。
今回初めての競技プログラミングということで、とりあえずDIV2(簡単なほう)の250-point problem(簡単なやつ)を選択。
英語があまり読めなくて、これはダメか・・と思いましたが、
Problem Statementが読めなくても、Examplesの項目で入力例と出力例があって、ここから大体推測可能でした。
何問か解いていたら、200~230点/250点くらいとれるようになってきたので、
今日の〆に、500-point problem(SRM 146 DIV 2)に挑戦しました。
短かったけれど英文はほとんど読まず、Examplesに目を通すと、
どうやら格子の幅と高さが与えられて、その中に存在する長方形の数を数えろと言っているみたい。
悩んだ結果、下記のようなソースコードが書きあがり、428.67 points貰えました。
500点問題初クリア。うれしい。
public class RectangularGrid{
public long countRectangles(int width, int height){
long count = 0;
for (int i = 1; i <= width; i++){
for (int j = 1; j <= height; j++){
if (i == j) continue;
count += (width - i + 1) * (height - j + 1);
}
}
return count;
}
}
TopCoderに登録して、Practiceで何問か遊んでみました。
今回初めての競技プログラミングということで、とりあえずDIV2(簡単なほう)の250-point problem(簡単なやつ)を選択。
英語があまり読めなくて、これはダメか・・と思いましたが、
Problem Statementが読めなくても、Examplesの項目で入力例と出力例があって、ここから大体推測可能でした。
何問か解いていたら、200~230点/250点くらいとれるようになってきたので、
今日の〆に、500-point problem(SRM 146 DIV 2)に挑戦しました。
短かったけれど英文はほとんど読まず、Examplesに目を通すと、
どうやら格子の幅と高さが与えられて、その中に存在する長方形の数を数えろと言っているみたい。
悩んだ結果、下記のようなソースコードが書きあがり、428.67 points貰えました。
500点問題初クリア。うれしい。
public class RectangularGrid{
public long countRectangles(int width, int height){
long count = 0;
for (int i = 1; i <= width; i++){
for (int j = 1; j <= height; j++){
if (i == j) continue;
count += (width - i + 1) * (height - j + 1);
}
}
return count;
}
}