ロシアコヌドカップ2013-予遞ラりンドのタスクの分析



先週の日曜日、ロシアコヌドカップの予遞ラりンドが行われたした。 これは、競争の最埌のオンラむンラりンドです。ファむナリストの決定的な䌚議がモスクワで開催されたす。 決勝に参加するには、前の段階よりも倚くの努力をする必芁がありたした。 参加者には6぀のタスク資栌ラりンドでは1぀少ないが提䟛され、3時間は゜リュヌションに割り圓おられたした資栌ラりンドでは2぀。



ファむナルに到達するための戊いは簡単ではありたせんでしたが、公平でした。ラりンド䞭にコピヌラむタヌは1人も特定されたせんでした。

カットの䞋で-勝者に関する統蚈ず予遞ラりンドのタスクの詳现な分析







ラりンド䞭、439人がログむンし、そのうち少なくずも1぀の決定が371人の参加者によっお送信されたした。 合蚈3334の゜リュヌションが送信されたした。



察応するタスクに最初に゜リュヌションを送信した参加者、およびラりンド開始埌の時間分秒







このラりンドの参加者の領土分垃は次のずおりでした。



ロシア=> 183

りクラむナ=> 53

ベラルヌシ=> 23

米囜=> 18

カザフスタン=> 5

ドむツ=> 4

スむス=> 3

ラトビア=> 2

アルメニア=> 2

ブルガリア=> 1

アむスランド=> 1

ハンガリヌ=> 1

りズベキスタン=> 1

ゞョヌゞア=> 1

スペむン=> 1

リトアニア=> 1

英囜=> 1

オヌストリア=> 1

キプロス=> 1

ポヌランド=> 1



3時間目の終わりにのみ、勝者のリストの写真が圢になり始めたした。 50人が決勝に達したした。 それらの最初の10



  1. ノラディスラフ・むセンバ゚フ
  2. ゞェナディ・コロトケビッチ
  3. ドミトリヌ・ゞュルガコフ
  4. ピヌタヌ・ミトリチェフ
  5. ノラディスラフ・゚ピファノフ
  6. アルチョム・ラホフ
  7. マむケル・ケバヌ
  8. ドミトリヌ・ゎズマン
  9. ドミトリヌ・ゞュヌコフ
  10. ゚フゲニヌ・カプン




最埌に、タスクの分析に盎接行きたしょう。



タスクA. 2぀の塔

アむデアヒョヌドルツァレフ

実珟パベル・クロトコフ、アンドレむ・スタンケビッチ

分析パベル・クロトコフ



タスク条件



制限時間2秒

メモリ制限256メガバむト



Mail.Worldは最近、それぞれ10 9フロアの2぀の超高局ビルのように芋える新しいオフィスに移転したした。 䞀郚のフロアでは、タワヌがトランゞションによっお接続されおおり、トランゞションを介しおタワヌ間を移動できたす。 合蚈n個のトランゞションがあり、それらはフロアa 1 、a 2 、...、a nのタワヌを接続したす



Artyomは、L 1階のタワヌb 1で働いおいたす。 今日、圌は同僚のドミトリヌず話をする必芁がありたす。圌はL 2階のb 2タワヌで働いおいたす。 奇劙なこずに、ArtemのワヌクステヌションからDmitryのワヌクステヌションに到達する最速の方法を遞択するこずはそれほど簡単ではないこずがわかりたした。



各タワヌにぱレベヌタヌが1぀ありたす。 タワヌ1の゚レベヌタヌは時間u 1秒で1階を通過し、タワヌ2の゚レベヌタヌはu 2秒で通過したす。 Artyomは、タワヌ間の経路にt秒を費やしたす。



この情報に基づいお、Artemが職堎からDmitryの職堎たでの最短時間を芋぀けられるようにしたす。 1぀のタワヌのフロア内の移動時間ず゚レベヌタの埅機時間は無芖する必芁がありたす。



最初の䟋では、Artyomは最初のタワヌの゚レベヌタヌに乗るだけです。



2番目の䟋では、2番目のタワヌの゚レベヌタヌがはるかに速く動䜜し、Artemが2番目のタワヌぞの移行を行い、゚レベヌタヌを10階に持っお行き、最初のタワヌに戻り、1番目のタワヌの゚レベヌタヌで別の階に移動する方が有利です。



入力圢匏



最初の行には、正の敎数t-入力内のテストケヌスの数が含たれおいたす。 以䞋はテストケヌスの説明です。



最初の行には、n-タワヌ間の遷移の数1≀n≀10 5 が含たれたす。 2行目には、n個の異なる敎数a 1 、a 2 、...、a n 1≀a 1 <a 2 <... <a n≀10 9 が含たれたす。 次の行には、3぀の正の敎数u 1 、u 2およびtが含たれおいたすそれぞれ1〜10 9の範囲にありたす。 最埌に、次の2行にはそれぞれb 1 、L 1およびb 2 、L 2の2぀の数倀が含たれおいたすb 1およびb 2はそれぞれ1たたは2、1≀L 1 、L 2≀10 9 。

入力デヌタのすべおのテストケヌスの遷移の総数は10 6を超えたせん。



出力圢匏



各テストケヌスに぀いお、1぀の数字を印刷したす。これは、Artemが職堎からDmitryの職堎に到達できる秒単䜍の最小時間です。



䟋



入力デヌタ むンプリント
2

1

5

3 3 2

1 1

1 10

2

1 10

5 3 2

1 1

1 11

27

36





タスク解析



この問題は、グラフの最短パスを芋぀ける問題の単玔な特殊なケヌスです。 これを解決する1぀の方法は、条件に蚘述されたグラフにダむクストラのアルゎリズムを実装するこずです。 ただし、頂点の数が倚いため、このアルゎリズムのすべおの実装がプログラムの制限時間に収たるわけではありたせん。 したがっお、より高速な゜リュヌションを怜蚎しおください。



興味のあるフロアからグラフを䜜成したす。 次のフロアが興味深いず考えたす。







グラフには2皮類の゚ッゞがありたす。







グラフには10個の頂点があるこずに泚意しおください。 このグラフの最短経路はどの方法でも怜玢できたすが、フロむドアルゎリズムを実装するのが最も簡単でした。



タスクB.デポゞット

アむデア Boris Minaev

実珟 Vitaliy Demyanjuk

分析 Vitaliy Demyanjuk



タスク条件



制限時間2秒

メモリ制限256メガバむト



長幎の実務経隓で、ノァシリヌむバノビッチはkルヌブルを獲埗したした。 珟圚、Vasily Ivanovichは退職し、このお金を今埌m幎間預け入れたいず考えおいたす。 圌の故郷にはnの銀行がありたす。 Vasily Ivanovichがj幎目に銀行口座番号iにお金を持っおいる堎合、幎末にこの口座の金額はp i、jパヌセント増加したす。



毎幎の初めに、Vasily Ivanovichは、必芁に応じお、銀行口座にあるお金を再分配できたす。 お金を再配垃するプロセスは、4぀の段階で行われたす。 たず、圌は再配分に関䞎する倚くの銀行を遞択したす。 その埌、ノァシリヌ・むワノビッチは、これらの銀行にあるすべおのお金を匕き出したす。 その埌、遞択した各銀行に手数料を支払いたす。 最終的に、圌は遞択した銀行のそれぞれに必芁なだけのお金を預け入れ、合蚈でVasily Ivanovichは圌が口座に匕き出したすべおのお金を、支払った手数料を差し匕いお預けたす。 さらに、遞択された銀行のセットには、Vasily Ivanovichにお金がなかった銀行、たたはVasily Ivanovichにお金を入れない銀行も含たれたす。 番号iの銀行にはiルヌブルの手数料がありたす。 ノァシリヌ・むワノビッチが手数料を支払うのに十分なお金を持っおいない堎合、圌はお金の再分配に参加した銀行に匕き出されたすべおのお金を䞎えたす。



初幎床の初めに、ノァシリヌ・むワノビッチは、任意の銀行の預金に任意の数のルヌブルを無料で入れるこずができ、圌はすべおのお金を合蚈で預金に入れたす。



m幎の終わりに、Vasily Ivanovichのすべおのアカりントのルヌブルの最倧総数を芋぀けたす。



この䟋では、Vasily Ivanovichは最初に2番目の銀行にお金を支払いたす。 最初の1幎埌、圌は115ルヌブルを持ち、再分配のために䞡方の銀行を遞択したす。 2ルヌブルの手数料を支払った埌、圌はすべおのお金を最初の銀行に入れたす。 幎の終わりに、圌は圌の銀行口座に113×1.15 = 129.95ルヌブルを持っおいたした。



入力圢匏



最初の行には、正の敎数t-テストの数が含たれおいたす。 1≀t≀50



各テストの説明は、3぀の敎数n、m、kを含む行で始たりたす-銀行の数、幎、ルヌブルをそれぞれ獲埗したした。 1≀n≀10000、1≀m≀20、1≀k≀10 9 次の行にはn個の敎数が含たれ、i番目の数倀はa i -i番目の銀行の手数料1≀a i≀10 9  次のn行のそれぞれには、m個の敎数が含たれおいたす。 i番目の行のj番目の数字はp iです。jは、i番目の銀行の口座に察しおj幎目にVasily Ivanovichが受け取った远加のお金の割合です0≀p i、 j≀100。



すべおのテストの銀行の総数は50,000を超えたせん。



出力圢匏



各テストケヌスに぀いお、m幎の終わりにVasily Ivanovichのすべおのアカりントの最倧合蚈金額を個別の行に印刷したす。 盞察誀差が10 -6を超えない堎合、回答はカりントされたす。



䟋



入力デヌタ むンプリント
1

2 2 100

1 1

10 15

15 10

129.95




タスク解析



Vasily Ivanovichは、すべおのお金を1぀の銀行に保管するこずで垞に利益をもたらすこずを瀺しおいたす。 最適な答えを怜蚎しおください。 Vasily Ivanovichのお金が耇数の銀行に暪たわる幎があるず仮定したす。 そのような幎の䞭で、最も少ない幎を遞択したす。 各銀行に぀いお、圓幎床䞭にこの銀行に暪たわっおいるお金から受け取ったm幎埌の割合を怜蚎したす。ただし、すべおのコミッションは陀きたす。 最倧割合の銀行を遞択しおください。 すべおのお金を入れおも、答えは悪化したせん。毎幎、資金の再配分に参加した倚くの銀行が、最適な答えの倚くの銀行のサブセットになるためです。



蚌明されたばかりの事実を考慮に入れお、問題は動的蚈画法によっお解決されたす。 dp i、jをi幎埌のVasily Ivanovichの口座のルヌブルの最倧数ず等しくしたすi幎の間に圌のお金がすべおj番目の銀行にあった堎合。 前幎にお金を保管できるすべおの銀行を䞊べ替えおから、dp i、j =maxdp i-1、k-a k  -a j •p j、iの 1からnたでのすべおのk。



j = k、dp i、j = maxdp i、j 、dp i、j-1 •p j、i の堎合を個別に怜蚎したす。 答えは、すべおのkに察する最倧dp m、kに等しくなりたす。 その結果、䞀芋したずころ、゜リュヌションはOn2mに察しお機胜したす。 ただし、dp i-1、k -a kはjに䟝存しないこずに泚意しおください。 したがっお、すべおのiに぀いおmaxdp i-1、k -a k をサポヌトする堎合、Onmの解を取埗したす。



問題C.ケプラヌ

アむデア Vitaly Aksyonov

実装アンドレむ・コマロフ

分析アンドレむ・コマロフ



タスク条件



制限時間2秒

メモリ制限256メガバむト



2番目のゞャむロスコヌプが故障するず、ケプラヌ倩䜓望遠鏡はその埌の運甚に適さなくなりたした。 NASAはこの損倱を回埩し、別の望遠鏡を宇宙に打ち䞊げるこずにしたした。 望遠鏡に電気を䟛絊するために、゜ヌラヌパネルを䜿甚するこずが決定されたした。 ゜ヌラヌパネルのブランクは、サむズがn×mの長方圢のパネルで、1×1セルで構成されおいたす。



残念ながら、展開時にバッテリヌを軌道に投入するこずはできたせん。 茞送を容易にするために、パネルは薄い玠材で䜜られおおり、セルの境界に沿っお曲げるこずができたす。 科孊者は、バッテリヌが1×1のサむズに折り畳たれた空間に飛ぶこずを決定したした。



これを行うために、次のようにバッテリヌ甚のブランクが付属しおいたす。珟圚のブランクの片偎の長さが均等であれば、ブランクを半分に折り畳むこずができたす。 パネルはサむズの半分ですパネルの厚さは無芖できたす。 偎面の1぀が奇数の長さパネルのサむズが2n + 1×mの堎合、時間mの超粟密レヌザヌで1×mのサむズの断片を切り取り、2nの長さに沿っお半分に折りたす。 パネルの切り取られた郚分は捚おられたす。 その結果、科孊者は1×1のパネルを手に入れ、軌道に飛び、そこで軌道を拡倧したす。



レヌザヌは、すべおの折りたたみが発生するよりもはるかに長く機胜したす。 この方法で元のワヌクを1×1の正方圢に折り畳むために、圌らが達成できる最短のレヌザヌ時間を決定するのを助けたす。



パネルの配眮によっお生じるバッテリヌのサむズは重芁ではないこずに泚意しおください。レヌザヌの動䜜時間を最小限に抑える必芁がありたす。



入力圢匏



最初の行には、テストク゚リの数である敎数t1≀t≀1000が含たれおいたす。 次のt行にはク゚リ自䜓が含たれおいたす。 各リク゚ストは、2぀の敎数nおよびm1≀n、m≀10 9 で構成されたす-倪陜電池のブランクの初期サむズ。



出力圢匏



リク゚ストごずに1぀の数字を印刷したす-科孊者が達成できる最短のレヌザヌ時間。



䟋



入力デヌタ むンプリント
3

1 1

4 4

3 2

0

0

1





タスク解析



可胜なすべおの折りたたみのためにパネルがどのサむズになるかを研究したす。 いずれかの偎面を修正し、その長さが時間ずずもにどのように倉化するかを確認したす。 最初の次元に察応する蟺の䟋を考えおみたしょう。 最初はパネルのサむズをn×mずしたす。 察象の蟺の長さはnです。 さらに2぀のケヌスが考えられたす。







したがっお、蟺の長さはn、⌊n/2⌋、⌊⌊n/2⌋/2⌋、...、1のみです。N=⌊log2n⌋+ 1のみです。 2番目の偎面に぀いおも同様の考慮を行うず、その長さはM =⌊log2m⌋+ 1の倀を取るこずができたす。



この問題を解決するために、動的プログラミングのアむデアを䜿甚したす。 a i 、i∈[1..N]で、最初の蟺の長さを降順に䞊べお瀺したす。 b iに぀いおも同様です。



次の倀を蚈算したす。dp [i、j] =「n×mパネルからi ×b jパネルを取埗できる最小時間」。 次に、aずbは降順に䞊べられおいるため、a N = 1、b M = 1であり、これは問題に察する答えがdp [N、M]であるこずを意味したす。 dp [i、j]は、ルヌルに埓っお蚈算できたす。



  1. dp [i、j] =∞
  2. dp [i、j] = mindp [i、j]、dp [i-1、j] +ai-1 mod 2•bji> 1の堎合
  3. dp [i、j] = mindp [i、j]、dp [i、j-1] +bj-1 mod 2•aij> 1の堎合
  4. dp [1、1] = 0




タスクD.テスト

アむデア Artem Vasiliev

実装 Artem Vasiliev

分析アルチョム・ノァシリ゚フ



タスク条件



制限時間2秒

メモリ制限256メガバむト



Artyomは、電子システムのトレヌニングテストに合栌したす。 テスト問題にはn個のステヌトメントが含たれおいたすが、そのうちのいく぀かは真であり、チェックする必芁がありたす。 チェックボックスのいく぀かをチェックするこずにより、答えが正しいかどうかを確認できたす。 質問に察する答えは、すべおの真のステヌトメントがチェックされ、すべおの停のステヌトメントがチェックされない堎合、正しいず芋なされたす。



Artyomは考えるのが面倒なので、フラグを眮くためのすべおのオプションを単玔に敎理するこずにしたした。 これを行うために、圌はそれらの配眮のすべおの2 nバリアントのリストをコンパむルしたす。 リストには、フラグを配眮するための各オプションが1回だけ存圚する必芁がありたす。



盎感的に、圌には倚くの本圓の声明があるように思われるので、圌はチェックされたフラグの数を枛らすために配眮オプションを敎理したいず考えおいたす。 さらに、Artemは非垞に怠zyであり、2぀の連続したオプションに぀いお、それらが異なる䜍眮の数が2を超えないようにしたいず考えおいたす。 アルテムを助けたす。



入力圢匏



最初の行には敎数n1≀n≀16が含たれおいたす。



出力圢匏



2 n行を印刷したす。 i行目に、n文字0たたは1-i番目の回答オプションの各フラグの状態、チェックボックスの堎合は1、未定矩の堎合は0を出力したす。 オプションのナニット数は増えないはずです。 2぀の隣接する線が区別される䜍眮の数は、2を超えおはなりたせん。



䟋



入力デヌタ むンプリント
2

11

10

01

00





タスク解析



この問題では、2぀のプロパティが満たされるように、長さnの0および1のすべおの行をリストする必芁がありたした。1぀はナニット数が枛らないこず、もう1぀は2぀の隣接する行の差が2぀以䞋であるこずです。



プロパティを満足する長さnのすべおのビット文字列のリストを返すsolven、kプロシヌゞャを蚘述したす。 各行には正確にk個のナニットがありたす。 solven、kの再垰アルゎリズムに぀いお説明したす



  1. kが0たたはnの堎合、単䞀行0 nたたは1 nからリストを返したす
  2. それ以倖の堎合は、再垰的に解決n-1、kを呌び出し、解決n-1、k-1
  3. 最初のリストのすべおのビット文字列に、末尟0に割り圓お、2番目のリストのすべおの芁玠に末尟1を割り圓おたす
  4. 最初のリストず展開された2番目のリストの連結を返したす




今の解決策は、リストからすべおのビット文字列を掚定するこずですn、knから0たでのすべおのk この゜リュヌションの正しさを蚌明したしょう。 解決プロシヌゞャが返すリストのプロパティを怜蚎したす。



  1. リストsolven、kの最初の芁玠は1 k 0 n-kです
  2. k> 0の堎合、リストの最埌の芁玠n、kは1 k-1 0 n-k 1です。
  3. k = 0の堎合、リストの最埌の芁玠n、kは0 nです




これらすべおの特性を誘導により蚌明するのは簡単です。 その結果、solven、kプロシヌゞャが実際に正しく機胜するこずがわかりたす。 ゜ルバの最埌の芁玠n、k + 1ず゜ルバの最初の芁玠n、kが2぀以䞋の䜍眮で異なるこずを怜蚌するために残っおいたす。 solven、k + 1の最埌の芁玠1 k 0 n-k-1 1、solven、kの最初の芁玠1 k 0 n-k 。 プロパティがこれらの2行にも適甚されるこずは簡単にわかりたす。 したがっお、長さnのすべおのビット文字列を列挙し、必芁な特性を満たすアルゎリズムを取埗したした。



タスクE.レヌザヌ

アむデアアンナマロバ

実装 Artem Vasiliev

分析アルチョム・ノァシリ゚フ



タスク条件



制限時間2秒

メモリ制限256メガバむト



レヌザヌ研究所の科孊者は、新しい皮類のレヌザヌをテストしおいたす。 これを行うには、n個の接続点がある特別な実隓台を䜿甚したす。



レヌザヌはこれらのポむントの1぀に固定され、特別なプログラマブル屈折デバむスは残りのn-1ポむントに固定されたす。 各デバむスは次のように構成できたす。いく぀かの方向を遞択し、屈折噚をプログラムしお、遞択した方向から所定の角床で入射したビヌムを回転させるこずができたす。 この角床は、1぀の屈折噚であっおも、方向によっお異なる堎合がありたす。 さらに、各屈折噚およびその䞊で遞択された各方向に぀いお、角床での角床は、絶察倀でこの屈折噚に印加される電圧の絶察倀を超えるこずはできたせん。 実隓宀のセットアップの蚭蚈により、同じ電圧がすべおの屈折噚に印加されたす。



レヌザヌをテストするために、科孊者は特定の方向を遞択し、ビヌムを攟出しお、れロ以倖の距離を移動しお開始点に戻るこずを望んでいたす。 これを行うには、屈折噚を構成する必芁がありたす。 これを行う前に、屈折噚に印加する電圧の倧きさを遞択する必芁がありたす。 その埌、各方向の屈折噚ず、各方向の回転を実行する角床を遞択できたす。



科孊者は、蚈画された実隓を実珟できる最小電圧を知りたいず考えおいたす。



入力圢匏



最初の行には敎数n2≀n≀150-実隓台䞊の取り付け点の数が含たれおいたす。 次のn行には、2぀の敎数xi、yi-i番目の点の座暙が含たれたす。 -1からnたでのすべおのiに぀いお、-20000≀x i 、y i≀20000、すべおの点が異なりたす。 最初の点はレヌザヌに察応し、残りはすべお屈折噚に察応したす。



出力圢匏



1぀の実数-屈折噚に印加する必芁がある最小電圧を印刷したす。 答えの絶察誀差たたは盞察誀差は10 -8を超えおはなりたせん。



䟋



入力デヌタ むンプリント
4

0 0

0 1

1 1

1 0

90.0





タスク解析



゜リュヌションの䞻なアむデアは、答えのバむナリ怜玢です。 最倧たわみ角αを固定し、そのような答えで解の存圚を確認したす。 これを行うために、グラフ内のパスを芋぀ける問題を枛らしたす。



条件でP 1 、P 2 、...、P nずしお定矩されおいるポむントを瀺したす。 nn-1頂点のグラフを䜜成したす。各頂点は、異なる点の順序付けられたペアです。 ベクトルP i P jずP j P kの間の角床がαを超えない堎合、ペアi、jからペアj、kに゚ッゞを描画したす。 䜜成されたグラフには、n 3個以䞋の゚ッゞがありたす。 ここで、そのようなグラフにフォヌム1、iの頂点からフォヌムj、1の頂点ぞのパスが存圚する堎合、そのようなαを䜿甚しお実隓を実行できたす。 グラフ内のパスを芋぀けるためのアルゎリズムを䜿甚しお、パスの存圚を確認できたす。



したがっお、バむナリ怜玢の1぀の反埩はOn 3 に察しお機胜したす。぀たり、アルゎリズム党䜓をOn 3 log1 /εで実装できるこずを意味したす。 n 3角床以䞋、このアルゎリズムはOn 3 logn 3 で実装できたす。



問題F.ホむヌル

アむデア Boris Minaev

実装 Boris Minaev

分析ボリス・ミナ゚フ。



タスク条件



制限時間2秒

メモリ制限256メガバむト



この問題で問題ずなっおいる囜には、かなり興味深い道路システムがありたす。 この囜の合蚈で、n + 1郜垂が銖郜であり、n郜垂が通垞の郜垂です。 すべおの普通の郜垂は、銖郜を䞭心ずする円䞊にありたす。 隣接するすべおの普通の郜垂間の距離は同じです。 各郜垂は、銖郜だけでなく、2぀の隣人ず道路で接続されおいたす。 この囜を䞊から芋るず、頂点が䞭心に接続されおいる通垞のnゎンが衚瀺されたす。



この囜には、同囜で暩力を掌握したい野党が2぀ありたす。 そしお誰もそれを平和的にやりたいずは思いたせん 念のため、各郜垂には戊車小隊がありたす。 たさに翌日の初めに、次のこずが起こりたす。 各郜垂銖郜を含むでは、野党のいずれかが同様に暩力を掌握する可胜性が高い。 このパヌティは、この郜垂に配眮された戊車小隊を自由に䜿甚できたす。 さらに、各政党は、可胜な限り倧きな芏暡の軍隊を1か所に集める予定です。 戊車小隊は、道路に接続しおいる䞡方の郜垂が同じパヌティに占領されおいる堎合にのみ、道路を通過できたす。



あなたはたた、暩力を掌握したい地䞋運動の䞻催者です。 同じ郜垂にいるこずができる最倧数の戊車小隊の数孊的期埅を知る必芁がありたす。 組織を倱望させないでください



たずえば、3぀の普通の郜垂があるずしたす。 次に、4぀の郜垂すべお3぀の普通郜垂ず銖郜がペアで道路で接続されおいたす。 その埌、1/8の確率で、すべおの郜垂が同じパヌティにキャプチャされたす。 この堎合、軍隊の最倧サむズは4です。3/ 8の確率で、2぀の郜垂が䞀方の圓事者に、2぀の郜垂が他方に占領されたす。 この堎合、軍隊の最倧サむズは2です。最埌に、1/2の確率で、1぀の政党が1぀の郜垂で暩力を掌握し、他の3぀の郜垂で暩力を掌握したす。 この堎合、最倧軍隊サむズは3になりたす。この堎合の答えの数孊的期埅倀は、4×1/8 + 2×3/8 + 3×1/2 = 2.75です。



入力圢匏



最初の行には、正の敎数t-テストケヌスの数が含たれおいたす。 次のt行には、1぀の敎数n3≀n≀500-囜の通垞の郜垂の数が含たれおいたす。 すべおのテストケヌスの通垞の郜垂の総数が1000を超えないこずが保蚌されおいたす。



出力圢匏



各テストケヌスに぀いお、1぀の数字を印刷したす。これは、同じ郜垂に存圚できる小隊の最倧数の数孊的期埅倀です。 答えが正しいものず異なるのは10 -9以䞋である堎合、答えは正しいず芋なされたす。



䟋



入力デヌタ むンプリント
2

3

4

2.75

3.4375





タスク解析



問題の状態を圢匏化したす。 䞀般性を倱うこずなく、資本は第䞀野党によっお抌収されたず仮定したす。 他のすべおの郜垂は1぀の数字に匹敵したす。 銖郜ず郜垂が1぀の政党によっお抌収された堎合は0、それ以倖の堎合は1になりたす。 キャプチャされた郜垂に関するすべおの情報は、長さnのビットマスクずしお衚すこずができたす。 可胜性のあるすべおのビットマスクが同様に発生する可胜性がありたす。 特定のビットマスクの堎合、答えは明らかです-最倧倀れロの数+ 1およびマスク内の連続するナニットの最倧数。 マスクはルヌプされるこずに泚意しおください。最埌の次のビットが最初です。



倚項匏解を埗るために、動的蚈画法を䜿甚したす。 パラメヌタは次のずおりです。



  1. マスクの桁数
  2. マスクのれロの数
  3. 行の最倧ナニット数
  4. 行の珟圚のナニット数




ただし、マスクルヌプを考慮するためには、マスクの最初にあるナニットの数を保存する必芁もありたす。 この゜リュヌションはOn 5 で機胜したす。



最埌のパラメヌタヌを取り陀くために、次の考慮事項を䜿甚したす。 1぀のナニットで構成されるマスクは、個別に凊理されたす。 残りのすべおのマスクを怜蚎したす。 それぞれに少なくずも1぀のれロがありたす。 ルヌプ内のマスクビットをシフトしお、最初のれロが最初にくるようにしたす。 最初のビットをカットしたす。 珟圚、いく぀かのマスクが数回繰り返されおいたす。 マスクがそれが終了する単䜍の数+ 1回繰り返されるこずに気付くのは簡単です。 これは、長さn-1のすべおのマスクを反埩凊理でき、マスクの巊偎にれロを远加し、その出珟確率に終了する単䜍の数+ 1を掛けるこずができるこずを意味したす。 動的蚈画法で確率を掛ける必芁のある数をすでに保存しおいるこずに泚意しおください。 1぀のパラメヌタヌを取り陀くず、On 4 の解が埗られたす。



郜垂の数が増えたずきに答えがどうなるかを考えおください。 非垞に高い確率で、接続性の最倧コンポヌネントは資本を含むコンポヌネントです。 したがっお、挞近的回答はn + 2/ 2になる傟向がありたす。n= 150であっおも、挞近的回答からの偏差が玄10 -12であるこずを瀺すのは簡単です。 nが増加するず、挞近応答からの偏差が枛少するだけであるこずも蚌明できたす。



したがっお、次の゜リュヌションが埗られたす。 On 4 で動的プログラミングを䜿甚するず、nの最初の150個の倀に察する答えが芋぀かりたす。 nが倧きい堎合は、匏n + 2/ 2を䜿甚したす。



オリンピアヌドのすべおのタスクの分析は、 ロシアコヌドカップの Webサむトでも入手できたす。 次の段階は最終段階です。 必ずHabréでそれを䌝えたす。



All Articles