ゆるふわ競プロ

Javaでゆるゆる競プロしています.忘れっぽいのでメモ用,復習用

ABC087 B

問題 これ本当にBですか?? 難しすぎてわからなかった 考察 500円玉先に与えて作ってから500円玉を100円玉*5枚など小さいコインに変換して行こうとした。コーそもかけずよくわからず 解放 他人の解答チラ見してきたら天下の全探索を行なっていました。 for(50…

ABC103 D (Pair)

問題 橋を切断する問題。 解放 新しいクラスを作り(a,b)をbについて昇順にソートする. そこからは (a,b)のbの小さい方から見てbの直前の橋を切断していくを繰り返しました。 今回重要なのは考え方もそうだが新しいクラスの定義が重要でした。 正直言うとまだ…

ABC118 D (DP)

問題 DPの初歩的な問題でした。 解法 dp[i] : i本のマッチを使った時の最大桁数。 と定義してdp[N]を求めようと考えます.ここでは桁数だけを先に考えてあとで実際の数字になにが入るかを復元します。 dp[0] = 0 これが初期条件になる。マッチ0本を使って作…

ABC075 C (DFS)

問題 DFS の基礎の基礎 これができなきゃ話にならない 今回鍵となるのは変数をグローバル変数にすること staticメソッドとしてDFSを定義するので、DFS関数内で使用したい文字はグローバル変数として定義しておかなくてはならない. 入力のあたいの数が50と小…

ABC099 C (DP)

問題 DPの超初歩version 解説見ずにこの程度は解けるようにならなくてはならない DPについて DPは求める添字をnとすると1 ~ (n - 1)までの答えを知っているときに求める。 漸化式のようなものを作る 今回のような場合みたいに場合わけする必要がある場合もあ…

ABC080 D

問題 問題を理解するのは容易な問題である 細かい設定もないため実装するだけなのだが、実装方法が少々難しかった。 一定期間使っている録画機の最大数を求める問題である。 この問題は105という制約がついているので簡単になっている。 そう全探索すれば良…

ABC080 C (DPS)

問題 DPS問題 再帰呼び出しの練習になる 例外処理も含んでいる staticなグローバル変数の使用練習にもなる 難しいけど練習になる問題だった 今回は他人のコードの力を借りずに解説放送を頼りに自分で書いてみた 自分のコード public class Main { // 以下の…

ABC087 D

問題 DFSのようなもの 読むのも難しかった 考え方も難しい 操作については全探索しているイメージ 矛盾が所持たら終了 List配列を用いる面白い解答 解析解答 public class Main { static int n, m; // n : 人数 m: データ数 static int[] l, r, d; public st…

ABC088 D

問題 解析解答 入力操作 class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int H = scan.nextInt(); int W = scan.nextInt(); char[][] map = new char[H][W]; int count = 0; for(int i = 0;i < H;i++){ Stri…

ABC082

ABC082B 文字列の取り扱い char型に変換する。 char 文字の取り扱いができる問題 辞書配列的な何か

ABC081<map練習>

ABC081C mapの練習 参考 解き方が綺麗 Array.fill Setを使う Set これを使うと種類がすぐにわかる。 ABC081D 解説 考え方が難 実装できた 正負の違いに注目する必要性がある

ABC099<難問>

問題 AtCoder ある数字Nが与えられる。 1,6,36(62),216(63)....,9,81(92),729(93).... の総和で表すとき、項数をもっとも少なくする。項数を求めよ。 考察 N以下で最大の数を無理やり持って来ればいいのではないか。全探査のようにN以下で最大の6の累乗と9の…

ABC102<難問>

ABC102C この問題は手がつけられなかった。 AtCorder問題 自分の発想 for (int i = 0; i < n; i++) { a[i] = sc.nextInt(); b[i] = a[i] - (i + 1); } 要素全部を取得して、i + 1 番目なので i + 1 を引く。 その後、ある定数 b を引いて絶対値を取る。 ある…

ABC098

ABC098B AtCoder問題 考え方 考え方は全探査 全ての場所で区切って左右にある同じ文字を探します。今回は同じ種類の数を調べなくてはならないため、aa/aaで区切った時に重複して数えないことが大切。 コード 文字列の分割 for (int i = 1; i < n; i++) { x =…

ABC101

ABC101B AtCoder問題サイト 考え方 与えられた数字の列に対して一文字ずつ取り出し、加えて行く。 コード int count; for( int i = 0; i < 長さ ; i ++ ) { int a = Integer.ParseInt( String.substring( i ,i + 1); count += a; } 使用メソッド 返り値( int…

ABC108

ABC108C AtCoderサイト 考え方 a+bをkで割った時のあまりについて考える際に aをkで割ったあまりとbをkで割った時のあまりに分けて考える。 a,b共にkで割り切れる時a+bはkで割り切れる。a,bをkで割った余りが共にk/2の時も、a+bはkで割り切ることができる。 …