SlideShare a Scribd company logo
1 of 14
Download to read offline
ARC #003 D
nullmineral      「シャッフル席替え」
「シャッフル席替え」とは

●   AtCoder Regular Contest #003 D問題
●   問題概要:
       –   N人が円形のテーブルの周囲に座っている
       –   ランダムに2人選んで入れ替える操作をK回行う
       –   隣り合わせにしてはいけないペアがM個ある
       –   入れ替えが終わった時に上記ペアがどこも隣り合わ
            せになっていない確率を求めよ
       –   ただし 2 ≦ N ≦ 11, 0 ≦ K ≦ 20, 0 ≦ M ≦ 10
       –   制限: メモリ 64MB, 時間 10s, 許容誤差 ±0.002
解法を考える

●   動的計画法かな?
●   並び方は (11!) = 40M もある
●   DP用に int 型の配列をひとつとるだけで 160MB
●   どうみても MLE/TLE する d==(^o^)==b
●   頑張るとできるのかもしれないけど辛そう
●   ふぇぇ……数論わからないよぉ……
●   解法もうわかんねぇなぁ
乱択という選択肢

●   すべての可能性をシミュレーションするのは不可能
●   適当に何回か試行してみて確率を計算する
●   十分な回数の試行を行えば良い精度に
●   求められている精度はわりと甘い(ここ重要)
●   1回の試行に O( K + N^2 ) くらいかかる気がする
●   とりあえず 100万回 くらいは試行できそう?
●   けどそれだけで精度足りるのかな……
●   試行回数から精度を計算できないかな……
_人人人人人人人_
> 突然の確率論 <
 ̄Y^Y^Y^Y^Y^Y^ ̄
Hoeffding's Inequality

●   X1, X2, …, Xn を独立な Bernoulli 確率変数とする
●   X = X1 + X2 + … + Xn とする
●   このとき以下の式が成立する

●   Pr( | X – E[X] | ≧ εn ) ≦ 2 e^( -2nε^2 )
Pr( | X – E[X] | ≧ εn ) ≦ 2 e^( -2nε^2 )

●   なんだこの難解な不等式は (驚愕)
●   そもそも Bernoulli 確率変数ってなによ
●   まあつまりなにが言いたいかというと
●   確率 p で表が出るコインを n 回投げたときに、表
    が出た回数が (p ± ε)n 回の範囲に収まらない
    確率は 2 e^( -2nε^2 ) 以下になるという話です
●   ちょっと何言ってるか分かんないです
●   確率論やべぇよ……やべぇよ……
●   もうちょっと簡単に言うと
●   「コイントスの試行回数」と「許容誤差」を決めると
    「許容誤差内に収まる確率の下限」を求められる
●   「許容誤差」と「許容誤差内に収まる確率」を決める
    と「コイントスの試行回数」を求められる
とりあえず適用してみよう

●   「シャッフル席替え」に戻ってみる
●   コインの表/裏 → 席替え成功/失敗 に置き換える
●   するとさっきの不等式が適用できる
●   今回は 「許容誤差」と「許容誤差内に収まる確率」
    から「試行回数」を求めたい
●   テストケースが 100 個あると仮定すると、 1 ケース
    あたり 99.99% くらいの確率で通せれば、全体とし
    て 99% くらいの確率でACできる
とりあえず計算してみよう

●   許容誤差 = 0.002
●   許容誤差内に収まる確率 = 0.9999
●   これらをさっきの式に代入して二分探索すると
●   0.9999 ≦ 1 – 2 e^( -0.000008 × n^2 )
●   n ≧ 1237936 と出てくる
●   130万回 くらい試行しておけばまあ安心?
●   それぐらいなら時間内に計算できそう
さぶみっと!

●   とりあえずたくさん投げて確かめてみます
●   20回くらい投げました
    (ジャッジサーバーに高負荷をかける競技プログラマのクズ)
●   ぜんぶAC!!!
●   ちなみに 65万回 くらいにするとWAがちょこちょこ
    (計算すると50%くらいのAC率しか保証されないからね)
    (実際はもっと高い確率でACするけど)
証明? なにそれおいしいの?

●   そういえばヘフディングの不等式を証明していない
●   書くの面倒だしみんな寝ると思うので省きます
●   証明はみなさんへの課題とします
てきとうな考察

●   さっきの式を眺めてみる
●   Pr( | X – E[X] | ≧ εn ) ≦ 2 e^( -2nε^2 )
●   試行回数が少ないと保証AC率は下がる
●   許容誤差が厳しくなると保証AC率は下がる
●   許容誤差が 1/x 倍になっても保証AC率を変えな
    いためには、試行回数を x^2 倍にする必要がある
●   ↑他の乱択っぽい問題にも使いまわせる?
まとめ?

●   解析はつらぽよー (数学できないと死に直結する)
●   乱択もうわかんねぇなぁ……。
●   乱択は最近のプロコンでのトレンド!!!
    ってiwiwiさんが言っていた気がする
●   とりあえず計算量めいっぱいまで試行しましょう
    いちいちこんなこと考察してる暇なさそう(何も考えずにsubmitするクズ)



●   ふぇぇ ✧*。ヾ(。>__<。)ノ゙。*✧

More Related Content

What's hot

プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法Takuya Akiba
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドMasaki Hara
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~Takuya Akiba
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造Takuya Akiba
 
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端Yoichi Iwata
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門Yoichi Iwata
 
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Inc.
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Inc.
 
2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方Tsuneo Yoshioka
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化yosupo
 
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Inc.
 
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方Kensuke Otsuki
 
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説AtCoder Inc.
 
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Inc.
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)AtCoder Inc.
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解くshindannin
 

What's hot (20)

プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
Rolling hash
Rolling hashRolling hash
Rolling hash
 
目指せグラフマスター
目指せグラフマスター目指せグラフマスター
目指せグラフマスター
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
 
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
 
2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
 
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
 
双対性
双対性双対性
双対性
 
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説
 
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 

Viewers also liked

部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎Kazuma Mikami
 
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系tmaehara
 
D言語をたまには真面目に紹介してみる
D言語をたまには真面目に紹介してみるD言語をたまには真面目に紹介してみる
D言語をたまには真面目に紹介してみるN Masahiro
 
競技プログラミングにおけるMajorization
競技プログラミングにおけるMajorization競技プログラミングにおけるMajorization
競技プログラミングにおけるMajorizationskyaozora
 
パソコン甲子園 ケーキ屋
パソコン甲子園 ケーキ屋パソコン甲子園 ケーキ屋
パソコン甲子園 ケーキ屋Kazuma Mikami
 
セグツリーイメージ
セグツリーイメージセグツリーイメージ
セグツリーイメージKazuma Mikami
 
文字列検索のいろいろ
文字列検索のいろいろ文字列検索のいろいろ
文字列検索のいろいろKazuma Mikami
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題tmaehara
 
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~Yuma Inoue
 
永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライド永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライドMasaki Hara
 

Viewers also liked (20)

部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎
 
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系
 
D言語をたまには真面目に紹介してみる
D言語をたまには真面目に紹介してみるD言語をたまには真面目に紹介してみる
D言語をたまには真面目に紹介してみる
 
素集合データ構造
素集合データ構造素集合データ構造
素集合データ構造
 
競技プログラミングにおけるMajorization
競技プログラミングにおけるMajorization競技プログラミングにおけるMajorization
競技プログラミングにおけるMajorization
 
パソコン甲子園 ケーキ屋
パソコン甲子園 ケーキ屋パソコン甲子園 ケーキ屋
パソコン甲子園 ケーキ屋
 
セグツリーイメージ
セグツリーイメージセグツリーイメージ
セグツリーイメージ
 
データ構造と全探索
データ構造と全探索データ構造と全探索
データ構造と全探索
 
グラフと木
グラフと木グラフと木
グラフと木
 
文字列検索のいろいろ
文字列検索のいろいろ文字列検索のいろいろ
文字列検索のいろいろ
 
Coqの公理
Coqの公理Coqの公理
Coqの公理
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
動的計画法
動的計画法動的計画法
動的計画法
 
ソーティングと貪欲法
ソーティングと貪欲法ソーティングと貪欲法
ソーティングと貪欲法
 
計算量とオーダー
計算量とオーダー計算量とオーダー
計算量とオーダー
 
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
 
計算量
計算量計算量
計算量
 
辺彩色
辺彩色辺彩色
辺彩色
 
永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライド永続データ構造が分からない人のためのスライド
永続データ構造が分からない人のためのスライド
 

Similar to ARC#003D

K2PC Div1 E 暗号化
K2PC Div1 E 暗号化K2PC Div1 E 暗号化
K2PC Div1 E 暗号化Kazuma Mikami
 
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Nagi Teramo
 
AtCoder Regular Contest 027 解説
AtCoder Regular Contest 027 解説AtCoder Regular Contest 027 解説
AtCoder Regular Contest 027 解説AtCoder Inc.
 
情報オリンピック夏合宿発表
情報オリンピック夏合宿発表情報オリンピック夏合宿発表
情報オリンピック夏合宿発表Kazuma Mikami
 
AtCoder Regular Contest 017
AtCoder Regular Contest 017AtCoder Regular Contest 017
AtCoder Regular Contest 017AtCoder Inc.
 
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説AtCoder Inc.
 
Mastermind
MastermindMastermind
Mastermindtomerun
 
ICFP2009-いかにして我々は戦ったか
ICFP2009-いかにして我々は戦ったかICFP2009-いかにして我々は戦ったか
ICFP2009-いかにして我々は戦ったかina job
 

Similar to ARC#003D (8)

K2PC Div1 E 暗号化
K2PC Div1 E 暗号化K2PC Div1 E 暗号化
K2PC Div1 E 暗号化
 
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法
 
AtCoder Regular Contest 027 解説
AtCoder Regular Contest 027 解説AtCoder Regular Contest 027 解説
AtCoder Regular Contest 027 解説
 
情報オリンピック夏合宿発表
情報オリンピック夏合宿発表情報オリンピック夏合宿発表
情報オリンピック夏合宿発表
 
AtCoder Regular Contest 017
AtCoder Regular Contest 017AtCoder Regular Contest 017
AtCoder Regular Contest 017
 
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
 
Mastermind
MastermindMastermind
Mastermind
 
ICFP2009-いかにして我々は戦ったか
ICFP2009-いかにして我々は戦ったかICFP2009-いかにして我々は戦ったか
ICFP2009-いかにして我々は戦ったか
 

Recently uploaded

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Recently uploaded (8)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

ARC#003D

  • 1. ARC #003 D nullmineral 「シャッフル席替え」
  • 2. 「シャッフル席替え」とは ● AtCoder Regular Contest #003 D問題 ● 問題概要: – N人が円形のテーブルの周囲に座っている – ランダムに2人選んで入れ替える操作をK回行う – 隣り合わせにしてはいけないペアがM個ある – 入れ替えが終わった時に上記ペアがどこも隣り合わ せになっていない確率を求めよ – ただし 2 ≦ N ≦ 11, 0 ≦ K ≦ 20, 0 ≦ M ≦ 10 – 制限: メモリ 64MB, 時間 10s, 許容誤差 ±0.002
  • 3. 解法を考える ● 動的計画法かな? ● 並び方は (11!) = 40M もある ● DP用に int 型の配列をひとつとるだけで 160MB ● どうみても MLE/TLE する d==(^o^)==b ● 頑張るとできるのかもしれないけど辛そう ● ふぇぇ……数論わからないよぉ…… ● 解法もうわかんねぇなぁ
  • 4. 乱択という選択肢 ● すべての可能性をシミュレーションするのは不可能 ● 適当に何回か試行してみて確率を計算する ● 十分な回数の試行を行えば良い精度に ● 求められている精度はわりと甘い(ここ重要) ● 1回の試行に O( K + N^2 ) くらいかかる気がする ● とりあえず 100万回 くらいは試行できそう? ● けどそれだけで精度足りるのかな…… ● 試行回数から精度を計算できないかな……
  • 6. Hoeffding's Inequality ● X1, X2, …, Xn を独立な Bernoulli 確率変数とする ● X = X1 + X2 + … + Xn とする ● このとき以下の式が成立する ● Pr( | X – E[X] | ≧ εn ) ≦ 2 e^( -2nε^2 )
  • 7. Pr( | X – E[X] | ≧ εn ) ≦ 2 e^( -2nε^2 ) ● なんだこの難解な不等式は (驚愕) ● そもそも Bernoulli 確率変数ってなによ ● まあつまりなにが言いたいかというと ● 確率 p で表が出るコインを n 回投げたときに、表 が出た回数が (p ± ε)n 回の範囲に収まらない 確率は 2 e^( -2nε^2 ) 以下になるという話です
  • 8. ちょっと何言ってるか分かんないです ● 確率論やべぇよ……やべぇよ…… ● もうちょっと簡単に言うと ● 「コイントスの試行回数」と「許容誤差」を決めると 「許容誤差内に収まる確率の下限」を求められる ● 「許容誤差」と「許容誤差内に収まる確率」を決める と「コイントスの試行回数」を求められる
  • 9. とりあえず適用してみよう ● 「シャッフル席替え」に戻ってみる ● コインの表/裏 → 席替え成功/失敗 に置き換える ● するとさっきの不等式が適用できる ● 今回は 「許容誤差」と「許容誤差内に収まる確率」 から「試行回数」を求めたい ● テストケースが 100 個あると仮定すると、 1 ケース あたり 99.99% くらいの確率で通せれば、全体とし て 99% くらいの確率でACできる
  • 10. とりあえず計算してみよう ● 許容誤差 = 0.002 ● 許容誤差内に収まる確率 = 0.9999 ● これらをさっきの式に代入して二分探索すると ● 0.9999 ≦ 1 – 2 e^( -0.000008 × n^2 ) ● n ≧ 1237936 と出てくる ● 130万回 くらい試行しておけばまあ安心? ● それぐらいなら時間内に計算できそう
  • 11. さぶみっと! ● とりあえずたくさん投げて確かめてみます ● 20回くらい投げました (ジャッジサーバーに高負荷をかける競技プログラマのクズ) ● ぜんぶAC!!! ● ちなみに 65万回 くらいにするとWAがちょこちょこ (計算すると50%くらいのAC率しか保証されないからね) (実際はもっと高い確率でACするけど)
  • 12. 証明? なにそれおいしいの? ● そういえばヘフディングの不等式を証明していない ● 書くの面倒だしみんな寝ると思うので省きます ● 証明はみなさんへの課題とします
  • 13. てきとうな考察 ● さっきの式を眺めてみる ● Pr( | X – E[X] | ≧ εn ) ≦ 2 e^( -2nε^2 ) ● 試行回数が少ないと保証AC率は下がる ● 許容誤差が厳しくなると保証AC率は下がる ● 許容誤差が 1/x 倍になっても保証AC率を変えな いためには、試行回数を x^2 倍にする必要がある ● ↑他の乱択っぽい問題にも使いまわせる?
  • 14. まとめ? ● 解析はつらぽよー (数学できないと死に直結する) ● 乱択もうわかんねぇなぁ……。 ● 乱択は最近のプロコンでのトレンド!!! ってiwiwiさんが言っていた気がする ● とりあえず計算量めいっぱいまで試行しましょう いちいちこんなこと考察してる暇なさそう(何も考えずにsubmitするクズ) ● ふぇぇ ✧*。ヾ(。>__<。)ノ゙。*✧