Revenge of the Round Table

Slides:



Advertisements
Similar presentations
Problem A : Everlasting...? 原案 : 泉 模範解答 : 黄・野田 解説 : 野田.
Advertisements

プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
模擬国内予選2013 Problem F テトラ姫のパズル 原案:須藤 解答:大友、須藤 解説:須藤.
J: Magical Switches JAG 模擬地区予選 2013 原案:保坂 解答:保坂・楠本 解説:保坂.
Problem J: いにしえの数式 問題作成・解説: 北村 解答作成協力: 八森.
到着時刻と燃料消費量を同時に最適化する船速・航路計画
Problem H: Queen’s case
Bipartite Permutation Graphの ランダム生成と列挙
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
パスカルの三角形  ~3次元への拡張~ 立命館高校 2年 池内 正剛.
C言語 配列 2016年 吉田研究室.
Alice in Foxland ~狐の国のアリス~
「Postの対応問題」 の決定不能性の証明
ICPC夏合宿09 Day2 Problem F Voronoi Island ~ボロノイ島戦記~
A: Attack the Moles 原案:高橋 / 解説:保坂.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
Problem D: Double Sorting 原案: oxy, 解答作成: oxy, nya.
Princess, a Strategiest
問題作成・解説: 北村 解答作成協力: 小西・松本
プログラミング論 I 行列の演算
Problem H ねこ鍋改造計画(仮) 秋葉 拓哉.
文字配列の課題1 解説 /* a */ #include <stdio.h> main( ) { int i;
Extremal Combinatrics Chapter 4
6学年 算数 ~ 式 と 計 算 ~.
C言語 配列 2016年 吉田研究室.
JAG Regional Practice Contest 2012 問題C: Median Tree
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
香川大学工学部 富永浩之 情報数学1 第5-2章 命題論理式の 同値変形とカルノー表 香川大学工学部 富永浩之
Problem C: Princess' Japanese
模擬国内予選2014 Problem C 壊れた暗号生成器
2013年度模擬アジア地区予選 Problem E: Putter
Problem D: King Slime ~キングスライム~
情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25
Problem F Two-finger Programming
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
1 式の計算 1章 式の計算 §2 単項式の乗法・除法         (2時間).
原案・解説 : 野田 解答 : 野田・吉田 Problem D Futon ~布団~.
情報処理Ⅱ 2007年11月5日(月).
プログラムの制御構造 選択・繰り返し.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
プログラミング言語論 第3回 BNF記法について(演習付き)
プログラミング論 II 2008年10月30日 文字列
Missing game:English なくなったのは?:日本語
関数の書式 ● SUM関数、AVARAGE関数など代表的ないくつかの関数の書式(数式の構文)は、下記のようなものである。 =関数名(引数1,引数2,引数3,・・・・・) ●引数(入力データ)は、数値で入力しても、セル名で指定してもよい。 例: =SUM(A1:A10,B21:B30,C31:C40)
Problem I: Aaron と Bruce
2. 関係 五島 正裕.
b f c a d e g h a b c d e f g 図1 図2 2012年度 有限幾何学 期末試験
計算の理論 II 前期の復習 -有限オートマトン-
7 Calculating in Two Ways: Fubini’s Principle
計算の理論 I 正則表現とFAとの等価性 月曜3校時 大月 美佳 平成15年6月16日 佐賀大学知能情報システム学科.
5 Recursions 朴大地.
プログラムの基本構造と 構造化チャート(PAD)
東京工科大学 コンピュータサイエンス学部 亀田弘之
平成26年4月22日(火) 東京工科大学 コンピュータサイエンス学部 亀田弘之
D: 壊れかけのヒープ 問題案: 稲葉.
データの表現 2進数 0と1を使う。 基数(基準になる数)が2. 101(2) かっこで2進数と示すことがある。
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
情報処理Ⅱ 第7回 2004年11月16日(火).
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
東京工科大学 コンピュータサイエンス学部 亀田弘之
1 式の計算 1章 式の計算 §1 式の加法・減法         (4時間).
香川大学工学部 富永浩之 情報数学1 第5-2章 命題論理式の 同値変形とカルノー表 香川大学工学部 富永浩之
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
参考:大きい要素の処理.
C問題 高所恐怖症 原案・ライタ : 伊藤 テスタ : 青木・西出.
@kagamiz (Jayson Sho Toma)
情報処理技法 (Javaプログラミング)1 第4回 語句や文章を扱いたいときは?
情報処理技法(Javaプログラミング)1 第8回 同じ処理を何回も繰り返すには?
Presentation transcript:

Revenge of the Round Table 原案: oxy, 解答: oxy, hmuta

Problem A国とB国の人が会議をする 円卓にn人座る 同じ国の人がk+1人以上並んでいたらダメ k-freeと呼ぶことにする ユニークな座り方は何通りあるか?

Example n=4, k=2

Take It Easy! 問題を緩和して簡単にして解いてみる たとえば、 回転したものも数えることにする 問題を緩和して簡単にして解いてみる  たとえば、 回転したものも数えることにする そもそもループしていない普通の列に して考える 一般に、難しい問題にあたったら、特殊ケースや条件を緩和した問題を考えると足がかりが掴めるかも

Subproblem 1 長さnの k-free 文字列の数を求めよ 文字列の最初と最後はループしていない n=4, k=2の場合 AABA AABB ABAA ABAB ABBA BBAB BBAA BABB BABA BAAB

Subproblem 1 - Basic Observations Aから始まる文字列を求めれば、Bから始まる 文字列はそのABを反転したもの よって、Aから始まるものだけ数えればよい n=4, k=2の場合 AABA AABB ABAA ABAB ABBA BBAB BBAA BABB BABA BAAB

Subproblem 1 - DP 列の長さについてDPしよう! 同じ文字がk+1個以上続いてはいけない -> 最後に使った文字が何文字続いているか     記録する (2次元DP) dp1A[n'][s] := Aから始めてBAsで終わる                      長さn'のk-free文字列の数 dp1B[n'][s] := Aから始めてABsで終わる                      長さn'のk-free文字列の数 -> dp1A[n'][1] = \sum{l=1..k} dp1B[n'-1][l]     dp1A[n'][s] = dp1A[n'-1][s-1]

Subproblem 2 長さnの k-free 文字列の数を求めよ 文字列の最初と最後がループしている k-free with loopと呼ぶ n=4, k=2の場合 AABB ABAB ABBA BBAA BABA BAAB (問題文に書いてある6つ)

Subproblem 2 - DP やはり最初はAとしてよい dp2[n'] := 長さn'でAから始まる k-free with loopな文字列の数 Bで終わる文字列は全て k-free with loop ApBで始まりAで終わるようなk-free with loopな文字列の数は? \sum{l=1..(k-p)} dp1B[n-p][l]   dp2[n'] = \sum{s=1..dp1B[n'][k] +                \sum{p=1..k} \sum{l=1..(k-p)} dp1B[n-p][l]

Review Original Problem 長さnの k-free 文字列の数を求めよ ループしている 回転して同じになる文字列は重複して数えない! AABB ABBA BBAA BAAB ABAB BABA n=4, k=2の場合 AABB ABAB

Original Problem - Rank Subproblem 2で求めた文字列を最小の繰り返し単位の長さで分類する -> rank rank 2の文字列は2個、rank 4の文字列は4個だけ 回転同値な文字列が存在する rank Rのものを数えてRで割ればいい! AABB ABBA BBAA BAAB   ABAB BABA rank 4 n=4, k=2の場合 AABB ABAB rank 2

Subproblem 3 長さnの k-free with loop 文字列で、 rankがRのものの数を求めよ

Subproblem 3 - DP dp3[n'] := 長さn'でrank n'な k-free with loop 文字列の数 i.e. より細かい繰り返し単位を持たない dp3[n'] := dp2[n'] - sum{1<d<n';n'|d} dp3[d]

Answer ans = dp3[n] dp3[n'] := dp2[n'] - sum{1<d<n';n'|d} dp3[d] dp2[n'] = \sum{s=1..dp1B[n'][k] +                \sum{p=1..k} \sum{l=1..(k-p)} dp1B[n-p][l] dp1A[n'][1] = \sum{l=1..k} dp1B[n'-1][l] dp1A[n'][s] = dp1A[n'-1][s-1] dp1B[n'][1] = \sum{l=1..k} dp1A[n'-1][l] dp1B[n'][s] = dp1B[n'-1][s-1]

Notes modulo 1000003 1000003は素数なので割り算が定義可能 k >= nのとき k := n-1として求めた答え+2 (AnとBnの分)

Submission Status Submissions: 2/4 Teams Tried: 2 Accepts: 2 First Accept: _(ry (108min.)