つちのこの日記

競プロと音ゲーがメインです。

AtCoderで青色になりました

こんにちは!つちのこです。折角AtCoderで青色になったので、色変記事を書きました(記録になるので) 色変記事の自己紹介や精進方法は本当に自己満足に近いと思いますが(そこらへんは十人十色なので)、身に付けたアルゴリズムやデータ構造等は青を目指す方にとって参考になると思うので、是非読んでくださると嬉しいです!

1.恒例の?自己紹介タイム

といっても特に書くことないんですよね、スペックとしては始めた時点でプログラミング完全未履修、数学は高校数学までは少しだけわかるくらいの感じでした。

折角なので、競プロを始めたきっかけについてでも書いておきます。大学受験期に競プロの存在を知って、単純にゲームとして面白そう!と思ったのがきっかけです。全くプログラミングはできない一からのスタートでしたが、APG4bのお陰でc++の書き方を学んでいき、どんどんハマっちゃいました。 ちょうど初めて4ヶ月と少しで最初の目標であった青コーダーにまでなれたのでよかったです。

 

2.身に付けたアルゴリズムやデータ構造

昔緑コーダーになった記事を出したんですが、それから沢山増えちゃいました。今使えるのはここらへんです。

  • DP、桁DP、bitDP(やや怪しい)
  • 最短路(ダイクストラ、ワーシャルフロイド、ベルマンフォード)
  • 最小全域木(クラスカル、プリム)
  • union-find
  • BIT、抽象化再帰セグ木
  • Mod演算(modintクラスを作りました)
  • ローリングハッシュ 
  • LCA
  • トポロジカルソート

あれ、実は全然ないですね、、、思い出したらその都度追記していきます(ごめんなさい)もしこれは知ってるでしょ、とか青コーダーならこれは最低限使えた方がいいよ!っていうのがあれば是非教えてください。

それぞれについて一言コメントも書いちゃいます。

まずDPですが、青コーダーを目指すならある程度出来た方がいいです。EDPCがかなり良い教材なのでおすすめです。

最短路は時々使います。そこまで難しくも無いので早めに使えるようになると良いかも?

最小全域木クラスカルでもプリムでも基本は良いですが、クラスカルの方がわかりやすい気がしました。

union-findはまあご存知の通りですね。構造体の中でもかなり作るのが平易なので、緑くらいになったら自作してみるといいかもです。

BIT、セグ木はAtCoderのコンテスト中にはほぼ使ったことがないですが、かなり便利なので持っておくと便利です。セグ木は非再帰の方が早いらしいのでこんど作り直したい、、

Modintはあると実装での事故が減り、簡潔にコードを書けるようになります。メリットがかなり大きいので勉強する価値はありそうです。

ロリハは使うと非想定だけど解ける問題がそこそこあるので、凄い子です。ハッシュの衝突には注意です!

LCAは実は使ったことが無いので何も言えません、、

トポロジカルソートはコドフォで一回使ったくらいですかね、割とわかりやすいので水くらいになったら覚えても良いかもです。

3.精進でやったこと

 AtCoder上で900問くらい解いたみたいです。緑になった時が500ACだったので、およそ1.8倍くらいですね。私はそこそこ解説ACに頼っちゃうタイプなので、多分2割くらいは解説ACしています(もちろん、時間をあけて自分の力でACはしています)。

これはいろんな人が言ってることなんですけど、精進や問題を解くのにはいろんな種類があって、例えば低難易度を早く解く練習をすると、コンテストでめちゃくちゃやらかして3完茶パフォだった。。。みたいな事故を減らすことができます。逆に高難易度にじっくり取り組む訓練をすると、時々難しい問題が解けて高いパフォが出たりします。あとは、例えばめちゃくちゃ昔のABC-Dなどは典型の塊なので、割とすぐに解説を見ちゃっても典型力を身に着けることができます。精進も惰性で続けるんじゃなくて、何を目的に精進をやっているのかその都度明確に考えながら行うのが、実力向上のためには非常に大切な気がしています。

ところで、最近はCodeforcesのバーチャルコンテスト機能を割と良く使っているのですが、フォロワーさんと競えたり初見の問題に沢山取り組むことができるので、力をつけるにはかなり有用な気がしています。今後もバチャは精進に取り入れていきたいなーって思ってます。

 4.終わりに

いつもフォロワーさんには色々と教えていただいたりバチャ並走していただいたり大変お世話になっています。年内黄コーダー目指して頑張る予定なので、何卒今後もよろしくお願いします!! 

Topcoderで暖色コーダー(黄色)になりました!!!

f:id:tsuchinok:20200726123609p:plain

 

こんにちは、昨日のコンテストが駄目駄目で悲しんでいるつちのこです。

 

黄色コーダーになるまでにやったこと

・div2に1回参加しました。

・結果を見たらなぜか自分の名前が黄色になってました(!??)

 

はやくAtCoderのBeginner卒業してコドフォも薄橙になりたいです。

おしまい。

 

入緑しました!!

こんにちは、つちのこと申します。AtCoderを初めて1ヶ月と少し、やっと緑レートになることができました!

f:id:tsuchinok:20200505133655p:plain

 

折角なのでこれまでに取り組んだことをメモしていきます。

 

1.まず自己紹介

 私は18歳の大学一年生で、一応理系、専攻は物理系な予定(なお進振り)で、情報系に進むつもりは今のところ特にないです。趣味としては競プロやピアノ、チェスや音ゲー等を軽くやっています。

プログラミングの経験は、小学生の頃Scratch(猫のあれです)を少し触ったり、中学生でBasicを本当に軽く触ったくらいなので今年の3月までほぼ0でした。また、プログラミングの素養がめっちゃありそうな、いわゆる数強でもありません(二次試験の数学2/3くらいしか取れてないですし、、) そういう人でも精進すれば1ヶ月ちょいで緑まで行けるんだよーっていうのが伝わって、みんな競プロ始めてくれると嬉しいです!(競プロはとても楽しいので)

 

2.これまでにやったこと

 まず、競プロを始める際使用言語で悩んだのですが、一番使用人数が多く解説が豊富にあり、高速なc++にしました。特にこだわりがない場合c++にしてみるのをお勧めします。

 その後はAtCoderさんのAPG4bを3章の途中まで読んでc++の基礎を勉強しました 。多分そこまで読み終わったのは3/29くらいです。APG4bはかなりわかりやすくとてもお勧めですが、一部内容が難しかったり章末問題がとても難しかったりするので、そういうところは飛ばしちゃって後で戻って来ればいいと思います。(私もめちゃくちゃ飛ばしました) 

 そこからはひたすらにAtCoder Problemsというサイトを使ってABCの過去問を埋めてきました。問題を考えて解いてみて、もしわからなかったら解説(Editorial.pdfだったりけんちょんさんのブログだったり)をみて勉強しての繰り返しです。で、これまでどんくらい問題を解いたかというと

f:id:tsuchinok:20200505131631p:plain

現時点で504ACらしいです、思ってたよりやっていましたね。ペースについては以下の画像の通りです。モチベの変動が激しいので、モチベが高い日は沢山解いてますが低い日は全然やってません、まあ趣味でやっているのでこんな感じでいいと思ってます。

f:id:tsuchinok:20200505131755p:plain

 解いた問題の内訳は以下の通りです、正直虚無埋め(ABC-AとかBとか)はそこまで実力に寄与するものではないはずなのでやってもやらなくてもいいと思います。

f:id:tsuchinok:20200505132106p:plain

 

 

3.現時点で使えるアルゴリズム、データ構造について

 今私が使えるアルゴリズムやデータ構造ですが、以下のものくらいだと思います。

・(優先度付き)キュー、スタック、連想配列

・二分探索

・貪欲法

・累積和、いもす法

・簡単なDFS,BFS

・二項定理(MOD付き)

・簡単なDP、桁DP

・簡単なグラフ(正直よくわかってないです)

 

最近のABCでは、頻出のアルゴリズムやデータ構造を知らなくても思考力で解ける問題(ABC165-D,E,ABC166-D,E,F等)が多い気がするので、正直緑まではそこまでアルゴリズムやデータ構造の知識が無くても行けると思います。それ以上は厳しそうなので勉強しないとまずいですけど、、

 

4.今後の目標

 早く入水して寒色コーダーになりたいです!

 

以上です、読んで頂きありがとうございました!周りの競プロerさん方からいつも刺激を貰っているので、早く追いつけるように精進頑張りたいです!

もしよければ下のスターを押してくださるととても嬉しいです!

 

 

 

目指せ!業SSS!!!【チュウニズム】

 こんにちは!音ゲーとか色々やってるつちのこといいます。最近コロナでウニ出来なくて時間あるのでブログ始めました!これからよろしくお願いします、それでは今回の本題に参りましょう!

 業 -善なる神とこの世の悪について- SSS攻略!!!

f:id:tsuchinok:20200401155756j:plain

 ということで譜面それぞれのパートの説明をしていきます!その前に

 <注意!>

 僕より上手い人、並びに業9000とかそれ以上目指す人には参考にならない可能性が非常に高いです!(あくまでも鳥狙いの記事なので)そこはご容赦ください。

 前書きが長くなってしまいましたね、そろそろ飽きてきてると思うので譜面攻略していきましょう!

 

5−6小節 

f:id:tsuchinok:20200331222555j:plain

図1

 いきなりきました、少しむずい場所です。6小節目の最初(図1の水色線ですね)で認識を区切ると押しやすいです。(認識を区切るとは、5小節目まではトリルだと認識し、6小節目では両手トリルに認識を切り替えるということです)

 

23小節目

f:id:tsuchinok:20200401154349j:plain

図2

 24分(とてもはやい)→16分(少し早い)→12分(かなりゆっくり)のリズムをめちゃくちゃ意識しましょう!譜面確認動画でリズムを聴き込むのがおすすめです。

 

25,29小節目

f:id:tsuchinok:20200331222951j:plain

図3

 個人的にかなり苦手でした、水色で塗ったタップを親指、黄色で塗ったタップを人差し指で押すとやりやすかったです。

 

35,37,39小節

 

f:id:tsuchinok:20200401154904j:plain

            図4

 フリック後のタップが非常に巻き込みやすいです、フリックはかなり早めになぞってもアタックは出ないので巻き込み防止におすすめです。

 

48,52小節

 

f:id:tsuchinok:20200331224451j:plain

図5-1

f:id:tsuchinok:20200331223416j:plain

図5-2

 癖がついてきた時のために二つの認識方法を置いておきます。一般的な話として、認識を変えると癖を消しやすいので、認識の仕方は色々持っておくと便利な気がします。

  ここから発狂までは見たまんまやっているので特に書きません。(後で僕の元気or誰かの要望があれば加筆するかもしれません)

 

 94,95小節

f:id:tsuchinok:20200331225647j:plain

図6

 すごい”業”って感じの譜面ですね(適当) 僕は試していないのですが、動画で擦り運指沢山上がっているので、擦ってみたい人はyoutubeかなんかで調べてみてください。 僕みたいに擦りは苦手だけどこんなの押せねえって人におすすめなのが 必殺!空打ち です。(図6参照) 片手トリルと8分だけで取れるので、譜面が見えなくても何とかなりやすいです。

 

97小節

 

f:id:tsuchinok:20200331230006j:plain

図7

 パンピーには押せません、大人しく擦りましょう… 擦る時はかなり遅め(特に五鍵の折り返し)を強く意識しましょう。

 

98−101小節

 僕は出来ません、誰か助けてください

 

102,103小節

 

f:id:tsuchinok:20200331230207j:plain

図8

 押せない場合は餡蜜でも取れるらしいです(未検証) 押す場合は図8のように認識を区切ることがとても大切です。というのも業のBPMは190で、似たような配置があるキリングや怒槌(共にBPM200です)に比べてゆっくりなので、ぼーっと押してるとfastを量産して死にます😭認識を区切ると途中の両手トリルも少しは押しやすいかなと思います(途中の5鍵は何とか頑張りましょう。)

 

111小節

f:id:tsuchinok:20200331230537j:plain

図9

 業最後の難所にして、たくさんの人を殺してきた極悪地帯です、、沢山運指はあるんですが、ラストの緊張の中擦りはきつい!っていう僕みたいな人向けの指押しおすすめ運指が図9です。

 

 というわけで解説は以上です!ブログを書くのは初めてなので中々読みづらい感じになってしまったかもですが、この記事が業鳥やSSなど目指す方の一助となればとても幸いです!それではまたお会いしましょう!!  

          つちのこ(Twitter:@T__tsuchinoko)

 

追記

 ブログ執筆のモチベになるので、この記事参考になった!orここ改善した方がいいよ!という方はここのコメorツイッター等で何らかのフィードバックを頂けると僕が喜びます!また質問等も大歓迎です!

 

 本記事中の画像はチュウニズム譜面保管所(https://www.sdvx.in/chunithm.html)さんからお借りいたしました、この場を借りて厚く御礼申し上げます。