{"id":15446449,"url":"https://github.com/fumtas1k/atcoder_typical90","last_synced_at":"2026-02-25T16:33:16.485Z","repository":{"id":37105462,"uuid":"489875165","full_name":"fumtas1k/atcoder_typical90","owner":"fumtas1k","description":"競プロ典型90問","archived":false,"fork":false,"pushed_at":"2026-02-23T04:07:40.000Z","size":280,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-23T12:27:48.959Z","etag":null,"topics":["atcoder","java","kotlin","ruby","typical90"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fumtas1k.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-08T07:26:02.000Z","updated_at":"2026-02-23T04:07:44.000Z","dependencies_parsed_at":"2024-02-18T06:27:48.944Z","dependency_job_id":"51ad52da-3479-478f-b108-d4d06b3058e0","html_url":"https://github.com/fumtas1k/atcoder_typical90","commit_stats":{"total_commits":230,"total_committers":2,"mean_commits":115.0,"dds":0.004347826086956497,"last_synced_commit":"db95956de42b83ff926acdef54ca2f69a30fadac"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fumtas1k/atcoder_typical90","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fumtas1k%2Fatcoder_typical90","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fumtas1k%2Fatcoder_typical90/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fumtas1k%2Fatcoder_typical90/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fumtas1k%2Fatcoder_typical90/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fumtas1k","download_url":"https://codeload.github.com/fumtas1k/atcoder_typical90/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fumtas1k%2Fatcoder_typical90/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29830201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T15:41:19.027Z","status":"ssl_error","status_checked_at":"2026-02-25T15:40:47.150Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atcoder","java","kotlin","ruby","typical90"],"created_at":"2024-10-01T20:01:09.344Z","updated_at":"2026-02-25T16:33:16.466Z","avatar_url":"https://github.com/fumtas1k.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [競プロ典型 90問](https://atcoder.jp/contests/typical90)\n\natcoderの典型90問の解法集.\n\n## 各論\n\njavaに関しては、クラス名をMainに変更しないとatcoderでは機能しないので注意。\n\n| 問題文 | アルゴリズム等 | ruby解 | java解 | kotlin解 | 解説 |\n|-|-|-|-|-|-|\n| [001 - Yokan Party（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_a) | 貪欲法, 二分探索法 | [ruby](ruby/001_YokanParty.rb) | [java](java/YokanParty_001.java) | [kotlin](kotlin/001YokanParty.kt)| [解説](https://twitter.com/e869120/status/1377027868518064129/photo/1) |\n| [002 - Encyclopedia of Parentheses（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_b) | bit全探索 | [ruby](ruby/002_EncyclopediaOfParentheses.rb) | [java](java/EncyclopediaOfParentheses_002.java) | [kotlin](kotlin/002_EncyclopediaOfParentheses.kt) | [解説](https://twitter.com/e869120/status/1377391097836544001/photo/1) |\n| [003 - Longest Circular Road（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_c) | 木の直径 | [ruby1](ruby/003-01_LongestCircularRoad.rb), [ruby2](ruby/003-02_LongestCircularRoad.rb) | [java1](java/LongestCircularRoad_003_01.java), [java2](java/LongestCircularRoad_003_02.java) | [kotlin1](kotlin/003-01_LongestCircularRoad.kt), [kotlin2](kotlin/003-02_LongestCircularRoad.kt) | [解説](https://twitter.com/e869120/status/1377752658149175299/photo/1) |\n| [004 - Cross Sum（★2）](https://atcoder.jp/contests/typical90/tasks/typical90_d) |包除原理 | [ruby](ruby/004_CrossSum.rb) | [java](java/CrossSum_004.java) | [kotlin](kotlin/004_CrossSum.kt) | [解説](https://twitter.com/e869120/status/1378115289649348611/photo/1) |\n| [005 - Restricted Digits（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_e) |桁DP法, ダブリング| [ruby](ruby/005_RestrictedDigits.rb) || | [解説](https://twitter.com/e869120/status/1378527948563615746) |\n| [006 - Smallest Subsequence（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_f) | 貪欲法 | [ruby1](ruby/006-01_SmallestSubsequence.rb), [ruby2](ruby/006-02_SmallestSubsequence.rb) | [java](java/SmallestSubsequence_006.java) | [kotlin1](kotlin/006-01_SmallestSubsequence.kt) | [解説](https://twitter.com/e869120/status/1379202843622576130/photo/1) |\n| [007 - CP Classes（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_g) | 二分探索法 | [ruby](ruby/007_CPClasses.rb) | [java](java/CPClasses_007.java) | [kotlin](kotlin/007_CPClasses.kt) | [解説](https://twitter.com/e869120/status/1379565222541680644/photo/1) |\n| [008 - AtCounter（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_h) | 状態DP法 | [ruby](ruby/008_AtCounter.rb) | [java](java/AtCounter_008.java) | [kotlin](kotlin/008_AtCounter.kt) | [解説](https://twitter.com/e869120/status/1379927227739987972/photo/1) |\n| [009 - Three Point Angle（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_i) |二分探索法, 偏角ソート, 真ん中決め打ち|| [java](java/ThreePointAngle_009.java) | | [解説](https://twitter.com/e869120/status/1380290146340245505)|\n| [010 - Score Sum Queries（★2）](https://atcoder.jp/contests/typical90/tasks/typical90_j) | 累積和 | [ruby](ruby/010_ScoreSumQueries.rb) | [java](java/ScoreSumQueries_010.java) | [kotlin](kotlin/010_ScoreSumQueries.kt) | [解説](https://twitter.com/e869120/status/1380652465834532865) |\n| [011 - Gravy Jobs（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_k) | DP法, 締め切りが早い順 | [ruby](ruby/011_GravyJobs.rb) | [java](java/GravyJobs_011.java) | [kotlin](kotlin/011_GravyJobs.kt)　| [解説](https://github.com/E869120/kyopro_educational_90/blob/main/sol/011-03.cpp) |\n| [012 - Red Painting（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_l) |Union-Find| [ruby](ruby/012_RedPainting.rb) | [java](java/RedPainting_012.java) | [kotlin](kotlin/012_RedPainting.kt) | [解説](https://twitter.com/e869120/status/1381739128291614720) |\n| [013 - Passing（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_m) | ダイクストラ法 | [ruby](ruby/013_Passing.rb) | [java](java/Passing_013.java) | [kotlin](kotlin/013_Passing.kt) | [解説](https://twitter.com/e869120/status/1382101716066127872) |\n| [014 - We Used to Sing a Song Together（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_n) | ソート, 貪欲法 | [ruby](ruby/014_WeUsedToSingASongTogether.rb) | [java](java/WeUsedToSingSongTogether_014) | [kotlin](kotlin/014_WeUsedToSingASongTogether.kt) | [解説](https://twitter.com/e869120/status/1382478816627478530) |\n| [015 - Don't be too close（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_o) | 調和級数, 逆元, フェルマーの小定理 | [ruby](ruby/015_DontBeTooClose.rb) |  | [kotlin](kotlin/015_DontBeTooClose.kt) | [解説](https://twitter.com/e869120/status/1382827276673306624) |\n| [016 - Minimum Coins（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_p) | 工夫した全探索 | [ruby](ruby/016_MinimumCoins.rb) |  | [kotlin](kotlin/016_MinimumCoins.kt) | [解説](https://twitter.com/e869120/status/1383189464650981378/photo/1) |\n| [017 - Crossing Segments（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_q) |余事象, BIT(FenwickTree) |[ruby](ruby/017_CrossingSegments.rb) | | [kotlin](kotlin/017_CrossingSegments.kt) | [解説](https://twitter.com/e869120/status/1383635232134287360) |\n| [018 - Statue of Chokudai（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_r) | 三角関数 | [ruby](ruby/018_StatueOfChokudai.rb) |  | | [解説](https://twitter.com/e869120/status/1384276005330690049) |\n| [019 - Pick Two（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_s) | 区間DP法 | [ruby](ruby/019_PickTwo.rb) |  | | [解説](https://twitter.com/e869120/status/1384638694162780166) |\n| [020 - Log Inequality（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_t) | 整数 | [ruby](ruby/020_LogInequality.rb) |  | | [解説](https://twitter.com/e869120/status/1385001057512693762) |\n| [021 - Come Back in One Piece（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_u) | 強連結成分分解 | [ruby1](ruby/021-01_ComeBackInOnePiece.rb), [ruby](ruby/021-02_ComeBackInOnePiece.rb) | [java](java/ComeBackInOnePiece_021.java) | [kotlin1](kotlin/021-01_ComeBackInOnePiece.kt), [kotlin2](kotlin/021-02_ComeBackInOnePiece.kt) | [解説](https://twitter.com/e869120/status/1385363292739104775) |\n| [022 - Cubic Cake（★2）](https://atcoder.jp/contests/typical90/tasks/typical90_v) | ユークリッド互除法 | [ruby1](ruby/022-01_CubicCake.rb), [ruby2](ruby/022-02_CubicCake.rb) |  | | [解説](https://twitter.com/e869120/status/1385725481920520193) |\n| [023 - Avoid War（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_w) |bit全探索, bitDP法 ||| | [解説](https://twitter.com/e869120/status/1386138990361726978) |\n| [024 - Select +／- One（★2）](https://atcoder.jp/contests/typical90/tasks/typical90_x) | パリティ | [ruby](ruby/024_Select+／-One.rb) |  | | [解説](https://twitter.com/e869120/status/1386814047081746432) |\n| [025 - Digit Product Equation（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_y) | 再帰関数 | [ruby](ruby/025_DigitProductEquation.rb) |  | [kotlin](kotlin/025_DigitProductEquation.kt) | [解説](https://twitter.com/e869120/status/1387175538544975872) |\n| [026 - Independent Set on a Tree（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_z) | 二部グラフ, 再帰関数 | [ruby](ruby/026_IndependentSetOnATree.rb) |  | [kotlin](kotlin/026_IndependentSetOnATree.kt) | [解説](https://twitter.com/e869120/status/1387538790017769474) |\n| [027 - Sign Up Requests （★2）](https://atcoder.jp/contests/typical90/tasks/typical90_aa) | Hash(Set) | [ruby](ruby/027_SignUpRequests.rb) | [java](java/SignUpRequests_027.java) | [kotlin](kotlin/027_SignUpRequests.kt) | [解説](https://twitter.com/e869120/status/1387901052683386880) |\n| [028 - Cluttered Paper（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_ab) | いもす法 | [ruby](ruby/028_ClutteredPaper.rb) |  | [kotlin](kotlin/028_ClutteredPaper.kt) | [解説](https://twitter.com/e869120/status/1388262816101007363) |\n| [029 - Long Bricks（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_ac) | 座標圧縮, セグメント木 ||| | [解説](https://twitter.com/e869120/status/1388674962823663619) |\n| [030 - K Factors（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_ad) | エラトステネスの篩 ||| [kotlin](kotlin/030_KFactors.kt) | [解説](https://twitter.com/e869120/status/1389349360866009090) |\n| [031 - VS AtCoder（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_ae) | grundy | [ruby](ruby/031_VsAtCoder.rb) | [java](java/VsAtCoder_031.java) | | [解説](https://twitter.com/e869120/status/1389711962213261316) |\n| [032 - AtCoder Ekiden（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_af) | 順列全探索 | [ruby](ruby/032_AtCoderEkiden.rb) |  | | [解説](https://twitter.com/e869120/status/1390074137192767489) |\n| [033 - Not Too Bright（★2）](https://atcoder.jp/contests/typical90/tasks/typical90_ag) | 境界条件 | [ruby](ruby/033_NotTooBright.rb) |  | | [解説](https://twitter.com/e869120/status/1390436977808351234) |\n| [034 - There are few types of elements（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_ah) | 尺取法 | [ruby](ruby/034_ThereAreFewTypesOfElements.rb) |  | [kotlin](kotlin/034_ThereAreFewTypesOfElements.kt) | [解説](https://twitter.com/e869120/status/1390798852299448322) |\n| [035 - Preserve Connectivity（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_ai) | 木DP, 最近共通祖先(LCA), 座標圧縮 | [ruby](ruby/035_PreserveConnectivity.rb) |  | | [解説](https://twitter.com/e869120/status/1391218516129312768) |\n| [036 - Max Manhattan Distance（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_aj) | マンハッタン距離 | [ruby](ruby/036_MaxManhattanDistance.rb) |  | | [解説](https://twitter.com/e869120/status/1391886390091075586) |\n| [037 - Don't Leave the Spice（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_ak) | スライド最大値(最小値), DP法, 動的計画法 | [ruby](ruby/037_DontLeaveTheSpice.rb) |  | | [解説](https://twitter.com/e869120/status/1392248540882116610) |\n| [038 - Large LCM（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_al) | ユークリッド互除法 | [ruby](ruby/038_LargeLCM.rb) |  | | [解説](https://twitter.com/e869120/status/1392612322410057729) |\n| [039 - Tree Distance（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_am) | 貢献度, 再帰関数 | [ruby](ruby/039_TreeDistance.rb) |  | | [解説](https://twitter.com/e869120/status/1392974101061378049) |\n| [040 - Get More Money（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_an) |||| | [解説](https://twitter.com/e869120/status/1393336369540341760) |\n| [041 - Piles in AtCoder Farm（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_ao) |||| | [解説](https://twitter.com/e869120/status/1393753066331992065) |\n| [042 - Multiple of 9（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_ap) |DP法| [ruby](ruby/042_MultipleOf9.rb) |  | [kotlin](kotlin/042_MultipleOf9.kt) | [解説](https://twitter.com/e869120/status/1394423616805097477) |\n| [043 - Maze Challenge with Lack of Sleep（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_aq) | 拡張BFS | [ruby1](ruby/043-01_MazeChallengewithLackofSleep.rb), [ruby2](ruby/043-02_MazeChallengewithLackofSleep.rb) |  | | [解説](https://twitter.com/e869120/status/1394787605099601923) |\n| [044 - Shift and Swapping（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_ar) | 見かけ上の変化をメモ | [ruby](ruby/044_ShiftAndSwapping.rb) |  | | [解説](https://twitter.com/e869120/status/1395148057730187265) |\n| [045 - Simple Grouping（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_as) | bitDP法 ||| | [解説](https://twitter.com/e869120/status/1395510657634619394) |\n| [046 - I Love 46（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_at) | 同じものをまとめる, 剰余 | [ruby](ruby/046_ILove46.rb) |  | | [解説](https://twitter.com/e869120/status/1395873457259225091) |\n| [047 - Monochromatic Diagonal（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_au) | ローリングハッシュ | [ruby](ruby/047_MonochromaticDiagonal.rb) || | [解説](https://twitter.com/e869120/status/1396289540222906368) |\n| [048 - I will not drop out（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_av) | 上界(下界)見積り | [ruby](ruby/048_IWillNotDropOut.rb) |  | | [解説](https://twitter.com/e869120/status/1396960059796582400) |\n| [049 - Flip Digits 2（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_aw) | 最小全域木, Union-Find, クラスカル法 | [ruby](ruby/049_FlipDigits2.rb) |  | [kotlin](kotlin/049_FlipDigits2.kt) | [解説](https://github.com/E869120/kyopro_educational_90/blob/main/sol/049.cpp) |\n| [050 - Stair Jump（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_ax) | DP法 | [ruby](ruby/050_StairJump.rb) | | [kotlin](kotlin/050_StairJump.kt) | [解説](https://twitter.com/e869120/status/1397684795560259586)|\n| [051 - Typical Shop（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_ay) | 半分全列挙 | [ruby](ruby/051_TypicalShop.rb) |  | [kotlin](kotlin/051_TypicalShop.kt) | [解説](https://twitter.com/e869120/status/1398046858933538819)|\n| [052 - Dice Product（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_az) | 因数分解 | [ruby](ruby/052_DiceProduct.rb) | | [kotlin](kotlin/052_DiceProduct.kt) | [解説](https://twitter.com/e869120/status/1398409831044632576) |\n| [053 - Discrete Dowsing（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_ba) |||| | [解説](https://twitter.com/e869120/status/1398827248698810369) |\n| [054 - Takahashi Number（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_bb) | 最短経路問題, 幅優先探索, グラフの辺数削減, エルデシュ数　| [ruby](ruby/054_TakahashiNumber.rb) |  | | [解説](https://twitter.com/e869120/status/1399496993014116352) |\n| [055 - Select 5（★2）](https://atcoder.jp/contests/typical90/tasks/typical90_bc) | 定数倍 | [ruby](ruby/055_Select5.rb) |  | | [解説](https://twitter.com/e869120/status/1399859200046505984) |\n| [056 - Lucky Bag（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_bd) | 動的計画法, DP法, DP復元 | [ruby](ruby/056_LuckyBag.rb) |  | [kotlin](kotlin/056_LuckyBag.kt) | [解説](https://twitter.com/e869120/status/1400221404109230082) |\n| [057 - Flip Flap（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_be) | 掃き出し法 | [ruby](ruby/057_FlipFlap.rb) | | |[解説](https://twitter.com/e869120/status/1400584377902399490) |\n| [058 - Original Calculator（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_bf) |  | [ruby](ruby/058_OriginalCalculator.rb) |  | | [解説](https://twitter.com/e869120/status/1400584377902399490) |\n| [059 - Many Graph Queries（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_bg) |||| | [解説](https://twitter.com/e869120/status/1401357950686429193) |\n| [060 - Chimera（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_bh) | 最長増加部分列(LIS), 二分探索法 | [ruby](ruby/060_Chimera.rb) | [java](java/Chimera_060.java) | [kotlin](kotlin/060_Chimera.kt) | [解説](https://twitter.com/e869120/status/1402034055734980608) |\n| [061 - Deck（★2）](https://atcoder.jp/contests/typical90/tasks/typical90_bi) | deque | [ruby](ruby/061_Deck.rb) | | [kotlin](kotlin/061_Deck.kt) | [解説](https://twitter.com/e869120/status/1402395219287371779) |\n| [062 - Paint All（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_bj) | 幅優先探索, 後ろから考える | [ruby](ruby/062_PaintAll.rb) |  | | [解説](https://twitter.com/e869120/status/1402758934268571648) |\n| [063 - Monochromatic Subgrid（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_bk) | bit全探索 | [ruby](ruby/063_MonochromaticSubgrid.rb) | | [kotlin](kotlin/063_MonochromaticSubgrid.kt) | [解説](https://twitter.com/e869120/status/1403121388773249024) |\n| [064 - Uplift（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_bl) | 階差 | [ruby](ruby/064_Uplift.rb) |  | [kotlin](kotlin/064_Uplift.kt) | [解説](https://twitter.com/e869120/status/1403483256234799105) |\n| [065 - RGB Balls 2（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_bm) |||| | [解説](https://twitter.com/e869120/status/1403901094007173120) |\n| [066 - Various Arrays（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_bn) | 期待値の線形性 | [ruby](ruby/066_VariousArrays.rb) |  | | [解説](https://github.com/E869120/kyopro_educational_90/blob/main/sol/066a.cpp) |\n| [067 - Base 8 to 9（★2）](https://atcoder.jp/contests/typical90/tasks/typical90_bo) |  | [ruby](ruby/067_Base8to9.rb) |  | | [解説](https://twitter.com/e869120/status/1404931743820357633) |\n| [068 - Paired Information（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_bp) | クエリ先読み, Union-Find | [ruby](ruby/068_PairedInformation.rb) |  | | [解説](https://x.com/e869120/status/1405298187384999938) |\n| [069 - Colorful Blocks 2（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_bq) | 繰り返し2乗法 | [ruby](ruby/069_ColorfulBlocks2.rb) |  | | [解説](https://twitter.com/e869120/status/1405298187384999938) |\n| [070 - Plant Planning（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_br) | マンハッタン距離, 独立で考える | [ruby](ruby/070_PlantPlanning.rb) |  | | [解説](https://twitter.com/e869120/status/1406020809492090882) |\n| [071 - Fuzzy Priority（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_bs) |||| | [解説](https://twitter.com/e869120/status/1406429317249126402) |\n| [072 - Loop Railway Plan（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_bt) | バックトラック, 再帰関数, \"何通りか\"の感覚 | [ruby](ruby/072_LoopRailwayPlan.rb) |  | | [解説](https://twitter.com/e869120/status/1407109731546636289) |\n| [073 - We Need Both a and b（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_bu) | 木DP, 動的計画法 | [ruby](ruby/073_WeNeedBothAandB.rb) |  | | [解説](https://github.com/E869120/kyopro_educational_90/blob/main/sol/073.cpp) |\n| [074 - ABC String 2（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_bv) | 特殊ケースを考える, 不変量を考える | [ruby](ruby/074_ABCString2.rb) |  | | [解説](https://twitter.com/e869120/status/1407833847413178372) |\n| [075 - Magic For Balls（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_bw) | 素因数分解 | [ruby](ruby/075_MagicForBalls.rb) | | [kotlin](kotlin/075_MagicForBalls.kt) | [解説](https://twitter.com/e869120/status/1408195203538690048) |\n| [076 - Cake Cut（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_bx) | 円環を列にして二倍にする(累積和), 尺取法 | [ruby](ruby/076_CakeCut.rb) |  | | [解説](https://github.com/E869120/kyopro_educational_90/blob/main/sol/076.cpp) |\n| [077 - Planes on a 2D Plane（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_by) |||| | [解説](https://twitter.com/e869120/status/1408978156137025545) |\n| [078 - Easy Graph Problem（★2）](https://atcoder.jp/contests/typical90/tasks/typical90_bz) | グラフの基本 | [ruby](ruby/078_EasyGraphProblem.rb) |  | | [解説](https://twitter.com/e869120/status/1409644684561944579) |\n| [079 - Two by Two（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_ca) | 操作順序によらない | [ruby](ruby/079_TwobyTwo.rb) |  | | [解説](https://twitter.com/e869120/status/1410007233262276612) |\n| [080 - Let's Share Bit（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_cb) | 包除原理, bit全探索 | [ruby](ruby/080_LetsShareBit.rb) |  | | [解説](https://twitter.com/e869120/status/1410368312760934404) |\n| [081 - Friendly Group（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_cc) | 二次元累積和, 二次元imos法 |[ruby](ruby/081_FriendlyGroup.rb)|| | [解説](https://twitter.com/e869120/status/1410732179743657986) |\n| [082 - Counting Numbers（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_cd) | 数列の和の公式, 部分問題に分解 | [ruby](ruby/082_CountingNumbers.rb) |  | | [解説](https://twitter.com/e869120/status/1411094412319330305) |\n| [083 - Colorful Graph（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_ce) |||| | [解説](https://twitter.com/e869120/status/1411508237522767873) |\n| [084 - There are two types of characters（★3）](https://atcoder.jp/contests/typical90/tasks/typical90_cf) |  | [ruby](ruby/084_ThereAreTwoTypesOfCharacters.rb) |  | | [解説](https://twitter.com/e869120/status/1412179495868534784) |\n| [085 - Multiplication 085（★4）](https://atcoder.jp/contests/typical90/tasks/typical90_cg) | 全件探索, 約数列挙 | [ruby](ruby/085_Multiplication085.rb) |  | | [解説](https://twitter.com/e869120/status/1412541885160189952) |\n| [086 - Snuke's Favorite Arrays（★5](https://atcoder.jp/contests/typical90/tasks/typical90_ch) | bit全探索, bit毎に独立に考える | [ruby](ruby/086_Snuke'sFavoriteArrays.rb) |  | | [解説](https://twitter.com/e869120/status/1412904274900754441) |\n| [087 - Chokudai's Demand（★5）](https://atcoder.jp/contests/typical90/tasks/typical90_ci) | ワーシャルフロイド法, 二分探索法 | [ruby](ruby/087_ChokudaisDemand.rb) |  | | [解説](https://twitter.com/e869120/status/1413266660862009348) |\n| [088 - Similar but Different Ways（★6）](https://atcoder.jp/contests/typical90/tasks/typical90_cj) | 鳩ノ巣原理, DFS | [ruby](ruby/088_SimilarButDifferentWays.rb) |  | | [解説](https://x.com/e869120/status/1413629046282280963) |\n| [089 - Partitions and Inversions（★7）](https://atcoder.jp/contests/typical90/tasks/typical90_ck) | 条件の言い換え, 不変量, 尺取法, BIT, 座標圧縮, 累積和, 動的計画法 | [ruby](ruby/089_PartitionsAndInversions.rb) |  | | [解説](https://x.com/e869120/status/1413991433153912832) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffumtas1k%2Fatcoder_typical90","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffumtas1k%2Fatcoder_typical90","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffumtas1k%2Fatcoder_typical90/lists"}