AtCoder Beginner Contest 274を振り返る。
実力
Rate:523(茶色)
https://atcoder.jp/users/osirukosan今回の目標
ABCの3完!Dは着手できたらOK!言語
Java
結果
無念の2完。
目標の3完できず、残念。悔しい。Rate変動
523 ⇨ 487
A問題 6分32秒でAC
小数下4桁目を四捨五入して回答する問題。
余裕。と言いたかったけど、特定の桁数で四捨五入する処理がすぐに出てこず、WEBで調べて回答。知っていれば、もっと早く回答できたと思う。
この辺の基本的な処理は、呼吸をするが如く出てくるようにしないとなぁ。
import java.util.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
// 入力読み込み
Scanner sc = new Scanner(System.in);
double A = sc.nextDouble();
double B = sc.nextDouble();
BigDecimal bd;
bd = new BigDecimal(B/A);
bd = bd.setScale(3, RoundingMode.HALF_UP);
System.out.println(bd);
sc.close();
}
}
B問題 14分8秒でAC
列ごとに、#の数を答える問題。
一度、char型の配列に移してから数え上げたが、そんなことせず、
入力から受け取った際に、数え上げればよかった。
最後の出力の部分もなんかダサいな。。もっと良い方法ありそう。
import java.util.*;
public class Main {
public static void main(String[] args) {
// 入力読み込み
Scanner sc = new Scanner(System.in);
int H = sc.nextInt();
int W = sc.nextInt();
boolean[][] C = new boolean[H][W];
for (int i = 0; i <H; i++) {
String S = sc.next();
for (int j = 0; j < W; j++) {
C[i][j] = S.charAt(j) == '#' ? true : false;
}
}
for (int i = 0; i < W; i++) {
int count = 0;
for (int j = 0; j < H; j++) {
if (C[j][i]) {
count++;
}
}
if(i == W-1){
System.out.println(count);
}else{
System.out.print(count+" ");
}
}
sc.close();
}
}
// Set<Long> list = new HashSet<>();
C問題 残り時間80分使ってACできず。。
増殖するアメーバに対して、先祖までに何回増殖したかを求める問題。
ここまでABを順調に倒してきたが、C問題で躓く。。
C問題を見た時、「動的計画法」だ!と錯覚し、その解法を探している間に時間切れ。。そもそも、C問題は、動的計画法を使用しないでよかった。
先頭のアメーバから順に、増殖先を記録していけば良いだけだった。
import java.util.*;
public class Main {
public static void main(String[] args) {
// 入力読み込み
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] A = new int[N];
int[] T = new int[2*N+1];
for (int i = 0; i < N; i++) {
A[i] = sc.nextInt();
}
for (int i = 0; i < N; i++) {
T[2*i+1] =T[A[i]-1]+1;
T[2*i+2] =T[A[i]-1]+1;
}
for (int i = 0; i < 2*N+1; i++) {
System.out.println(T[i]);
}
sc.close();
}
}
// Set<Long> list = new HashSet<>();
D問題 以下、着手できず
xy平面上にて、(0,0)から直角に距離Aを離して点を打っていき、最後に指定された座標に到達できるかを問う問題。
動的計画法にて解ける。解法のイメージはついているが、実装できるかと言われると、、、となってしまう。
ちなみに、このD問題を解くと、1400~1000くらいのレートになる。
水色になるためには、ここをサクッと解けるようになる必要がある。早くこれを解けるようになりたい。
E問題
bitDP問題。これを解ければ、1800~1500まで見えるくる。
解説を見てコードを見たが、よくわからん。。
解説動画待ちかな。
F問題
G問題
EX問題
問題文を正しく理解して、考察することができていない。
そもそも、解法への理解が甘いせいで、誤用してしまう。
さらに精進しよう。。