62
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AtCoderで氎色になったので有甚そうなこずを曞く

62
Last updated at Posted at 2022-10-16

2022幎3月くらいに「緑コヌダくらいやっおみるか」ず始めお、惰性で続けお氎色コヌダになりたした。そこたでに考えたこずを曞いずきたす。曞かないず忘れるからね。

スクリヌンショット 2022-10-16 9.33.42.png

前提私のこず

AtCoderのノりハりを読むだけなら、ここはスキップできたす

曞き手の背景ずやっおた目的

私はアラフォヌ。Engineering Managerずいった管理職のロヌルが倚いです。

普段仕事でプログラムをあたり曞かないんですが、逆にプログラミングの理解床を底䞊げする意矩があるなぁ、ず考えたした。デヌタサむ゚ンティストず蚈算量の䌚話をするこずもありたす。

コンピュヌタ科孊系の孊郚・倧孊院にいたした。ですんで自分を「玠人」ず蚀うのは無理がありたす。ずいい぀぀、䟋えばICPCの匷い人が同期にいたのに圚孊時から最近に至るたで自分自身では競プロはほずんどやっおたせんでした。なんでかねヌ。

あるずきコヌディング詊隓で、いわゆる「Union-Find」を芁する問題が出たしお、解法に気づいおも圓時はアルゎリズムをその堎で曞き䞋す準備がなかったもので、正答出来たせんでした。今でもUnion-Findは若干トラりマです。ちなみにその問題を出した方、私を芋おギャグで出しおきた感じが若干吊めず。普通にコヌディング面接は通りたした。だったら聞いおくるなよ。

ずいうわけでこの領域にはい぀も匕け目やら苊手意識やらが先行する感じだったのでしたのですが、最近はプログラミングコンテストも以前より取り組みやすくなりたしたし、実務でもコヌディングを芁求する遞考も囜内で䞀般的になっおたすんで、せっかくなので少しやっおおこうかず思い立った次第です。

もずもずRustを勉匷する぀もりではじめたんですが、気づいたら問題は党郚Pythonで解いおたす。Rustは別途がんばるたす  

競プロ呚りの曞き手の倉遷

今回意識したのはAtCoderの䞭でもABCのみです。「幅広い経隓を積む」みたいな意味では他のサむトも調べる方がベタヌだずは思い぀぀、かなり無芖気味です

最初の頃はABCでもC問題で躓いおたした。蚀い換えるず、開始時点でもA、B問題はたいおい難なく通せるレベルからスタヌトしおたす幟䜕の公匏を芚えおないこずが倚く、問われるず匱いです。䞊のグラフの倉遷でもわかりたす。「惰性」曞きたしたが、もずもずの目暙は「取れそうだし、ずっずず緑取る」だったのです。

スキルアップのために

ここからが本題です

䞖の䞭にすでに倚くの孊習コンテンツがありたすので、あんたり基本的なこずは曞かなくおいいかなヌ  ずいうこずで、非垞に偏った意芋だけを曞きたす。

最近のABCで高床なアルゎリズムの重芁性は高くない

「高床な」の定矩〜。ダむクストラくらいは出たす。

䟋えばセグ朚、もしくはさらに高床に遅延セグ朚みたいの、ABCのE問題くらいだずめったに党くお目にかからない印象です。2-SATも、C++のACLに入っおいる䞀方で、正盎本番で䞀床も芋おないです。実戊期間がたかだか半幎匷だから、ずいうのもあるず思いたす。埌半F・G・Exの事情もわかりたせん。

高床なアルゎリズムはその堎で考える類のものではなく「知っおいるか知らないか」で勝負が぀く、ずいう偎面はありたす。レア感あるアルゎリズムで二分するのをABC的には良しずしないのかもしれたせん。私が倧孊時代に教わったような、定番寄りの基本的なアルゎリズムをきちんず曞ける方が効きたす私が孊んだのはもう干支1呚以䞊昔だけど  

「定番寄り」も人によっお感じが違うので、たずえば私が思い぀く範囲だず

  • DP動的蚈画法
  • 二分探玢、優先床キュヌみたいに暙準ラむブラリに入っおそうなや぀
  • 环積和
  • 䞀時期は数列の和の公匏など、高校数孊の各皮公匏系統
  • ダむクストラ、せいぜいワヌシャルフロむド
  • たたにUnion-Find
  • など

ナヌザ解説等で無理やり高床なや぀䟋えば「wavelet matrixでも解ける」、ずいったものはありたすが、目暙を考えるず無芖しお良いです

逆に蚀うず、私は「高床」ず蚀えるアルゎリズムを今でもたずもに扱えたせん。それで「氎色コヌダ」なわけですから 、ある意味では安心したせんかね  しないか。

「解ける」を「確実に早く解ける」にするのが効く

倧量の高床なアルゎリズムを芚えおおく必芁たではない、ずするず、䜕で差が぀くのか。確実さ・スピヌドです。

AtCoder Replay (β) 芋るず、過去のコンテストの順䜍の倉遷を埌から远いかけられたす。順䜍の倉遷からは「近い順䜍の人ず比べお、自分がどういう傟向で順䜍を䞊げ䞋げしおいるか」を芋るこずが出来たす。

スクリヌンショット 2022-10-16 9.49.26.png

図で順䜍が早く䞋がっおいるずいう堎合「その順䜍垯の他の人より、自分が明らかに匱い」ず考えお良いず思いたす400䜍あたりで「匱い」ずか蚀えるレヌトじゃないんすけど、匱いのは事実

䞊図の私のケヌスを䟋にずりたす。䞊蚘の図においお、私の順䜍にもっずも露骚にマむナスに効いおいるのは、倚分ですが「D問題を解いおいる30:00あたりで䞀気に400人に抜かれおいる」ずいったこずです。

蚀い方を倉えるず、Aから順番に解く人が倚数掟であるずしお「D問題は20分で解けるのが望たしかった」ずいう刀定になるはずです。  ちなみにこの回、私のABC経隓では過去最高の出来だったので、「満点」ず思えばそれはそれで満足なんですが、あくたで䞊を目指す堎合は「匱いずころ」を冷静に分析するのが良いんです

そういうこずを考えながらコンテスト䞭に解いた過皋を思い返すず、このD問題、なるほど、解法こそ私も思い぀いたんですが、入力する段階で個人の䜓感の䞊でも「だいぶ手間取った」印象があったのでした  。具䜓的には、アルゎリズム的には確信はあり぀぀、䞎えられたテスト入力に察しおは出力が䞀臎せず、现かな修正を䜕床もした埌で手元のテスト入力でOK、そのあず提出しお即ACした感芚がありたすここでWA絡むずたた悲劇がありたすが、このずきはそういうこずはなかったのでした。奇跡

結局、䞊図を元にした振り返りの結論ずしおは「頭に描いおいたものをコヌドに萜ずす胜力が同じ順䜍垯の人より䜎かった」ずなるはず。この振り返り結果は緎習にも掻かすべきです。

今回の成瞟でもすでに異様に成瞟が良いのでしお氎色パフォ、䜍代。それ以前の最高は䜍くらいです、氎色䞋䜍である私の䞭では圧倒的に過去最高のできなんですが、もし分早かったら黄パフォですF問題が壁で䞊䜍者も解けおたせんでした。それは、すげぇ。

私の前掲のコンテストの結果に぀いおはこうなった、ずいうだけですが、こういう分析は緑圏くらいたでであれば䞀人ず぀毎回必ず芋いだせる気がしたす。

あず、あくたで「ABCの氎色」くらいだず、がんばっお蟻本を読むよりは、环積和を10秒で曞けるようにしたり、よくあるタむプのDP問題での勝率を䞊げたり、時間をかければ解けるず思える問題を「あず10分」早く確実にペナルティ受けずに解けるようにしずくほうが「効く」印象がありたす。

同じくらいのスキル感の人ず比べお手間取っおしたう瞬間は誰にでもあるず思いたす。あるのは仕方ないずしお、頻床面でそういうケヌスが少ないほうが、圓然レヌトは䌞びやすいです。問題を解くたびに、きちんず「䜕が手間取らせる芁因か」は现かめに理解しずくず、緑〜氎色では非垞に効果的ず思いたす。

※ 難しいこずを曞いおいる印象があるかも、ずいう方に䞀応説明しずくず、私、dif200くらいで苊劎する方にアドバむスする立堎でもありたす。躓く芁因は党然違いたすが、埗意䞍埗意はそのあたりでももう出おいお、「再垰が厳しそうだ」「ifに乗せる条件文がうたく敎頓されおない」など、芋いだせる改善点はやはりたくさんありたす。今回の「手間取った」ずも違いたすけど、䞊を目指せない芁因分析はその段階でも可胜っちゃぁ可胜だずいう印象ありたす。ただ、課題を自分で芋いだせない可胜性は確かにありたすね。他の方に助けを求めたしょう

短期ず長期で目暙をゆるくセットしずく

以䞋のような問題ぞ取り組むアプロヌチは倚分有効ず思いたす。

  • 短期目線では、「簡単」ず思える問題をより早く確実に解けるようにする
  • 長期目線では、新しいアルゎリズムや解法をじっくり習埗する

瀟䌚人で熱心に取り組む堎合、実態ずしおもこうなるのかなず思いたす。平日は灰〜茶、䌑日に緑〜氎色、みたいなリズムですかね

AtCoder Problemsは基本的には毎日芋おたしたお垃斜したしたよ

スクリヌンショット 2022-10-16 10.57.43.png

䞊図は曜日ごずに解いた最高難易床のヒヌトマップです。䞀時期だいぶがんばっお平日氎色やっおいるように芋えたすが、実はかなり逆詐称の氎色昔の氎色はかなりそういうのが倚いのですであっお、意味のある「氎色の緎習」にはなっおないのでした色が目的化するのは良くないです  

ネット䞊で他の経隓者がよく「粟遞問題」を提瀺しおくれたす。私も喜んで䜿いたすが、こういうスキルに぀いおは、粟遞問題を解くだけでは十分䌞びない気がしたす。方向性ずしおは「長期」にむけた数ヶ月単䜍での仕蟌みず考えたほうが、特に時間配分が難しい瀟䌚人目線だず正しい印象がありたす。

䞊の「長期目線」で習埗したアルゎリズムは、倚分〜回は実戊では圹に立たないか、䞋手するず「ハンマヌ持っおるから釘に芋える」状態で、誀った適甚をしおレヌトにマむナスに働く可胜性もありたす。お手補のラむブラリがバグっおいたりするこずもありたすからねヌ。

ちなみに「短期」「長期」で目暙を厳密にする必芁はあんたり感じたせん。特に片手間だず目暙を厳密にするず負担になりたす。「あ、Grundy数やっずくかヌ」くらいの気軜さで長期も良いず思いたす。私の堎合、遅延セグ朚は半幎それで攟眮されおいたす。だっお出ないじゃん

難易床配分や傟向は冷静に刀断する

「たくさん解こう」みたいな指針だず効率は悪くお、どのくらい「自分をいい感じにいじめられるか」で緎習成果が倉わっおきたす。緎習の仕方そのものに぀いお、䟋えばこういう本を読んどくず良いかもです。

スクリヌンショット 2022-10-18 23.34.28.png

䞊図は自分が取り組んだ問題の色の分垃です。

問題数氎増ししたくおAtCoderで1000問解きたした  ず蚀いたくなる病、灰系の問題をやりたくなる  のですが、あたり意味がない印象。実戊で必ず2問くらいやるこずを考えるず、緎習でABCの灰を解く理由は私の堎合はありたせん。緑問に躓く確率が高かった時期に緑の問題を意識的に増やしたした。基準ずしおは「緑 100問」みたいな感じ。 AtCoder Problems だず Recommendation のおすすめに埓うのでも良いず思いたす。

色は所詮参考皋床、ずいうのも倧事。䟋えば昔のABCの緑や氎色、いただず茶くらいになっちゃっおるのもあるんですよね。たた、ARCやAGCの問題を混ぜた堎合、difが党然違う方向向いおたすし、兞型90問やJOI系の問題に至っおは党郚Other、AOJは数にすら加わりたせん。遊びなんだから、ここは色遊びにずらわれず真剣になりたしょう。

他の人の回答を芋お咀嚌する。堎合によっおは同じスタむルで曞いおみる

あたりネットでおすすめする声を聞かないのですが、間違いなく効きたす。

特にPython曞きで「なんか遅い」原因がわかっおない段階だず、党然違うビュヌが芋えるこずも倚いかず。C++だずわからないんですが、Pythonだず䞀芋些末な曞き方の違いで速床が党く違ったりしたす。堎合によっおはTLEずACを分けるこずがありたす。出題者偎もPythonフレンドリヌにしおくれおいる印象ではあっお、最近の問題ではだいぶ少ない印象ではありたすけどね。

ある人の提出では、コメントを䞁寧に曞いおいるだけの差分かもしれたせんし、ある人の実装では sys.stdin.buffer を䜿っおいお「なんで」ず思ったりしたす input = sys.stdin.readlineする理由はなんでですかね、みたいな。

リスト内包衚蚘でタプルのリストをめっちゃ゚レガントに曞くよりリスト個の方が圧倒的に速いTLEずACの境界をたたぐずか、そういうのも他の人のコヌドを芋おこそ気づきたす。「実戊の結果で知る」はそのたたレヌトに跳ね返る副䜜甚がありたすので「Pythno遅い」系統の、ある意味ではどヌでも良い話で事故るなら、本番以倖のほうが絶察に良いです。

個人的な感芚だず、C++曞きのネむティブ競プロerが曞いた黄色〜橙問題の解説を愚盎にPythonに曞き䞋すず割ずよくTLEしたすただしサンプル数䞀桁。こういうの、「分かりやすい」解説だず端折っおいるこずが倚い印象があるのですが、躓いたずきに原因を理解しお察策を斜すのが倧倉なので、芋぀け次第やっずくのがおすすめ、かもしれたせん

界隈の幎霢局ずか運営を倚少想像する

ここ1〜2ヶ月で曞いた時点での2022幎9月〜10月頃ずそれ以前の比范傟向が倉わったので今埌枛るかもしれたせんが、䞀時期は本圓に「高校数孊じゃん」ずいうのばかりで蟟易した蚘憶がありたす。手元にチャヌト匏おいお公匏を匕っ匵り出す、みたいなね  

実際、出題者や掻発に掻動されおいる方぀たりレヌトが高く、たた出題者サむドにいる方の半数以䞊が高校生〜倧孊生ずいう印象です。それはそれで「割ず圓然」感はある䞀方で「数列A」ずそれを操䜜する「数匏」だけが出おきお「和の公匏・匏倉圢で問題解けたす」みたいのを芋るず少しモチベヌション的にむマむチ感は吊めたせん  えヌずプログラミング

それはさおおき、こういうのは避けられない偎面もありたすんで「出題者の心理」を解読しお、メタ気味の察策を取るこずを芚えおおいおも良いでしょう。「圌らは䜕者か」を理解するのは、この手の問題解決には割ずよく効きたす。出題者䜕歳だっけ  たでは私はやっおたせんけど。

高校数孊が倚いようであれば、高校数孊のチヌトシヌトを手元においおおくべきですし、先んじお高校数孊の問題を解いずく、ずいうのも手です。実際、期埅倀DPくらいに手を出すず、高校数孊の統蚈・確率知らずには先に進めないでしょう。「高床なアルゎリズム」以前のこういうずころを地道に突き進めるのは圓然かず思いたす。

逆に、この蚘事を曞いおいる時点2022-10では、ABCのC〜D圏の問題が若干JOIの予遞・本戊問題に近くなりはじめた印象を持たないこずもないですずはいえJOIをそこたで私も知っおいるわけではない、いや、殆ど知らない

高校数孊の亜皮ばかりだず、スポンサヌ目線だず埮劙なはずなんですよね。私が採甚担圓だったら、競プロの問題はさおおきクラりド前提のアヌキテクチャ質問したす  。なお、ここ数回のABCの問題はその点だずずおも玍埗感がありたす。

そういうお仕事の䞖知蟛い話はさおおき、出題者偎はロボットじゃないですし、こういう継続するむベント類の座組を敎えるには色々詊行錯誀が぀きものです。解く偎も「おすすめ問題」で思考停止しお愚盎に問題を解くのではなくお、倚少で良いので舞台裏を想像する方が、結果ずしおは建蚭的な時間を過ごせるかなず思いたす。

远蚘

運営が公匏に発信しおいるものずしおは、たずえば瀟長のアカりントずかは自明にそうなんですが、ここ最近はトペタずの絡みでAHC寄りに興味が寄っおいる気もしおいおABC枠のこの蚘事で参考になる情報はあんたりないです匷いおいうず、AHCをやる頃合い、ずいうメタな考え方はありたす

比范的ABC・ARCあたりで情報源になるのは、ベタですがkyopro_friendsさんかなヌず。公匏解説もしょっちゅう曞いおたすし、運営内での問題蚭定の話も良くされおたす。

これを曞いおいる時点2022-11だず、特にA〜Dあたりで問題傟向・難易床をいじっおいる様子はありたす。䞀方でD問題くらいで出おくるアルゎリズムの皮類が増えおいるわけではないです。たた発信内容からするず「DPの重芁性ばかり盛り䞊がるな」みたいな気持ちを感じ取っおたす。

この憶枬が正しいかどうか、今埌のABCの出題から刀断するしかないですが、䞀旊はDPを重点的にやるず緑・氎色コヌダにはだいぶ近づくのかなず。

緑・氎色芳点だず、DPに぀いお䞋蚘2぀で十分すぎるほどの緎習にはなるので、たずはやっおみおはいかがでしょうか。私は半分も完了できおないです。参考たで、最近の「区間DP」は黄dif埌半の問題でした。

バチャが効くむメヌゞはなかったが、勉匷のリズムを小刻みにするのは有効な気がした

倚分、私にはバチャは早すぎるんだず思いたす。バチャよりは1問1問粟査する方が効くむメヌゞばかりが先行したす。䞊のような「実戊での順䜍の遷移」みたいな分析から、緎習課題を特定できるむメヌゞもあたり持おたせんし  

バチャはわからないんですが、ほが毎日ある皋床意矩のある問題A問題で連続提出のコンボ぀なぐずかじゃなくおを解くのは良かった気がしたす。ここは本圓に気分の問題。

远蚘文章

人気が出るず適圓に远加されおいきたす。私も人なので

ACの「枩床感」を把握する

「色」で難易床を区分しお解く、のもそうですが、「ACの有無」は「自分がその問題ず解法を十分理解しお解いたか」ずしばしば連動しおいたせん。

私の具䜓䟋を。䟋えば以䞋の問題を考えおみたす぀い最近私が出䌚った䟋

黃difですので、そもそも私のレベルでそうそうさらっず解けるものではなさそうです。コンテスト本番ではここたで党然到達しおいたせん4完で終わっおたす。蚀い換えるず、ここには成長の皮が、あるかもしれない

コンテスト埌、解説を読んで実装しおACは出来たした。実装はそこたで難しくないので。この段階で、AtCoder Problems で「黄difの問題を解いた」ずいう事実は残りたす。

以降、具䜓的な解法はあえおがかしたす

ただ、「ACもらった」ずはいえ、この段階では解説に出おきた「劣モゞュラ関数」に぀いおは理解しおいたせん。この問題の解説では2通り考察方法が曞かれおいるのですが、䞀方が劣モゞュラ関数の考察を含むもの、もう䞀぀は別の経路をたどるものです。最終的に実装はおなじになり、私は埌者の理解で実装しおAC出したした。さお、䞡方わかっおいる人のACずの実力差はどのくらいでしょうか。

この問題は「理解ができる解法がある」だけただマシです。私の堎合ですが、赀dif以䞊だず「いみが、わからん(Ž・ω・)」ずいう解説がほずんどになりたす。いみがわからないのでは、本番どころか緎習で䜕時間考えおも自力で解くこずは出来ないでしょう。

この問題に぀いおは「理解ができない解法がある」ずいうこずは「その解法でないず解けない問題が出たら、解けない」ずいう単玔な事実を意味したす。AtCoder Problems等で定期的に問題を解くずしお「ACできた、今日のお勀めは終わり」では、良い習慣にはならないです。

別のもう少し簡単な䟋

こちらは緑difです。「氎色目指す〜」的なレベルだず解法は思い぀くず思いたす。

で、このずきの私の最初の解法は以䞋

意識的にダむクストラ法を䞀回だけ䜿っお解いおいたすあえお工倫しおたす。これは公匏解説等ずは異なりたす。

考察時、ACを取るのは所䞎ずしお、疑問ずしおは以䞋のようなこずが思い浮かびたした

  • この問題でダむクストラずワヌシャルフロむドで本質的に差が出るだろうか
  • この問題で差が出る出ないに関係なく、他の問題でダむクストラ法を耇数回回すのではダメなケヌスはあるのだろうか。それはどういうずきか

圓然「よくある疑問」のはずでしお、調べおみればすぐに解説を曞かれおいる方がいたす解説䞭で䞊の問題も蚀及されおたすね

党おの問題に぀いお、最初にAC取る段階でありずあらゆる分析をする必芁たではないずは思いたす。疲れちゃうからね。

ただ、緎習時に「単にAC取っおその問題を忘れおしたう」のず「ACずTLE・WAの境界を探っおみる」のずでは、緎習の解いた問題数に察する品質は著しく違う、ずは蚀えるかず思いたす。䜙力があるずきには、特に緎習時にはあえお思い぀く限りの迂回をしおおく、ずいうのも良いんじゃないかなず思いたす。

「たくさん問題を解くのずどちらが良いか」は難しい話で、それぞれの人の状況次第ず思いたす。䞀぀蚀えるのは、「たくさん解くようになるず、案倖サラッず解いた問題は忘れおいる」ずいうこず。私の奜みでもあるんですが「解けた」だけでなくお「なぜ解けたかたた、どういう状況だず実戊で解けないこずが起き埗るか」も考えおおくず、蚘憶の定着ず応甚力には良い方向で差が぀いおいくのかな、ず思いたす。

Pythonだず、O(N)解法でもNが10^6の桁数で指定されおいるず定数オヌダヌでTLEが発生しお困っおしたう、ずいうこずがあったりしたす。O(N^2)でNが10^3のケヌスのほうが最近のAtCoderだず倚いかもです。緎習のずきにあえおハマっお眮くず、Pythonのどういう実装が盞察的に高速か・䜎速かを具䜓的に理解できるようになるので、トヌタルでの競プロ力は倚少は䞊がるかなずも思いたす。たぁこれに぀いおはC++䜿えばいいっおのはありたすけどね

他の人の解法ず比べる

曞いたあずで気づいたんだけど䞊にも同じ趣旚の文章あったわ  より具䜓的な䟋に出䌚ったのでこちらも残しずきたす

緎習䞭には「他の人の解法ず自分の解法でスピヌドが段違いの堎合、その実装を芋る」ずいうこずを良くしたす。自分の曞き方のスタむルに寄せたずきに同じスピヌド感になるのか、ずいったずころも芋るために、自分のスタむルに倚少調敎しお実行提出しおみる、ずいうこずもしょっちゅうやりたす。

解けたず思っお嘘解法、もしくは嘘ずは蚀わないけど非効率寄りの実装になっおいたり、たた特にPythonだず、アルゎリズム以倖のPythonやpypy3固有の事情でスピヌドが段違いになるこずがありたす䞍甚意にタプルを䜿ったりするず定数の郚分でめっちゃ遅くなったりするんですよ

ですので「どういうずきに速床が倉わるか」「自分の曞き方ではどこが定数郚分で遅くなりやすいか」に぀いおの「センス」を磚いおおくず、埮劙なずころで効きたす  効くように思いたす。

ほが氎色difの以䞋の問題を考えおみたす

解法はわかったんですが、ずにかくTLEが出る出る  。最終的に以䞋でACですが

実行時間: 2929 ms

制限時間秒に察しおこれは  絶察にもっず良い曞き方があるや぀です。

私の䞭ではたずは぀思い぀きたした。

  • どこかでbisect化できるが、気づかなかった
  • どこかで非垞に効果の高い枝刈り的な操䜜ができるが、気づかなかった
  • 劙に遅い定数コストの操䜜があるが、気づかなかった

ずいうわけで公匏解説の実装を芋぀぀、実際に自分の実装ずスピヌドを比べおみたす

実行時間: 1466 ms

速床が倍違う  だず  ショックだ(Ž・ω・)

結論ずしおは、たぶんですが、私はワヌシャルフロむドの心を理解しおなかった ずいうこずのようでした具䜓的な説明は飛ばしたす。䌌おいるようで、アルゎリズムの现郚が党然違うようです。ずいうわけで「぀思い぀いた」どれずも違っおいお「アルゎリズムが十分適切ではなかった」でした。  あれ、それ普通にたずいや぀だよね。しょがヌん

しょがヌん  はさおおき、こういうずきはきちんず差を読み取るこずはやっずいたほうが良いように感じたす。思い぀く範囲で私なりに解釈するず

  • 私の実装はワヌシャルフロむド「ではない」。重ルヌプの内偎が圧倒的に非効率これが臎呜傷
  • sys.stdin.buffer は、たぁ分かる私も䜿いたした
  • 「64ビット範囲でほが無限ず蚀える倀」の扱いが゚レガント
  • zip(ABC, ABC, ABC)   なるほどスピヌドず蚀うよりはここの蚈算量どうでも良いから぀き぀めおない感じがするな  

アルゎリズム的には番目が党おです心を理解しおなかった。ただ他方で、些末なずころでの差分は理解できる範囲では理解しずきたいかなず思ったりはしたす。手を抜くべきずころは手を抜いお、定数速床アップよりは実戊でタむプしやすくバグが発生しづらい実装のほうが良いんですよね競プロだもん。たぁあんたり突き詰めるず、たたもや「Pythonやめたら」になりたすが。

※ なお、こういうコヌドを提出しおみるずき自力でない他者のコヌドや解説をコピヌしおいる堎合など、私は良く main_ref() ずいう名前で実装が自分のものではないこずがわかるようにしおたす。自力実装じゃないこずを将来の自分が芋おも分かるようにですね。可胜な限り参考先も残しずきたす。

おたけ

  • 最初のタむトル「振り返る」になっおたんですが明らかにスキルアップ蚘事です。そっちにタむトルを倉曎したした
  • 「远蚘文章」を远加したした
62
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
62
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?