Java初心者の競技プログラミング日記

Dvorak配列でjavaを書いてます

yukicoder

yukicoder No.688 E869120 and Constructing Array 2

方針 ・0と1の順番は関係ないので、リストに1を適当個詰めたあと、0を適当個詰めて、出力する ・ここでは便宜上、1を「2を作るための数」と定義し、0を「組み合わせを増やすための数」と定義する。 ・合計が2になるには、1が少なくとも2個は必要。 →k=0のと…

No.240 ナイト散歩

方針 ・問題文にある8座標にそれぞれ分岐していくような再帰関数を書く import static java.lang.System.*; import java.util.*; public class Main { static Scanner sc = new Scanner(System.in); static int gx = sc.nextInt(); static int gy = sc.nextI…

No.351 市松スライドパズル

逆シミュレーションする。求めたいのは「最終的に左上のマスが何色であったか」なので、「最終盤面の左上のマスは、最初の盤面のどの位置から運ばれてきたか」を考える。最終盤面の左上のマスの座標をx=0,y=0とおく。操作を後ろから順に行っていって、Rの番…

No.8 N言っちゃダメゲーム

n=20,k=4の場合を考えてみることにする。他のかたの解説にもある通り、先攻が勝つためには最後のターンでn-1(ここでは19)を言うのが望ましい。なぜなら、先攻がn-1を言ったとき、次に後攻はn-1にkを足した値(kは1以上)を言わなければならず、必ずn以上(…

yukicoder No.539 インクリメント

解くのに3時間くらいかかったが、得られたものはそこそこあった。 この問題、一見すると最後尾の整数を1増やせばいいだけのように思えるが、実際はもっと複雑な解法を要求されている。コードの中で一つ一つ解説する前に、大まかな攻略方針を示したいと思う。…

yukicoder No.652 E869120 and TimeZone

A問題に引き続いて時刻の問題。 import java.util.*; import static java.lang.System.*; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { int h = sc.nextInt(); int m = sc.nextInt(); String…

yukicoder No.651 E869120 and Driving

はじめてyukicoderコンテストに出場しました。結果はABC完答、DE放棄。 時速100kmでakm移動したときにかかる時間は。a/100時間。小数の問題があるのと、どちらにせよこのあと現在時刻にかかった時間を足して計算しなければならないので、分に直す。 目的地に…

yukicoder No.457 (^^*)

左カッコ一つ一つに対して、文字列の最後まで探索し、その間に現れる左向きと右向きの数を数え上げる。 import java.util.*; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { String s = sc.nex…

yukicoder No.508 超ゆとり教育

解説にもある通り、与えられる面積の最高値(10^12)であっても、円周率を3として計算してみると、大体570000くらいになる。よって、たとえ1を出力しようが999を出力しようが、誤差は1000000以内に抑えられてしまう。1~1000001までの正整数を出力しておけば…

yukicoder No.628 Tagの勢い

要はどうやってマップを値でソートするか、だと思う。自分はマップを値でソートする方法が全く分かっていなかったので、これまでは、こういう問題が出たときには、キーに数値、値に文字列を入れてキーでソートして解いてきた。値でソートするよりも、キーで…