Sth about Educational DP Contest
Contest Website : atcoder.jp/contests/dp
A. Frog 1
We define \(f_i\) as the minimum cost for the frog to jump from the 1st stone to the \(i\)-th stone.
And we know that the frog can only jump from the \((i-1)\)-th stone or the \((i-2)\)th stone to the \(i\)-th stone. Thus, we can know the equation. It is:
\(O(n)\) ~
B. Frog 2
Why don't I use \(f_{i-j}\) to transfer to \(f_i\)? That's because I don't want to check if \(i-j < 0\). I think this is an unimportant skill 😛
\(O(nk)\) 😃
C. Vacation
Easy~
We define \(f_{i,j}\) is the maximum points of happiness at Day i, and we choose activity j at Day i. We cannot choose activity j at Day i+1.
So, \(f_{i,j}\) can be transfered from \(f_{i-1,k}\, ,k\neq j\).
The answer is \(\operatorname{max}\{f_{n,1},f_{n,2},f_{n,3}\}\).
\(O(n)\) ~
D. Knapsack 1
01 backpack.
Because I cannot explain it in English, so I will only write the equation.
\(i\) is the i-th item, \(v\) refers to the remaining capacity.
\(O(nw)\)
F. LCS
嘤语不会用了QAQ
定义 \(f_{i,j}\) 为 \(s\) 串前 \(i\) 个字符和 \(t\) 串前 \(j\) 个字符的LCS。
\(O(n^2)\)
G. Longest Path
We have two methods to solve this task.
First, we use Topological sorting. Then, we can traverse the topological order from back to front.
Second, we can use the memorizing search method.
\(O(n+m)\)
H. Grid 1
Matrix DP.
We can walk to the right and the bottom point.
So, we can walk from the left and the top point.
\(O(HW)\)
I. Coins
Probability DP.
We define f[i][j] is the probability of \(j\) out of the first \(i\) coins turned heads.
So, if we need \(j\) coins turns heads, we have \(2\) options.
- There are \(j\) out of the first \(i - 1\) coins turned heads and the i-th coin flip to the back.
- There are \(j - 1\) out of the first \(i - 1\) coins turned heads and the i-th coin turn to the front.
\(O(n^2)\)
J. Sushi
求期望。
设 \(f_{i,j,k}\) 为还剩 \(i\) 个盘子有一个寿司,\(j\) 个盘子有两个寿司,\(k\) 个盘子有三个寿司时的期望值。
方程不会写。
\(O(n^3)\)
K. Stones
Game theory.
If there left \(k\) stones left and this state can win, then there must a state of \(f\) that \(k-a_i=f\) and this state must lose.
L. Deque
The first type of Range DP.
We define \(f_{i,j}\) as the maximum value the first people can get in the range \([i,j]\).
So, \(f_{i,j}\) can be translated from \(f_{i+1,j}\) and \(f_{i,j-1}\).
\(O(n^2)\)
M. Candies
Prefix Sum Optimization.
First, we all know that
But the time complexity of this algorithm is \(O(nk^2)\), So we cannot pass this task with this algo.
So we need Prefix Sum Optimization. We define \(pre_{m}\) as \(\sum_{k=1}^{m}f_{i,k}\).