SlideShare a Scribd company logo
1 of 20
Download to read offline
E問題  解説  
「天下⼀一魔法使い」
天下⼀一プログラマーコンテスト2015  予選A
問題概要
円周上にN個の点が等間隔で並んでいる  
点をつないでいくつかの多⾓角形を作る  
・各点はちょうど1つの多⾓角形に含まれなければならない  
・多⾓角形の頂点数は全てK以上でなければならない  
・多⾓角形がひとつながりになっていなければならない  
このような点のつなぎ⽅方は何通りか?  
3  ≦  N  ≦  400  
3  ≦  K  ≦  N
部分点  1
N  ≦  50  
N/3  <  K
部分点  1
N/3  <  K  
→  多⾓角形は⾼高々2つしか作れない  
N  <  3K  であり、多⾓角形を3つ以上作るには点が⾜足りない
部分点  1
多⾓角形が1つの場合:1通り  
多⾓角形が2つの場合:  
「K頂点以上の多⾓角形を2つ作る場合の数」

(ひとつながりでないものも含めたもの)  
から  
「2つの多⾓角形が交差しない場合の数」  
を引く
部分点  1
・K頂点以上の多⾓角形を2つ作る場合の数  
N個の点を2つのグループに分ける場合の数と同じ  
ʻ‘Aʼ’とʼ’Bʼ’を合計N個並べる場合の数  /  2  と同じ

(2つのグループは区別しないため)  
ʻ‘Aʼ’の個数を  K  から  N-‐‑‒K  まで試し、その和を取る  
ʻ‘Aʼ’の個数がa個のときは、N  C  a  
コンビネーションの計算にはパスカルの三⾓角形などを⽤用いれば良良い
部分点  2
N  ≦  50  
この部分点は、計算量量が多項式ならば満点解法よりも多少効
率率率が悪い部分があっても取ることができます
満点解法
N  ≦  400  
O(N^3)  のアルゴリズムなら満点を取ることができます
満点解法
「ひとつながりかどうかを無視した場合の数」  
から  
「ひとつながりでない場合の数」  
を引く
満点解法
説明のため、点の個数が  i  個のときの答えを  
A[i]  
としておきます(忘れないでください)  
(つまり、この問題⾃自体の答えは  A[N]  になります)
ひとつながりかどうかを無視した場合の数
N個の点をいくつかの「K個以上の点を含むグループ」に分
ける場合の数と同じ  
dp[i]  =  i  個の点をいくつかの「K  個以上の点を含むグルー

          プ」にわける場合の数  
というDPを計算する
DPの計算
dp[i]  =  i  個の点をいくつかの「K  個以上の点を含むグルー

          プ」にわける場合の数  
追加する多⾓角形は真北北の点を含むようにすると、このように
重複なく計算できる  
dp[0]	
  =	
  1	
  
for	
  (i	
  :	
  0	
  ~	
  N)	
  for	
  (j	
  :	
  K	
  ~	
  N)	
  {	
  
	
  	
  dp[i+j]	
  +=	
  dp[i]	
  *	
  (i+j-­‐1)	
  C	
  (j-­‐1)	
  
}
ひとつながりかどうかを無視した場合の数
説明のため、  
G[i]  =  dp[i]  
            =  i  個の点をいくつかの「K  個以上の点を含むグル

              ープ」にわける場合の数  
としておきます(忘れないでください)
真北北の点を含む連結成分に注⽬目して分割する  
連結成分:ひとつながりになっている極⼤大な部分集合
ひとつながりでない場合の数
各部分をそれぞれ円に直してみる  
ひとつながりでない場合の数
⾚赤:A[6]  
⻘青:G[3]  
緑:G[4]  
灰:G[6]  
これらを掛け合わせたものがこの分割での場合の数  
(⾚赤のみひとつながりで、それ以外はなんでもよい)
ひとつながりでない場合の数
ある分割についての場合の数は  
・A[(真北北の点を含む連結成分に含まれる点の個数)]  
・分割された各部分について

  G[(その部分に含まれる点の個数)]  
を掛け合わせたもの  
各分割に対してこれを⾜足し合わせれば、ひとつながりでない
場合の数が求まる
ひとつながりでない場合の数
DP[i][j]  =  i  個の点のうち  j  個の点が真北北の点を含む連結成

          分に含まれる場合の数  /  A[j]  
=  i  個の点のうち  j  個の点が真北北の点を含む連結成分に含まれるような分割につ

  いて、真北北の点を含む連結成分以外のつなぎ⽅方の個数を⾜足し合わせたもの  
というDPを計算する
DP
DP[0][0]	
  =	
  1	
  
for	
  (i	
  :	
  0	
  ~	
  N)	
  for	
  (j	
  :	
  0	
  ~	
  i)	
  {	
  
	
  	
  for	
  (k	
  :	
  0	
  ~	
  N)	
  {	
  
	
  	
  	
  	
  DP[i+k+1][j+1]	
  +=	
  DP[i][j]	
  *	
  G[k]	
  
	
  	
  }	
  
}
・Gを前計算する  
・DPを前計算する  
・Aを⼩小さい⽅方から計算していく  
・A[N]  を出⼒力力する
答えの求め⽅方
A[0]	
  =	
  1	
  
for	
  (i	
  =	
  1~N)	
  {	
  
	
  	
  A[i]	
  =	
  G[i]	
  
	
  	
  for	
  (j	
  :	
  1~(i-­‐1))	
  {	
  
	
  	
  	
  	
  A[i]	
  -­‐=	
  DP[i][j]	
  *	
  A[j]	
  
	
  	
  }	
  
}
・Gを前計算する                ←  O(N^2)  
・DPを前計算する                ←  O(N^3)  
・Aを⼩小さい⽅方から計算していく  ←  O(N^2)  
となり、O(N^3)  なので満点を得ることができる
計算量量

More Related Content

Viewers also liked

2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)Tatsuya Yokota
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計Takahiro Kubo
 
学部生向けベイズ統計イントロ(公開版)
学部生向けベイズ統計イントロ(公開版)学部生向けベイズ統計イントロ(公開版)
学部生向けベイズ統計イントロ(公開版)考司 小杉
 
5分でわかるベイズ確率
5分でわかるベイズ確率5分でわかるベイズ確率
5分でわかるベイズ確率hoxo_m
 
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...cvpaper. challenge
 
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15Yoichi Ochiai
 

Viewers also liked (7)

2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)
 
MIRU2014 tutorial deeplearning
MIRU2014 tutorial deeplearningMIRU2014 tutorial deeplearning
MIRU2014 tutorial deeplearning
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
 
学部生向けベイズ統計イントロ(公開版)
学部生向けベイズ統計イントロ(公開版)学部生向けベイズ統計イントロ(公開版)
学部生向けベイズ統計イントロ(公開版)
 
5分でわかるベイズ確率
5分でわかるベイズ確率5分でわかるベイズ確率
5分でわかるベイズ確率
 
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
 
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
 

More from AtCoder Inc.

AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoder Inc.
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2AtCoder Inc.
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Inc.
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説AtCoder Inc.
 
Chokudai Contest 001
Chokudai Contest 001Chokudai Contest 001
Chokudai Contest 001AtCoder Inc.
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Inc.
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Inc.
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Inc.
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説AtCoder Inc.
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Inc.
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説AtCoder Inc.
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説AtCoder Inc.
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Inc.
 
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説AtCoder Inc.
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説AtCoder Inc.
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Inc.
 

More from AtCoder Inc. (20)

TCO2017R1
TCO2017R1TCO2017R1
TCO2017R1
 
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
 
Chokudai Contest 001
Chokudai Contest 001Chokudai Contest 001
Chokudai Contest 001
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説
 
arc047
arc047arc047
arc047
 
abc032
abc032abc032
abc032
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046
 
abc031
abc031abc031
abc031
 
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
 

Recently uploaded

The first time I used CANVA to create a slide document.
The first time I used CANVA to create a slide document.The first time I used CANVA to create a slide document.
The first time I used CANVA to create a slide document.oganekyokoi
 
TEAMIN Education Service Overview_20240407
TEAMIN Education Service Overview_20240407TEAMIN Education Service Overview_20240407
TEAMIN Education Service Overview_20240407yukisuga3
 
2024年度 東京工業大学「ロボット技術」 ロボットミドルウェア (2024年4月11日)
2024年度 東京工業大学「ロボット技術」 ロボットミドルウェア (2024年4月11日)2024年度 東京工業大学「ロボット技術」 ロボットミドルウェア (2024年4月11日)
2024年度 東京工業大学「ロボット技術」 ロボットミドルウェア (2024年4月11日)NoriakiAndo
 
Specified skilled worker of Engineer Specialist in Humanities International S...
Specified skilled worker of Engineer Specialist in Humanities International S...Specified skilled worker of Engineer Specialist in Humanities International S...
Specified skilled worker of Engineer Specialist in Humanities International S...oganekyokoi
 
Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...oganekyokoi
 
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...yutakashikano1984
 
東京工業大学 環境・社会理工学院 高校生・受験生向け 説明資料 2024年4月分
東京工業大学 環境・社会理工学院 高校生・受験生向け 説明資料 2024年4月分東京工業大学 環境・社会理工学院 高校生・受験生向け 説明資料 2024年4月分
東京工業大学 環境・社会理工学院 高校生・受験生向け 説明資料 2024年4月分Tokyo Institute of Technology
 

Recently uploaded (7)

The first time I used CANVA to create a slide document.
The first time I used CANVA to create a slide document.The first time I used CANVA to create a slide document.
The first time I used CANVA to create a slide document.
 
TEAMIN Education Service Overview_20240407
TEAMIN Education Service Overview_20240407TEAMIN Education Service Overview_20240407
TEAMIN Education Service Overview_20240407
 
2024年度 東京工業大学「ロボット技術」 ロボットミドルウェア (2024年4月11日)
2024年度 東京工業大学「ロボット技術」 ロボットミドルウェア (2024年4月11日)2024年度 東京工業大学「ロボット技術」 ロボットミドルウェア (2024年4月11日)
2024年度 東京工業大学「ロボット技術」 ロボットミドルウェア (2024年4月11日)
 
Specified skilled worker of Engineer Specialist in Humanities International S...
Specified skilled worker of Engineer Specialist in Humanities International S...Specified skilled worker of Engineer Specialist in Humanities International S...
Specified skilled worker of Engineer Specialist in Humanities International S...
 
Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...
 
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
 
東京工業大学 環境・社会理工学院 高校生・受験生向け 説明資料 2024年4月分
東京工業大学 環境・社会理工学院 高校生・受験生向け 説明資料 2024年4月分東京工業大学 環境・社会理工学院 高校生・受験生向け 説明資料 2024年4月分
東京工業大学 環境・社会理工学院 高校生・受験生向け 説明資料 2024年4月分
 

天下一プログラマーコンテスト2015 予選A E問題 解説