tshimizu's diary

日々の記録

競プロの記録 (2016_09_28, 29)と、初リリース

今日は、星1を14問解いた。

生活習慣が完全に破たんしてしまい、やるべきことが全然進んでいない。
4時ごろ寝て12時ごろに置きる癖がついてしまった。
睡眠時間の長さ自体は悪くないが、0時から4時までは全く有効に使えておらず、
昼過ぎに起きるとあきらめのような感情が心に沸き立ち、やる気が出ないことが非常にまずい。

B予選まであと11日。

(その他)
友人とUnityで作っていたゲームアプリの申請が通り、今日リリースされた。
これは自分にとっては大きな一歩だと思う。
口だけでくすぶり続けて長かったが、やっと一歩踏み出せた気がする。
ただ、UI部分や申請の手続きは友人に頼ってしまったし、
もっと大きな責任を持つような役割をできるようにならないとダメだ。
開発チームに後輩が2,3人入ることも決まったので、
自分が技術面で引っ張れるように力をつけたい。
自分にとっては、他人を責任感こそが、自分を成長させる原動力だと最近感じてるので、
この機会を十分に活用したい。
とりあえず、Android向けのリリースは自分でやり遂げたい。

ちなみに作ったのはこのアプリ。

逃げ切れ!ホコリくん!

逃げ切れ!ホコリくん!

  • Tatsuhito Takamiya
  • ゲーム
  • 無料

競プロの記録 (2016_09_26, 27) と、その他

昨日と今日は、二日間で星1を4問解くだけになってしまった。
言い訳をすると、友人との予定とゲーム作成のせい。
でも一番大きな計画遅延の原因は、生活リズムの崩壊かな。
朝起きないと、やっぱりやる気がイマイチでない。

「星1」

No.349 干支の置き物 - yukicoder

最大個数ある置物の個数についてさえ考えればよい。
その個数が(N+1)/2より大きくなければ、同じものが隣り合うことなくおける。
その個数の以下の他の置物については、最大個数の置物の間に最大一個ずつ押し込んでしまえばよい。


B予選まであと13日。2週間を切った。


(その他)

今日なぜかノートPCで、ブラウザでネットを閲覧できなかった。
トラブルシューティングで確認してみると、
DNSサーバが応答していません。」とのこと。
ネット自体はつながっている?
いろいろ調べてみたところ、アドレス欄にIPアドレス直接記入でページへ行くことが判明。
そしてDNSサーバはGoogleなどがフリーで公開しているようだったので、
そこに設定してみると無事解決した。

DNSサーバーの言葉は基本情報処理技術者とかで教科書的には勉強したけど、
イメージはかなりあいまいで実感がなかったが、今回の件でようやく感覚的にも理解できた。
「トラブルに自ら向かっていくような姿勢」でなければ、使える知識を身に付けるのはやはり難しいみたいだ。

競プロの記録 (2016_09_25)

今日は星1を15問解いた。

「星1」

No.239 にゃんぱすー - yukicoder

問題文には、「自分以外のすべての人に」と書かれていることは確認していたけど、
テスケースがそうなっていないように見間違えた。
テスト入力が行列形式の時は、間違いやすいのでしっかり確認したい。

No.256 桁の数字を入れ替え (2) - yukicoder

やることは簡単。各数字が何回出てきたかカウントしておくだけ。
ただ、 N<10^100000 の制約を見て、10^100000回計算が必要だと反射的に思ってしまった。
でも冷静に考えれば10^100000は1000000「文字(桁)」しかない。
普通にやれば全く問題がなかった。
このような勘違いをなくさないと、B予選での早解きは難しい。

No.279 木の数え上げ - yukicoder

問題自体はやるだけだが、3つの数のうち最小値を選ぶ際に、先日覚えた min(A,min(B,C)) がすぐに思いついて使えた点は良かった。


B予選まであと15日。

A予選の感想

C: 次のアルファベット / Next Letter - CODE FESTIVAL 2016 qual A | AtCoder

文字列を先頭から見ていって、できる限り'a'にするだけ。
あまりの操作数は最後の文字で調整する。
解法は割とすぐに気が付いたが、「もとから'a'」の時は例外とすることに気が付かなかった。
これで1時間半以上使ってしまい、結局解けなかった。
このような「境界」を常に考える力がまだ弱い。癖がついてない。


先ほどA予選に参加してきた。
結果は2完、812位。ひどい結果だ。
他人が着々と力をつけている間に、自分が何もせず、相対的に差が付いていることを思い知らされた。
自分がB3になったこともあり、上位に年下が多くなった。
自分が確実に年齢を重ねてしまっていいることを改めて意識させられ、それがまた悔しい。
ただ、ここで落ち込んでいると同じことの繰り返しになる。
また一年後に同じ場所にとどまっていることになる。
現実から目をそらしてはいけないが、自分の位置を冷静に確認した上で前を向いて、次の作戦を立てることが重要だ。
そして何よりも、行動すること、手を動かすことが必要だ。
口ではなく、手を動かす。

B予選までの計画。
というよりも、来年本選へ出場するための準備か?
いずれにしても次回の目標と、それまでにやるべきことは次のようにしたい。

(B予選での目標)
 ・3完(45分以内)
 ・順位550位以内
 ・レート:900以上

(やること)
 ・yukicoder(星1)を埋める。
 ・yukicoder(星2)を15問解く。
 ・ABCには必ず参加する。

この他に、もちろん再解答リストも消化する。
B予選では、今回のC問題くらいまでの難易度の問題を素早く、
また条件を抜かすことなく解けるようにするのがよさそうなので、
星1の問題をサクッと解けるようにすることに力を入れたい。
同時に、星2の問題で、少し考察する癖も消えないようにしておきたい。
B予選直前、そして来年に「これだけはやった」といえるようにしたい。
口だけの人間はもう嫌だ。

競プロの記録 (2016_09_24)

今日は星1を6問と、星2を1問解いた。
そのほか中途半端な星2が1問。

「yukicoder: 星2」

No.16 累乗の加算 - yukicoder

愚直にやると10^(2+8)で間に合わない。
指数が小さいほうから計算していき、その都度一つ前のものを利用していけば、毎回丸々指数の分だけ計算する必要は無くなる。
これにより、10^2+10^8で間に合う。
自分はこのやり方で通したが、「繰り返し二乗法」と呼ばれるやり方があるらしい。
これでN乗の計算が、O(N)からO(logN)になる。
どうしても、MODをとるのを忘れがちになるのを注意したい。

No.43 野球の試合 - yukicoder

これは解けなかった。試合数は高々15試合しかないので試す数は2^15 = O(10^4)となり、全探索することができる。
実装が長く、複雑になりそうなので、A予選を控える今日はやらない。方針は立っているので、後日実装しようと思う。

A予選まであと5分。

競プロの記録 (2016_09_23)

「yukicoder:星1」

yukicoder

N-1を言えれば勝ちである。
自分のターンと相手のターンで1セットとすると、1セットでK+1ずつ進めることができ、これが相手にとって最善であり、
(N-1)が(K+1)で割り切ることができれば相手の勝ちである。
それ以外なら自分の勝ちになる。
理解できる考え方だが、証明はどうやるんだろうか?
ちなみに、自分で実装した時は全探索でDPを用いた。
この辺のコードが比較的短い時間で、考えられるようになったのは成長だと思うが、この問題では計算時間的にACにならない。


今日は久しぶりに、短い時間(2時間程度)ながらも、「競プロのための時間」をとることができた。
これまでも、物理的に時間が取れなかったわけでなく、ただの精神的な甘えだったのだけれど。
昨日、ブログを書く際に、タイトル部分でまとめて書く日付の多さを見て、改めてサボっていた期間の長さを思い知った。
このように、自分の頑張りや生活態度を、小刻みに確認できるのが、ブログをこまめに書くことの利点だと思う。

内容としては、yukicoderの星1を3問と、星2を1問解いた。

A予選まであと1日。ついに明日。

競プロの記録 (2016_09_17,18,19,20,21,22)

この6日間で解いた問題は、yukicoder星1の3問のみ。
体調不良や、友人とのゲーム作成があったとはいえ、これはさすがにひどい。
一日の間、どのように時間を使っているかの記録を久しぶりにやったほうがいいかもしれない。
生活リズム自体が崩れている。

A予選まであと2日。