Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SRM573 Div1Hard Div2Hard 解説
Search
tozangezan
March 15, 2013
Technology
1
260
SRM573 Div1Hard Div2Hard 解説
解説です。上げなおしました。
tozangezan
March 15, 2013
Tweet
Share
More Decks by tozangezan
See All by tozangezan
SRM578 解説
tozangezan
0
270
Other Decks in Technology
See All in Technology
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
4
580
普通のチームがスクラムを会得するたった一つの冴えたやり方 / the best way to scrum
okamototakuyasr2
0
110
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
370
LLM時代のパフォーマンスチューニング:MongoDB運用で試したコンテキスト活用の工夫
ishikawa_pro
0
170
なぜスクラムはこうなったのか?歴史が教えてくれたこと/Shall we explore the roots of Scrum
sanogemaru
5
1.7k
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
230
Webアプリケーションにオブザーバビリティを実装するRust入門ガイド
nwiizo
7
870
Modern Linux
oracle4engineer
PRO
0
150
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
190
株式会社ログラス - 会社説明資料【エンジニア】/ Loglass Engineer
loglass2019
4
65k
【NoMapsTECH 2025】AI Edge Computing Workshop
akit37
0
220
「Linux」という言葉が指すもの
sat
PRO
4
140
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Designing for humans not robots
tammielis
253
25k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Building Adaptive Systems
keathley
43
2.7k
Balancing Empowerment & Direction
lara
3
620
Designing for Performance
lara
610
69k
Fireside Chat
paigeccino
39
3.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
The Art of Programming - Codeland 2020
erikaheidi
56
13k
Transcript
WolfPack(Div1 Hard) WolfPackDivTwo(Div2 Hard) 解説 SRM 573
問題概要 オオカミがn頭いて、最初(x[i],y[i])にい る それぞれのオオカミは1回の移動におい て、隣接するマスのうちのどれか1つに進 む M回移動したときにn頭すべてが同じ場所に
いた 移動の仕方は何通りあるか、1000000007で 割った余りを求めよ。
例(Example 2) 2回の移動で 真ん中に行か ないと…… 2回の移動で 真ん中に 行かないと… 余裕!
(2,0)以外に集まるこ とは出来ない(両端の どっちかが間に合わな い) 左右にいるオオカミは (2,0)に向かってまっ すぐ向かってくること は確定 真ん中のオオカミは1 回好きな方向に向か い、もどってくる
素朴な解法 DFSするだけ→O(4NM2)くらいだろうか、さすがに 間に合わない ということで、何かしらのDPをする。 最後に集まる場所をそれぞれのオオカミの移動は 別々に考えて、最後にそれらをすべて掛け合わせ ればよい。
→すると集まる場所はO(M2)くらい。それぞれ についてDPをするとO(MN)くらい、combinationを 計算するとO(N)だろう。これだとO(NM^2)。 これでDiv2のほうは通る。
満点解法に向けて(1) このような移動は…… こう考える!!
満点解法に向けて(2) 次に、(0,0)から各点に行く方法が何通りあるか を考えてみる。 (何も数字が書かれていないところはすべて0通りです)
満点解法に向けて(3) さっきの図を45度回転 させてみましょう!! 見た感じnCi*nCjみたいな感じになっている…?? →正しい (n+1)Ci*(n+1)Cj=(nCi+nC(i-1))(nCj+nC(j-1)) =nCi*nCj+nC(i-1)*nCj+nCi*nC(j-1) +nC(i-1)*nC(j-1)
なので、帰納法で証明できます オオカミごとに独立に動けるので掛け算する
満点解法 ということで、座標を45度回転させ、n点を平行 移動するときにそれぞれ何通りになるかを計算す ればよいです(この時点ではまだO(NM^2)) しかし、このときスライドするだけなので、 x1y1+x2y1+x3y1+x1y2+x2y2+x3y3 =(x1+x2+x3)(y1+y2) のように独立にもとめることで、計算量はO(MN)
にすることができ、これで通すことが出来ます。 また、nCk mod pは他にもよく出てくるので自分 で調べてください。JOI2011のKeycardsがおすす めです。
まとめ Div1 提出者数:11 正解者数:4 Div2 提出者数:47 正解者数:12
お疲れ様でした