Sth about Educational DP Contest
Contest Website : atcoder.jp/contests/dp
TaskNum & TaskName & Status & Algorithm \\
\hline
A & Frog 1 & \color{green}{AC} & \text{简单线性DP} \\
\hline
B & Frog 2 & \color{green}{AC} & \text{简单线性DP,TaskA加强版} \\
\hline
C & Vacation & \color{green}{AC} & \text{简单线性DP} \\
\hline
D & Knapsack 1 & \color{green}{AC} & \text{OI背包} \\
\hline
E & Knapsack 2 & \color{yellow}{WA} & \text{01背包重大价小} \\
\hline
F & LCS & \color{green}{AC} & \text{最长公共子序列} \\
\hline
G & Longest Path & \color{green}{AC} & \text{DAG上DP} \\
\hline
H & Grid 1 & \color{green}{AC} & \text{矩阵DP} \\
\hline
I & Coins & \color{green}{AC} & \text{概率DP} \\
\hline
J & Sushi & \color{green}{AC} & \text{期望DP} \\
\hline
K & Stones & \color{green}{AC} & \text{博弈论} \\
\hline
L & Deque & \color{green}{AC} & \text{区间DP} \\
\hline
M & Candies & \color{green}{AC} & \text{前缀和优化线性DP} \\
\hline
N & Slimes & \color{green}{AC} & \text{区间DP} \\
\hline
O & Matching & \color{green}{AC} & \text{状压DP} \\
\hline
P & Independent Set & \color{green}{AC} & \text{树形DP} \\
\hline
Q & Flowers & & \\
\hline
R & Walk & & \\
\hline
S & Digit Sum & & \\
\hline
T & Permutation & & \\
\hline
U & Grouping & & \\
\hline
V & Subtree & & \\
\hline
W & Intervals & & \\
\hline
X & Tower & & \\
\hline
Y & Grid 2 & & \\
\hline
Z & Frog 3 & & \\
\end{array}
\]
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。
f_{i-1,j-1}+1, & s_i=t_j \\
\operatorname{max}\{f_{i-1,j},f_{i,j-1}\}, &\text{otherwise}
\end{cases} \]
\(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}\).
\]
Sth about Educational DP Contest的更多相关文章
- Atcoder Educational DP Contest
前面简单一点的题直接过吧. A 暴力DP B 怎么还是暴力DP C 还是暴力DP D 直接背包 E 这个背包不太一样了,这里有一个技巧,就是因为价值很小,所以直接对价值背包,求出来达到某一个权值最小的 ...
- Atcoder Educational DP Contest 题解
A - Frog 1/B - Frog 2 入门... #include<cstdio> #define abs(a) ((a)>=0?(a):(-(a))) #define min ...
- Atcoder Educational DP Contest I - Coins (概率DP)
题意:有\(n\)枚硬币,每枚硬币抛完后向上的概率为\(p[i]\),现在求抛完后向上的硬币个数大于向下的概率. 题解:我们用二维的\(dp[i][j]\)来表示状态,\(i\)表示当前抛的是第\(i ...
- Educational DP Contest H - Grid 1 (DP)
题意:有一个\(n\)X\(m\)的图,"#"表示障碍物,"."表示道路,只能向右或向下走,问从左上角走到右下角的方案数. 题解:这题可以用bfs来搞,但dp更 ...
- Educational DP Contest G - Longest Path (dp,拓扑排序)
题意:给你一张DAG,求图中的最长路径. 题解:用拓扑排序一个点一个点的拿掉,然后dp记录步数即可. 代码: int n,m; int a,b; vector<int> v[N]; int ...
- Educational DP Contest F - LCS (LCS输出路径)
题意:有两个字符串,求他们的最长公共子序列并输出. 题解:首先跑个LCS记录一下dp数组,然后根据dp数组来反着还原路径,只有当两个位置的字符相同时才输出. 代码: char s[N],t[N]; i ...
- Educational DP Contest E - Knapsack 2 (01背包进阶版)
题意:有\(n\)个物品,第\(i\)个物品价值\(v_{i}\),体积为\(w_{i}\),你有容量为\(W\)的背包,求能放物品的最大价值. 题解:经典01背包,但是物品的最大体积给到了\(10^ ...
- 【DP】Educational DP Contest
这份 dp 题单的最后几题好难 orz. 前面的题比较简单,所以我会选取一些题来讲,其它的直接看代码理解吧 qwq. 传送门: https://atcoder.jp/contests/dp 全部 AC ...
- AtCoder Educational DP Contest 总结
前言 感觉都初一升初二了,再做这个题是不是有点太菜了啊-- 里面大概都是些 DP 板子题(确信,题目质量还挺高的,不过不涉及太难的优化(实际上只有最后一题是斜率优化). 不管了,还是写个 blog 来 ...
随机推荐
- 玩转STM32MP157- 使用 u8g2 驱动 OLED 12864(SSD1306)
环境 硬件环境:STM32MP157C-DK2 软件: MPU上使用ST官方提供的STM32MP15x OpenSTLinux Starter Package 编译系统:Ubuntu 1604 64b ...
- Channel Allocation 贪心涂色
Channel Allocation 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> ...
- 6-x2 echo命令:将指定字符串输出到 STDOUT
echo 用法 常用转义符 echo 用法 echo 用来在终端输出字符串,并在最后默认加上换行符. echo 加上-n参数可以使数据字符串后不再换行 echo 加上-e参数可以解析转义字符 ...
- C# 8.0和.NET Core 3.0高级编程 分享笔记二:编程基础第一部分
基础部分被我分为了2篇,因为实在太多了,但是每一个知识点我都不舍得删除,所以越写越多,这一篇博客整理了4个夜晚,内容有点多建议慢慢看.本章涵盖以下主题: 介绍C# 理解C#的基础知识 使用变量 处理空 ...
- ESP32智能配网笔记
基于ESP-IDF4.1 #include <string.h> #include <stdlib.h> #include "freertos/FreeRTOS.h& ...
- postgresql 使用游标笔记
游标介绍:游标是一种从表中检索数据并进行操作的灵活手段,游标主要用在服务器上,处理由客户端发送给服务端的sql语句,或是批处理.存储过程.触发器中的数据处理请求. 游标的优点在于它允许应用程序对查询语 ...
- STM32学习进程
新建一个自己的工程模板,以我所用的MDK4为例 MDK4软件图标 (1)新建一个自己储存数据的文件夹.以我自己为例(文件夹名字任取自己记住熟悉就行,以下将以我的文件夹文件进行操作讲解) 新建的总体文件 ...
- 高校表白App-团队冲刺第八天
今天要做什么 尝试连接数据库(MySQL) 做了什么 连接成功 遇到的问题 Android连接数据库可以采用JDBC连接,因为在Android开发中,大多数连接到远程MySQL数据库的方法是加入特定的 ...
- Java基础00-运算符4
1. 算术运算符 1.1 运算符和表达式 1.2 算数运算符 余数的计算取余数是指整数除法中被除数未被除尽部分,且余数的取值范围为0到除数之间(不包括除数)的整数 ,例如27除以6,商数为4,余数为3 ...
- github在不同电脑上协同开发
当我换了电脑后,开发自己的github项目遇到了一些问题. 首先,git clone 'repository url'拉取下来项目,开始开发项目发.修改了一些文件后,当要git commit, git ...