精進 ABC077D-Small Multiple
すごくいい経験になったと思う
これからも使いそうな考え方を書いておく
この問題の特徴
まず、目に付くのは
「Kの正の倍数」という制限
僕は、このような「上に無制限」な問題に慣れていなかったのがダメだった思う
じゃあどうするの
なんとかして、この「Kの正の倍数」という無制限さを
有限に置き換えたい
どうするか
Kの倍数ということは
すべてKで割った時の剰余が0になる
まずこれに目をつけなければならなかった
また、数同士の関係性についても考えてみる
1 -> 2
1を足すと桁の和が1増える
1 -> 10
10を掛けると桁の数は変わらない
これを mod K の有限の世界で考えると
K の倍数、つまり 0 (mod K)を目指せばいいということだ
これは 0~K-1について
上の関係性のグラフを貼れば求めることができる(これは01BFS)
世界を狭める方法を考えることが大事だった
このような経験がなかったので成長できたと思う
精進 ARC068E Snuke Line
何をしても時間がかかりそう...
と悩んでいたが解説見てー
あーなるほどってなった
わかってたこと
r - l + 1 > d を満たす区間は必ず1回以上通る
それ以外は通らない、または1回だけ通る(つまり分からない)
わからなかったこと
倍数の計算量の抑え方
方針
・dはループで1~mまで計算する
・r - l + 1 <= d を満たす区間[l,r]に1加算する
このようにすることで、
dの倍数全てについて総和を取ることで
通るか通らないか分からない区間について調べることができる
つまりdについて
N - (r - l + 1 <= d を満たす区間 つまり通るかわからない区間)
+ (駅[i]における分からない区間の名産品の種類の数 | i は d の倍数)
とできるね
あとはBITを使うだけ
とは言いつつBITとimos法を合体させてるの面白くないですか
僕は面白いなーと思った
精進 ARC074D - 3N Numbers
おおー500点とかびびってたけど
最近の精進が効いてきてるみたいで自力で解けた嬉しい
さて方針
吸収していく、というイメージを持ちました
入力例1 2 3 1 4 1 5 9
これを右側と左側で分けてみると
[ 3 1 ] 4 1 [ 5 9 ]
左側は大きく、右側は小さくしていくのが目標ですね
左から3番目の4を考えてみよう
左側を大きくすることだけを考えれば
左側のグループで最小の1を捨てて、4を吸収するのがいいですね
また、
右から3番めの1を考える
右側を大きくすることを考えれば
右側のグループで最大の9を捨てて、1を吸収するのがいいです
これを方針とします
ここからがちょっと問題
ただし、どこまでを左側のグループで考えるか、
どこまでを右側のグループで考えるかを
決めることは不可能です
これは、全部試さなきゃダメ(この方針が今の僕に大切だと思う)
よく考えると
それぞれのグループの和はDPで求めることができます
これを利用して計算すればすべて試すことができる
O(NlogN)で通りました
もっと頑張る
精進 ARC-070D No Need
途中まで気付けていたのですが
二分探索が分からなかった...
二分探索できない、勉強しなきゃ
どこまで気づいていたか
・ナップサック的にギリギリまで詰め込む
・ソートしておく
・不必要以下の大きさのカードは不必要
・必要以上の大きさのカードは必要
以下と以上の条件が出たら二分探索じゃないですか
確かにそうだ
ちゃんと把握しなきゃ、練習しなきゃ
精進 ARC-069D Menagerie
あーこんなに簡単だったのか....
気づくの苦手すぎるので意識することを書いておく
どの問題でも「何が決まればいいのか」を把握しておく
広義昨日のForestも
「辺の数」と「森の形」と「頂点の小さい順」が決まれば
答えが導ける
ということだった
そういうことだね...
今回の場合は
「最初の2つの動物の種類」が決まれば
すべて決定できる
ということだった
あーやっぱり
「ここがわかってれば解けるのになぁ」という気持ちにならないと
頑張るぞ
精進 APC-001-D Forest
こういう考え方が足りなさ過ぎてつらい
頑張らないとね
精進1
理想な考察の仕方を連ねてみるが(あっている保証がない)
要するに何するんですか (What is this?)
森を木にするための最小コストを調べます
答えはどんな形ですか (Answer?)
森にある木をすべて頂点で結んだ形
頂点はどうやって選びますか (How?)
すべての木をつなぐ->木のうち最低一つの頂点は使う
あとは小さい順
何個頂点を選びますか (Time?)
木を構成するにはn - 1の辺が必要
もうm本引いてあるので n - m - 1
引く辺の頂点はかぶってはいけないので
2 * (n - m - 1)個頂点を選べばいい
簡単ですね
はい
木を作って
木の中でもっとも小さいのを取り出して
あとは個数分だけ取り出す
もうすでに木ができているケースがあるので注意
JOI'2018 本選体験記
お疲れさまでしたーーーーーー
だがしかし大爆死....
来年頑張るね
次出ようかなとか考えてる人も参考までに
プラクティスの日
はい誕生日()
僕は会場に受付終了30分前ぐらいにつきました
や歩く pic.twitter.com/e0H2VInI5n
— くちもちとくら (@Kutimoti_T) February 10, 2018
— くちもちとくら (@Kutimoti_T) February 10, 2018
会場入りAC pic.twitter.com/0SFm8HznpQ
— くちもちとくら (@Kutimoti_T) February 10, 2018
えープロばっかり赤いなみんな
綾鷹を入り口付近で抱きしめているとツイートすると
えかすどプロと、るましプロが寄ってきてくれましたー
初めましてーーっていう感じ
僕はここで携帯の電源がなくなります(ア)
新幹線の中では充電しましょう
っていうかんじ pic.twitter.com/d2HOrREiGW
— くちもちとくら (@Kutimoti_T) February 10, 2018
プラクティス受ける全完
漁師がプラクティスTLEが判明
とがさんに会う
たのちい
夜は独房に入れられます()
ですがTwitterのおかげで
えかすど、るまし、漁師でアニメが見れた
人々とえんかー pic.twitter.com/vGw2Ef6E21
— くちもちとくら (@Kutimoti_T) February 10, 2018
ほんとたのちい
本選
150点!死!!!
DEGwerさんの解説面白すぎか
早く黄色になりたいな
みんなありがとう!!!!!黄色くなって戻ってくる!! pic.twitter.com/4hPM67LoCd
— くちもちとくら (@Kutimoti_T) February 11, 2018