Saiko Psycho-Pie
ADA (Algorithm Design and Analysis) HW3-5
Once upon a time...
There was a young warrior
Piepie
At the other side of the kingdom
There was an ambitious sorcerer
QMao
One day...
QMao had this brilliant idea
Psycho-Pie!
不吃還好,一吃不得了!
The old king
Handsome
A single order...
Hunt Down QMao !
Problem Description
Fallen cities
Normal cities
Ada Kingom -> Qmao's Castle
(Digraph)
P
Q
K = 2
P
Q
Shortest Path!
Dijkstra(V,E) viewed as O(|E| + |V|log|E|)
可以只寫(c)唷!
Mage Academy
Archimage Masschian
(d) - TheraPIE
隨身攜帶一個派!
(e) - Hyperdimensional Shift
P
Q
Relics
Choose one relic among E_2(numbers of relics) !
!!!Revision!!!
Thanks to 楊皓丞。
Time complexity:
O( k*dijkstra(V,E) + E2 ) ->
O( k*(dijkstra(V,E) + E2) )
(f) - Imperial Army
P
Q
Purification k_2
P
Q
Purification k_2
(g) - Nirvana
P
Q
Nirvana
P
Q
Nirvana
P
Q
Nirvana
完全無視所有Fallen Cities, 度過k_2個城鎮
no poison P
Nirvana
5回內要吃派 P
no poison P
5回內要吃派 P
Nirvana
Nirvana
完全保持狀態!
Grading:
max ( (d) , (e) ) +
max ( (f), (g) ) )
兩組二選一寫就好!
Simple Solution
Problem (a)
no-pie-no-pie-no-piepie (k=2,起點有派)
Observation
Sample Solution
拔掉這種邊,丟dijkstra
V,E層級沒變,O(dijk(V,E))
Problem (b)
no-pie-no-pie-no-piepie (k=2,起點沒派)
Sample Solution
策略:
不走派,
走到一定時間後開始一直吃派。
Sample Solution
完全不走派(把所有派點對外的邊拿掉) 的圖稱為G_b
一直吃派的圖(Problem a)
稱作G_a
Sample Solution
對G_b從起點做dijkstra
對G_a從終點,把邊反向做dijkstra
Sample Solution
P
Q
d_G_b(v)
d_G_a(v)
Sample Solution
\min_{v \in V}(d_a[v] + d_b[v])
minv∈V(da[v]+db[v])
O( 2 * dijk(V,E) + V ) = O(dijk(V,E))
Problem (c)
regular problem
Sample Solution
拆成好幾個世界
每個世界都代表現在派派的狀態。
Sample Solution
G no poison
G left k
G left k-1
G left 1
...
Break Through the world
G no poison
G left k
G left k-1
G left k
G left k
G left k-2
G left k-1
G left k
G no poison
Break Through the world
G no poison
G left k
G no poison
Break Through the world
G left i
G left k
G left i-1
if ( i > 1 )
Some trivials ...
P
P
P
P
Q
Q
Q
Q
P'
Q'
如果P沒派
如果P有派
O( dijk(kV,kE) )
= O( kE + kvlogkv )
= O( kE + kv(logk + logv))
= O(kE + kvlogv)
= O(k (E + vlogv))
= O(k * dijk(V,E))
Time complexity
需要把 k>v 特判!
Problem (d)
TheraPIE
假設G_c 為
problem c的世界
Sample Solution
Sample Solution
Graph C with TheraPIE
Graph C without TheraPIE
由 k = 1 接到 k = k
Sample Solution
同problem C:
O( 2 * k * dijk(V,E))
= O( k * dijk(V,E) )
Problem (e)
Hyperdimensional Shift
start -> 傳送點前 ->
傳送點後 -> 終點
Sample Solution
假設G_c 為
problem c的世界
Sample Solution
Sample Solution
對G_c從起點做dijkstra (d_a)
(start 到傳送點前)
對G_c從終點,把邊反向做dijkstra (d_b)
(傳送點後到終點)
Sample Solution
傳送點前後
世界同problem(c)要接好。
Sample Solution
\min_{(u,v) \in E_2}(d_a[u] + d_b[v])
min(u,v)∈E2(da[u]+db[v])
O( 2 * dijk(V,E) + kE_2 ) = O(dijk(V,E) + kE_2)
Problem (f)
Imperial Army
當你中毒,
你就不會去淨化城鎮。
(只有還沒中毒才會淨化)
Sample Solution
Sample Solution
G no poison
G left k step
G left 1 step
...
G left k_2-1 times
G left k_2-2 times
G left 1 times
...
Break Through the world
G no poison
G left k step
G no poison
G left k_2-1
times
Break Through the world
G left k step
G left i times
G left i-1
times
G left i times
Break Through the world
G left i step
G left k step
G left i-1 step
if ( i > 1 )
Some trivials ...
同problem C
Time complexity
O((k+k2) dijk(V,E)),寫法同C
Problem (g)
Nirvana
Sample Solution
假設G2是開nirvana後的世界
G left k2 step
G left k2-1 step
G left 1 step
...
Break Through the world
G left i step
G left i-1 step
if ( i > 1 )
Break Through the world
G no poison
G left k
G left k-1
G left 1
...
G no poison
G left k
G left k-1
G left 1
...
without Nirvana
with Nirvana
Break Through the world
G no poison
G left k
G left k-1
G left 1
...
G no poison
G left k
G left k-1
G left 1
...
without Nirvana
with Nirvana
G2
G2
G2
G2
只到最後step才開nirvana會錯!
Time complexity
O((k1*k2) dijk(V,E)),寫法同C
Saiko Psycho-Pie
By Arvin Liu
Saiko Psycho-Pie
ADA 2018 HW3's Hand-Written Homework1 Problem & Solution
- 1,183