Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
AtC。de「 Reguーa「 C0nteSt 033
解説

 

AtC0der

Atc。der株式会ネ土
;ー_工)'一 一ニ 丁` '亡

彦
』 一 ノー丶
佇ロ守題‡且琵要

離 長さ N の文字夜ー]の音B分文字菱ーーのイ固数を求め

よ。 (N <= ー。0。)

ー 蔽ーーえーま N = 3 ブよら、 文字菱ー]を“'ABC"とすると`
盧 ,,A,,, ,,B,,, 野,c,,, 野,AB...
角軍麦去

* L丶ろL丶ろな考え方ヵヾあ~丿ますヵヾ、し丶ずれも、

離 ー+2+3+・・・+N (ニ N*(N+ー)/2)

~ のような式を言十算すれーま良L丶とし丶うことヵヾわ
ヵ丶叫丿ます。

髑 これを丿レ-フ〝をイ吏って言十算しナ...
考え方ー

離 音B分文字夜ー]の長さごとーニ場合分ーナしてみる。
離 N=3の伊jナ三と`

遭 長さ ー の音B分文字麦ー]ニ 3 ィ固

寶 長さ 2 の音B分文字麦ー]ニ 2 ィ固

離 長さ 3 の音B分文字菱ーー: ー イ固

髑 ...
考え方2

・ 耳又叫丿出す区Fョ守の左立嵩と右立崗を全て試してみる。
・ N = 3 の傾ー]ナ三と、

・ [A]BC, [AB]C, [ABC], A[B]C, A[BC], AB[C]

・ とし丶ラ6つの耳又〝丿出し方ヵヾある。

・...
・ N=ー:ー個
髑 N=2:3個

~ N=3:6個

* N=4:ー。{固

ー N ヵヾ ー ‡曽えるごとーニ答えヵヾ N ナミーナ士曽えるらしL丶 ?
ぅN・ェヵヾNー二士曽えナニ時ーニ士曽える音B分文字夜ーーーま`最後
雰苳字を含むよ...
~〝 丿〝'丿' 一一丶丿一ご〝~プ 丿
/ ノ ^ー^"'〟'ノ丶;丶ノノ丶
Fロ『題根牙要

・ 2つの整数の集合A,Bの」accardイ系数を求めよ。

・ Jaccard係数とーま`

' AとBの共通部分の要素数/AとBの和集合の要素数
(size(AnB)/size(AUB))

・ 4。,点:A,Bの要素数s...
4〇,点 角睾麦去

・ A,Bの共通音B分の要素数をXとすると、A,Bの

手ロ集合の要素数ーま、

・ Aの要素数(N^)+Bの要素数(Ng)・x
・ と言十算できる。
・ Xーま、Aの要素とBの要素をそれぞれ舌氏める2

重丿レ一プを回し...
7〇,点 角睾麦去

・ 2重丿し一プをー重丿レープーニしナニし丶。

・ Aの要素を舐めて、その要素ヵヾBー二含まれる
のヵ丶どうヵ丶を高速ーニ半ー]定しナニし丶。

・ 要素数ヵヾーロ^5+dの酉己夜ーーをイ羊つて、Bー二含まれ

る数の場...
満 ,点 角睾享去

・ 数の上B良ヵヾ大きし丶ナニめ、酉己夜ーjヵヾ耳又れなL丶。
・ Bを`ノ一トしておき`二分‡突索を用し丶る。

・ set(集合を‡及うクラス〉を用し丶る。

・ などの方夏去で`ある数ヵヾBー二含まれるのヵ丶ど

う...
一一一一ロ

CFロ守題 角睾
佇ロ守題‡且琵要

離 数の集合ー二対するクエ'丿をQ個処王里せよ。
ー 夕イプーニ集合ー二Xを追力ロする。
離 夕イプ2ニ集合のX番目の数を答え、肖ー]除す

る。

遭 Q <= 200000, X <= 200000
背景
繍 「ぇ一っと、とも丿あえず set ーニ突っ込んで'ー'」

離 Set ー二ーま「X 番目 の数」を
耳又L丿出す‡幾肯巨【まつし丶てし丶ません。
角軍麦去

・ 「X番目の数」を言し丶換えてみる。
・ ぅ「それ以下の数ヵヾXイ固であるようプよ数のう

ち最も丿ー丶さし丶数」

・ とし丶うことーま、
・ 「ぁる数以下の数ヵヾし丶くつあるヵ丶」ヵヾ高速ー二

求まるデ一タ‡茸造ヵヾあれーま...
團 }二 『「麦F贔 管藻泙`會す縄`~亨† }〟麦^ f个f f鱗〝^『`て 骨 管會亨f~  」寶』鼻^ 茸今 〟 〝ぬ_二二す Eg跚慣,打‡t tFE〔 己 璽叶『』} 管ー昆`會璽}諮"~そ 〟〝麦〝静麦麦帯}  専〟「 「
『 f~...
Segment tree

繍 このようプよ二分木をイ竿って区Fョ『を管王里する

デ-タ‡蕾造です。

* 今回のイ麦ーーナ三と`各丿ードーニ「区Fョ弓内の数の手ロ」

を‡寺てーま良L丶です。
Segment tree

離 ネ刀其且状態
segment t「ee

・ 篁d旦(2,ー)とし丶うクエ'丿 (場戸斤2ー二ーを足す)ヵヾ来

 

・ 赤し丶色をつーナナニ丿ードーニーを足します。
Segment t「ee

〝 糸売[ナてAdd(。,工)とし丶うクエ'丿(場戸斤囗ーニエを足
す)カヾ来ナニら、
segment t「ee

・ 次ー二、 Sum(。,2)とし丶うクエ'丿 (0~2の区Fョ守の未ロを求
める)ヵヾ来ナニら'・'

  

・ 赤L丶区Fョ寸の和を答えます。

・ ー+ー=2!
segment t「ee

・ 続ーナて、 Sgm(ェ,2)とし丶うクエ'丿 (ー~2の区Fョ『の未ロを
求める)ヵ〝来ナニら・・'

 

' 0+ー=ー!
男ー]角奉

〝 平方分害ー]
髑 定数Dを享央めて、 ー・・D,D+ー.・2D,2D+ー.ー3D,.・・ごと

ー二分害ー]して、 N/Dイ固の酉己夜ー]や'丿ス卜をイ吏って愚
直ー二管王里する。

離 綾ー]えーまタイプー のクエ'丿ーま、...
男ー]角軍

・ タイプ2のクエ'丿なら` 「ー~k・エ番の酉己夜ー]の要

素数の手ロヵヾX未満」とプよるようプよ最丿]丶のkを見
つーナます。 愚直ーニg'jヵ丶ら見て挿守っても。(N/D)
の言十算量で見つ力丶叫丿ます。

・ そして、k...
男ー]角奉

* 夕イプー のクエ'丿で 。(D)
離 夕イプ2のクエ'丿で。(max(N/D,D))
繍 max(N/D'D} を最ノj丶ィヒするょぅナょ D ーまVNであ

L丿` Dー二VN を用L丶ると言十算量ーま、 。(QVN) とな...
DFロ野題 角奉言党

見ナ二ことのプよし丶多エ頁式
佇ロ守題‡且琵要

繍 N次多エ頁式P(x)ヵヾある。
~ P(。)~P(N)の{直ヵヾ与えられる。

離 P(T)のイ直を求めよ。 (m。d ー,000,000,007)
* TSー。^9

* 40,点:NSー。0

髑 80,点二NS30...
4。,点 角軍麦去

* N=3,P(0)=ー,P(ー)=3,P(2)=フ の場合を考える。
繍 p(x):a2x2+aユx+a。として` xーニ0,エ,2をイ篭入する。

離 。Xa2+0Xaユ+ーXa。 ニ ー

離 ーXa2+ーXaー+ー...
8〇,点 角睾麦去

・ ラグ`ランジユ‡甫Fョ守とし丶う手享去をイ吏う。
・ Q〝(X) = (x・0)*(X-ー)*・・・*(X・N)/(x・i)

・ とし丶う式を考える。

・ P(x)ーまこの式を使つて、

・ P(x) : Cgx観...
8。,点角軍麦去

* Q繍(x)とし丶う式の牛寺誓致として`

離 Q〕(。)~Q繍(N)のうちQ〝(i)以外のイ直ヵヾ0です。
繍 この牛寺ぞ致のナニめ`

離 P(i) = cgx観(i)+cユxQエ(i)+...+CNXQN(i)

…...
8〇,点 角睾麦去

・ 三荒れとしてーま`

・ Ci=興(i)/P(i)をイ吏つてC。~CNを求める。

・ P(T) = C。観(T)+CエQー(T)+・・〟+CNQN(T)

・ を言十算して P(T)を求める。

・ 各 Q(i) ー...
満 ,点 角睾麦去

・ 求めナニし丶Q〕(i)の{直ーま、

' 則(。)~QN(N)

' 則(T)~QN(T)

・ これらの言十算をまとめて。(N)で挿守し`ナニし丶。
満,点 角奉享去

〝 則(。)~QN(N)

ー Q繍(i)とQ繍+](i+ェ)ヵヾ{以てし丶ることを未ー]用する。
繍 Q'(i) = (i・。)*・・・*(・ー)*(ー)*-'・*(i・N)

離 Q繍+ユ(i+ー) = ((i+ー)-0...
満 ,点 角軍麦去

・ 闔(T)~QN(T)

・ Q〔(T) = (T・0)*(T・ー)*'・・*(T'N)/(T・i)

・ N壬Tなので(T・i)ーま。ーニな叫丿ません。

・ そのナニめ、あらヵ丶じめ(T・。)*(T・ユ)*・・.*(...
Upcoming SlideShare
Loading in …5
×

AtCoder Regular Contest 033 解説

5,520 views

Published on

AtCoder Regular Contest 033 解説

Published in: Education
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1lite.top/oT7zi ◀ ◀ ◀ ◀
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

AtCoder Regular Contest 033 解説

  1. 1. AtC。de「 Reguーa「 C0nteSt 033 解説 AtC0der Atc。der株式会ネ土
  2. 2. ;ー_工)'一 一ニ 丁` '亡 彦 』 一 ノー丶
  3. 3. 佇ロ守題‡且琵要 離 長さ N の文字夜ー]の音B分文字菱ーーのイ固数を求め よ。 (N <= ー。0。) ー 蔽ーーえーま N = 3 ブよら、 文字菱ー]を“'ABC"とすると` 盧 ,,A,,, ,,B,,, 野,c,,, 野,AB,,, 藻,BC,,, ,,ABC,, 離 の6イ固の音B分文字夜ーーヵヾある。
  4. 4. 角軍麦去 * L丶ろL丶ろな考え方ヵヾあ~丿ますヵヾ、し丶ずれも、 離 ー+2+3+・・・+N (ニ N*(N+ー)/2) ~ のような式を言十算すれーま良L丶とし丶うことヵヾわ ヵ丶叫丿ます。 髑 これを丿レ-フ〝をイ吏って言十算しナニL丿、数式で一 発吾十算をしナニ叫丿しましよう。 髑 考え方の伊]をL丶〈つヵ丶糸召介します。
  5. 5. 考え方ー 離 音B分文字夜ー]の長さごとーニ場合分ーナしてみる。 離 N=3の伊jナ三と` 遭 長さ ー の音B分文字麦ー]ニ 3 ィ固 寶 長さ 2 の音B分文字麦ー]ニ 2 ィ固 離 長さ 3 の音B分文字菱ーー: ー イ固 髑 つま叫丿長さNの文字夜ー]の音B分文字夜ーーーま、 離 N+(N-ー)+・・.+2+ー個
  6. 6. 考え方2 ・ 耳又叫丿出す区Fョ守の左立嵩と右立崗を全て試してみる。 ・ N = 3 の傾ー]ナ三と、 ・ [A]BC, [AB]C, [ABC], A[B]C, A[BC], AB[C] ・ とし丶ラ6つの耳又〝丿出し方ヵヾある。 ・ 2重丿し一プでイ立置を全て言式してみて、 ・ 右立崗ヵヾ左立崗よ叫丿も右ー二あるものを数ぇる。
  7. 7. ・ N=ー:ー個 髑 N=2:3個 ~ N=3:6個 * N=4:ー。{固 ー N ヵヾ ー ‡曽えるごとーニ答えヵヾ N ナミーナ士曽えるらしL丶 ? ぅN・ェヵヾNー二士曽えナニ時ーニ士曽える音B分文字夜ーーーま`最後 雰苳字を含むような音B分文字夜ー]で、それーまNイ固ある 丶り。 ー よつて` ー + 2 + ・.・ + N とし丶う式ー二な叫丿ます。
  8. 8. ~〝 丿〝'丿' 一一丶丿一ご〝~プ 丿 / ノ ^ー^"'〟'ノ丶;丶ノノ丶
  9. 9. Fロ『題根牙要 ・ 2つの整数の集合A,Bの」accardイ系数を求めよ。 ・ Jaccard係数とーま` ' AとBの共通部分の要素数/AとBの和集合の要素数 (size(AnB)/size(AUB)) ・ 4。,点:A,Bの要素数sー000、 A,Bーニ含まれる整数sー。^5 ・ 70,点:A,Bの要素数sェ0^5、 A,Bーこ含まれる整数sェ。^5 ・ 満,点:A,Bの要素数sー0^5、 A,Bーニ含まれる整数sー0^9
  10. 10. 4〇,点 角睾麦去 ・ A,Bの共通音B分の要素数をXとすると、A,Bの 手ロ集合の要素数ーま、 ・ Aの要素数(N^)+Bの要素数(Ng)・x ・ と言十算できる。 ・ Xーま、Aの要素とBの要素をそれぞれ舌氏める2 重丿レ一プを回し`ー致しナニもののィ固数を数え ると求まL丿ます。
  11. 11. 7〇,点 角睾麦去 ・ 2重丿し一プをー重丿レープーニしナニし丶。 ・ Aの要素を舐めて、その要素ヵヾBー二含まれる のヵ丶どうヵ丶を高速ーニ半ー]定しナニし丶。 ・ 要素数ヵヾーロ^5+dの酉己夜ーーをイ羊つて、Bー二含まれ る数の場戸斤ー二ェをイ七入しておき、それ以外の 場戸斤ー二。をイ篭入しておく。 ・ すると丶酉己夜ーーの{直を参照するナ三ーナで`ぁる数 ヵヾBー二含まれるのヵ丶どうヵ丶を半']定できる。
  12. 12. 満 ,点 角睾享去 ・ 数の上B良ヵヾ大きし丶ナニめ、酉己夜ーjヵヾ耳又れなL丶。 ・ Bを`ノ一トしておき`二分‡突索を用し丶る。 ・ set(集合を‡及うクラス〉を用し丶る。 ・ などの方夏去で`ある数ヵヾBー二含まれるのヵ丶ど うカ丶を高速ー二半ーj定できる。
  13. 13. 一一一一ロ CFロ守題 角睾
  14. 14. 佇ロ守題‡且琵要 離 数の集合ー二対するクエ'丿をQ個処王里せよ。 ー 夕イプーニ集合ー二Xを追力ロする。 離 夕イプ2ニ集合のX番目の数を答え、肖ー]除す る。 遭 Q <= 200000, X <= 200000
  15. 15. 背景 繍 「ぇ一っと、とも丿あえず set ーニ突っ込んで'ー'」 離 Set ー二ーま「X 番目 の数」を 耳又L丿出す‡幾肯巨【まつし丶てし丶ません。
  16. 16. 角軍麦去 ・ 「X番目の数」を言し丶換えてみる。 ・ ぅ「それ以下の数ヵヾXイ固であるようプよ数のう ち最も丿ー丶さし丶数」 ・ とし丶うことーま、 ・ 「ぁる数以下の数ヵヾし丶くつあるヵ丶」ヵヾ高速ー二 求まるデ一タ‡茸造ヵヾあれーま二分‡栞索で求め ることヵヾできそう。
  17. 17. 團 }二 『「麦F贔 管藻泙`會す縄`~亨† }〟麦^ f个f f鱗〝^『`て 骨 管會亨f~ 」寶』鼻^ 茸今 〟 〝ぬ_二二す Eg跚慣,打‡t tFE〔 己 璽叶『』} 管ー昆`會璽}諮"~そ 〟〝麦〝静麦麦帯} 専〟「 「 『 f~ 離麦〝サ』声 ゴ昆`貴 寶 jS」E〝gm牛貢 †静掌亨會 會養}昆二昆` 璽f} ;麦 〝縄遭`牛〝寶『† …麦 }~主 「遭 †〝〝ニ 亨† 」~〝†遭† `一「 ^ 璽璽 璽}}〝 f 遭 胆麦『i麦評 声 誓寶 亨 }ず 〝今魯〟 〝 管} 寶一 誓 昂J 「 ニ ヤ 〝~ 牛 J 『『 } 〝 } }今 計『 翼 萱鄭昆 董†主J ニ〝 丁[}ー含言疇董 董讐 亨^繍具}f〝g一叶 静」」 ニ麦… 亘二〝麦 二 『 〝帯}璽ェニニ 寶す^]會†す 二 ー〝亨 具f f] 』繍† }`昆こ麦… [艸}}_〟} 『 ~ ;士†ー }〝『† 主二} 童j 壽 〝二〝} 寶]叶主寶吟豆〝ff〟上 璽璽~ 喜J~嘗幹 †『}〟}『」个〝`叶ニ~縄 }ニ†f〝 〝'寶芋 ††ヱ
  18. 18. Segment tree 繍 このようプよ二分木をイ竿って区Fョ『を管王里する デ-タ‡蕾造です。 * 今回のイ麦ーーナ三と`各丿ードーニ「区Fョ弓内の数の手ロ」 を‡寺てーま良L丶です。
  19. 19. Segment tree 離 ネ刀其且状態
  20. 20. segment t「ee ・ 篁d旦(2,ー)とし丶うクエ'丿 (場戸斤2ー二ーを足す)ヵヾ来 ・ 赤し丶色をつーナナニ丿ードーニーを足します。
  21. 21. Segment t「ee 〝 糸売[ナてAdd(。,工)とし丶うクエ'丿(場戸斤囗ーニエを足 す)カヾ来ナニら、
  22. 22. segment t「ee ・ 次ー二、 Sum(。,2)とし丶うクエ'丿 (0~2の区Fョ守の未ロを求 める)ヵヾ来ナニら'・' ・ 赤L丶区Fョ寸の和を答えます。 ・ ー+ー=2!
  23. 23. segment t「ee ・ 続ーナて、 Sgm(ェ,2)とし丶うクエ'丿 (ー~2の区Fョ『の未ロを 求める)ヵ〝来ナニら・・' ' 0+ー=ー!
  24. 24. 男ー]角奉 〝 平方分害ー] 髑 定数Dを享央めて、 ー・・D,D+ー.・2D,2D+ー.ー3D,.・・ごと ー二分害ー]して、 N/Dイ固の酉己夜ー]や'丿ス卜をイ吏って愚 直ー二管王里する。 離 綾ー]えーまタイプー のクエ'丿ーま、 kD < X s (k+ー)D ナ三っナニとすると、 k番の酉己夜ーjー二。(D)で‡軍入する。
  25. 25. 男ー]角軍 ・ タイプ2のクエ'丿なら` 「ー~k・エ番の酉己夜ー]の要 素数の手ロヵヾX未満」とプよるようプよ最丿]丶のkを見 つーナます。 愚直ーニg'jヵ丶ら見て挿守っても。(N/D) の言十算量で見つ力丶叫丿ます。 ・ そして、k番目の酉己夜ーーのうちX-「ェ~k・ー番の酉己 夜ー]の要素数の手ロ」 番目の数カヾ答えとなるの でそれを出力し、。(D)で肖ー]除します。
  26. 26. 男ー]角奉 * 夕イプー のクエ'丿で 。(D) 離 夕イプ2のクエ'丿で。(max(N/D,D)) 繍 max(N/D'D} を最ノj丶ィヒするょぅナょ D ーまVNであ L丿` Dー二VN を用L丶ると言十算量ーま、 。(QVN) とな L丿ます。 縄 このょうーニ` 夕スクを分害ー]して言十算量をの(VN) ー二する手享去を平方“丶害ーjとロ平ぴます。麦圧用'ー'生`の 高L丶テク二`ンクブょの霊`覚えておし丶て‡貝ーまプ離 し丶でしよう。
  27. 27. DFロ野題 角奉言党 見ナ二ことのプよし丶多エ頁式
  28. 28. 佇ロ守題‡且琵要 繍 N次多エ頁式P(x)ヵヾある。 ~ P(。)~P(N)の{直ヵヾ与えられる。 離 P(T)のイ直を求めよ。 (m。d ー,000,000,007) * TSー。^9 * 40,点:NSー。0 髑 80,点二NS3000 遭 満,点二NSー0^5
  29. 29. 4。,点 角軍麦去 * N=3,P(0)=ー,P(ー)=3,P(2)=フ の場合を考える。 繍 p(x):a2x2+aユx+a。として` xーニ0,エ,2をイ篭入する。 離 。Xa2+0Xaユ+ーXa。 ニ ー 離 ーXa2+ーXaー+ーXa。 ニ 3 縄 4Xa2+2Xaー+ーXa。 ニ 7 縄 とし丶う連立方手呈式を角窒ーナーま係数ヵヾ言十算できる。 ー 連立方手呈式ーま、‡帯き出し夏去をイ吏えーま角摯くこと ヵヾできる。
  30. 30. 8〇,点 角睾麦去 ・ ラグ`ランジユ‡甫Fョ守とし丶う手享去をイ吏う。 ・ Q〝(X) = (x・0)*(X-ー)*・・・*(X・N)/(x・i) ・ とし丶う式を考える。 ・ P(x)ーまこの式を使つて、 ・ P(x) : Cgx観(x)+C]xQユ(x)+・・.+C"xQN(x) ・ とし丶う升彡で表すことヵヾできる。
  31. 31. 8。,点角軍麦去 * Q繍(x)とし丶う式の牛寺誓致として` 離 Q〕(。)~Q繍(N)のうちQ〝(i)以外のイ直ヵヾ0です。 繍 この牛寺ぞ致のナニめ` 離 P(i) = cgx観(i)+cユxQエ(i)+...+CNXQN(i) … =c〟xQi(i) * とプよ叫丿、 遭 Ci=q(i)/P(i) * としてC〟を言十算することヵ〝できます。
  32. 32. 8〇,点 角睾麦去 ・ 三荒れとしてーま` ・ Ci=興(i)/P(i)をイ吏つてC。~CNを求める。 ・ P(T) = C。観(T)+CエQー(T)+・・〟+CNQN(T) ・ を言十算して P(T)を求める。 ・ 各 Q(i) ーま 。(N) で言十算でき、 。(N) 回言十算する ナニめ、 合言十で 。(N^2) とプょし丿ます。
  33. 33. 満 ,点 角睾麦去 ・ 求めナニし丶Q〕(i)の{直ーま、 ' 則(。)~QN(N) ' 則(T)~QN(T) ・ これらの言十算をまとめて。(N)で挿守し`ナニし丶。
  34. 34. 満,点 角奉享去 〝 則(。)~QN(N) ー Q繍(i)とQ繍+](i+ェ)ヵヾ{以てし丶ることを未ー]用する。 繍 Q'(i) = (i・。)*・・・*(・ー)*(ー)*-'・*(i・N) 離 Q繍+ユ(i+ー) = ((i+ー)-0)*・・・*(・ー)*(ー)*・・・*((i+ー)'N) ~ (i・N)のエ頁ヵヾ夏威叫丿`((i+ー)・0)のー頁ヵヾ士曽える。 髑 その差分ナ三ーナを言十算してQー(i)ヵ丶らQ繍+](i+工)を 言十算してし丶ーナーまよし丶。
  35. 35. 満 ,点 角軍麦去 ・ 闔(T)~QN(T) ・ Q〔(T) = (T・0)*(T・ー)*'・・*(T'N)/(T・i) ・ N壬Tなので(T・i)ーま。ーニな叫丿ません。 ・ そのナニめ、あらヵ丶じめ(T・。)*(T・ユ)*・・.*(T・N)ヵ丶ら (T一i)を害ーーれーまし丶し丶。 ・ これで、 。(N ー。g m。d) 解ーナるようー二な叫丿ます。 (害ーjレ丿算ー二。(ー。g m。d)ヵ丶ヵ丶叫丿ます〉

×