狠狠撸
Submit Search
Indeedなう A日程 解説
?
2 likes
?
4,131 views
A
AtCoder Inc.
Follow
Indeedなう A日程 解説
Read less
Read more
1 of 47
Download now
Downloaded 74 times
More Related Content
Indeedなう A日程 解説
2.
2 A: Table Tennis writer:
kawatea tester: taka_key
3.
! 問題概要 3 1 65432 ?
n人の人を2人ずつのペアにする ? ペアの強さ := 2人の強さの和 ? 一番強いペアと一番弱いペアの強さの差の最小は?
4.
! 直感的な考察 4 1 65432 ?
強い人は弱い人と組んだ方が良さそう ? 強いほうと弱いほうから一人ずつ順番にペアにしてはどうか? → 正しい
5.
! 証明 5 1 ? ? ? ? 2 ? ?…
… …… 強い 弱い 弱い 強い ? 強い順に 1,2,…,n とし? 一番強いペアを i と n - i のペアとする
6.
! 証明 6 1 ? ? ? ? 2 ? ?…
… …… 強い 弱い 弱い 強い ? 一番強いペアの強さを小さくするためには、? i までの人はn - i以降の人とペアになる必要がある
7.
! 証明 7 1 ? ? ? ? 2 ? ?…
… …… 強い 弱い 弱い 強い ? i までの人の誰かはn - i の人とペアになるため? 一番強いペアの強さを小さくすることはできない
8.
! 証明 8 1 ? ? ? ? 2 ? ?…
… …… 強い 弱い 弱い 強い ? 一番弱いペアについても、同様にして? 強さを大きくすることはできない
9.
! 想定解法 9 1. n人の人を強さでソート
- O(n logn) 2. 強い方と弱い方から1人ずつ順番にペアにする - O(n) 3. 各ペアの強さを調べる - O(n)
10.
10 writer: numa tester: taka_key B:
Office Ninja
11.
! 問題概要 11 ? 辺を越えてのみ移動できる ?
マスへ入ったときに、そこにある数の分だけコストがかかる ? StartからGoalへの最小コストは? ? マスの数は最大で 100 100
12.
! 想定解法 12 ダイクストラ!
13.
! 想定解法 13 ? 正方形のマスを移動する場合と同じように考える? 典型的な方法 int
dx[4] = { 1, 0,-1, 0}; int dy[4] = { 0,-1, 0, 1}; for(int i = 0; i < 4; ++i){ int nx = x + dx[i]; int ny = y + dy[i]; ……… } ? 六角座標ではどうなる?
14.
! 想定解法 14 1. 上手い具合に移動に使う配列を設定する? 行の座標が偶数の場合と奇数の場合に分ける ?
次のことに気をつける ? indexが0-basedかどうか ? 行と列、どちらで場合を分けるか
15.
! 想定解法 15 2. 頑張るとこんな感じにできる int
dx[2][6] = {{-1, 0, 1, 1, 0,-1}, {-1, 0, 1, 1, 0,-1}}; int dy[2][6] = {{ 0, 1, 0,-1,-1,-1}, { 1, 1, 1 0,-1, 0}}; for(int i = 0; i < 6; ++i){ int nx = x + dx[x&1][i]; int ny = y + dy[x&1][i]; ……… } 3. 他は正方形の座標の場合と全く同じ
16.
16 writer: Keith tester: numa B:
Optimal Recommendations
17.
! 問題概要 17 ? 求職者の技術力、語学力、コミュ力が与えられる ?
会社が採用にあたって最低限必要としている技術力、語学力、 コミュ力、その会社での年収が与えられる ? 求職者毎に応募可能な会社の中で一番高い年収を示しなさい
18.
! 問題概要 18 ? 求職者の技術力、語学力、コミュ力が与えられる ?
会社が採用にあたって最低限必要としている技術力、語学力、 コミュ力、その会社での年収が与えられる ? 求職者毎に応募可能な会社の中で一番高い年収を示しなさい ! 制約 ? 求職者数、会社数 50,000 ? 技術力、語学力、コミュ力 100 ? 年収 1,000,000,000
19.
! サンプル 19
20.
! サンプル 20
21.
! 解法 21 ? 線形探索した場合、の計算量は? O(求職者数
会社数) なので、50,0002で間に合わない? ? 前計算して求職者のクエリをO(1)かO(logn)で処理したい ? 技術力 語学力 コミュ力 = 1013? →メモリに収まる!? ?全てのクエリに対して前計算をする。
22.
! 解法 22 ? dp[a][b][c]を、技術力a、語学力b、コミュ力cの求職者が得 られる最大の年収だとすると、次が成立する。 ?
dp[a][b][c] ≧ max(dp[a - 1][b][c], dp[a][b - 1][c], dp[a][b][c - 1]) ? つまり、自分よりも能力が劣っている求職者と同じかそれよ りも大きい年収が得られる ? 会社が希望する能力をa, b, c, 年収をwとしたとき、? dp[a][b][c] := w? と初期化しておけば、
23.
! 解法 23 ? dp[i][j][k]
= max(dp[i][j][k], dp[i- 1][j][k], dp[i][j- 1][k],? dp[i][j][k- 1]) ? 会社が希望する能力をa, b, c, 年収をwとしたとき、? dp[a][b][c] := w? と初期化しておけば、 ? と、i, j, kの小さいものから順にテーブルを更新することで? 求職者のクエリにO(1)で答えることが可能になる。
24.
! 別解 24 ? 求人会社を年収の大きい順でソート ?
dpの配列は0で初期化しておく ? 年収の大きい会社から順に見ていき、次の操作を行う ? a i, b j, c kをみたすような範囲の? dp[i][j][k] を見て、0でないならwを代入? 0なら終了する ? どのdp[a][b][c]についても、値の代入は高々1回しか起こら ないため、この操作は1013回程度で終了する。
25.
! 別解イメージ(二次元版) 25
26.
! 別解イメージ(二次元版) 26
27.
! 別解イメージ(二次元版) 27
28.
! 別解イメージ(二次元版) 28
29.
29 writer: kawatea tester: amylase D:
Longest Path
30.
! 問題概要 30 1 4 3 2 5 ?
n頂点の有向な木が与えられる ? いくつかの辺は好きな向きを選べる ? うまく向きを選んだときの最長のパスの長さは?
31.
! 考察 31 1 4 32 5 ? 適当な根付き木にしてみる ?
各パスはある頂点から上向きに進んで? 下向きに進む
32.
! 考察 32 1 4 32 5 ? 各頂点に対して上向きと下向きの最長のパスがわかると? その頂点を中心とする最長のパスが? 求まる
33.
! 考察 33 ? ただし上向きと下向きのパスが同じ頂点を通らないように? 二番目に長いパスも必要 1 4 32 5
34.
! 想定解法 34 ? 木を適当な根付き木にする ?
再帰的に頂点を探索して、各頂点以下の上向きと下向きの? 1 or 2番目に長いパスの長さを求める ? 各頂点を中心とするパスが今まで見つけたものより長いなら 答えを更新する ? 各頂点は再帰で一度訪れるだけなので、? 全体の計算量は O(n + m)となる
35.
35 writer: Komaki tester: amylase E:
Page Rank
36.
! 問題概要 36 ? 従業員を頂点とする有向グラフがある? ?
辺が優秀と思っている関係を示す? ? 従業員番号の差が10以上だと辺は存在しない? ? このグラフ上でPage Rankを求めてください? ? 定義は問題文に示してあります
37.
! 要するに 37 ? 連立一次方程式を解いてください ?
帯行列? ? 非ゼロ成分の場所が対角に近いところにしかない ? 正則? ? 転地が対角優位行列? ??各行の対角成分の絶対値が、それ以外の成分の絶対値の? ??和よりも大きい? ??対角優位行列は正則であることが知られている? ? 求めるPage Rankは一意に定まる
38.
! 解法1: 帯行列でのガウスの消去法 38 ?
ガウスの消去法の操作をだいぶサボれる? ? ゼロとわかっている要素は消しにいく必要がない? ? 行の好感が必要かもしれないが、? ?行列の値は帯の幅の2倍分覚えておけば十分? ? 行列の次数をn、帯の幅をkとして、O(nk2)? ? n = 104? ? k = 10
39.
! 解法2: 収束するまで回す 39 ?
初期のPage Rankを1として、? Page Rankの定義式を更新式と見なして、? 収束するまで更新を続ける? ? 疎行列なので、1回の更新が十分に速い - O(m + n) ? 大体1,000回程度回せば通る
40.
40 writer: rng_58 tester: kawatea F:
就职活动
41.
! 問題概要 41 ? N
人の人がいて、それぞれの人は {す社、ぬ社、け社}? の部分集合への就職を希望する ? す社、ぬ社、け社へはそれぞれ高々X, Y, Z 人が就職できる ? 全ての人が就職できるような組み合わせは何通りあるか? ? (文字の使い方は元の問題と変えてあります)
42.
! 部分点 (1) 42 ?
人を7種類に分類する ? す社のみを希望する人:nx 人 ? ぬ社のみを希望する人:ny 人 ? け社のみを希望する人:nz 人 ? す、ぬを希望する人:nx,y 人 ? ぬ、けを希望する人:ny,z 人 ? け、すを希望する人:nz,x 人 ? 全て希望する人:nx,y,z 人 とする ? nx +ny +nz + nx,y +ny,z + nz,x + nx,y,z = N
43.
! 部分点 (2) 43 ?
このとき、全ての人 が就職できるかどう かは? 右のグラフでフロー をN流せるかどうかに よって判定できる
44.
! 部分点 (3) 44 ?
条件をみたすすべての ? (nx, ny, nz, nx,y, ny,z, nz,x, nx,y,z)の組を考え、 ? ????????????の和を求めれば良い? ? O(N6) N! nx! ny! nz! nx,y! ny,z! nz,x! nx,y,z!
45.
! 満点 (1) 45 ?
グラフのmincutを考えると (Hall s Theoremともいわれて います) ? フローをN流せる条件は
46.
! 満点 (2) 46 ?
nx, ny, nz, nx,y を定数とみると、? これはある定数 c1, c2, c3, を用いて次のように書ける
47.
! 満点 (3) 47
Download