树形dp例题

前言 学OI的时候就做过树形dp的题,不过那时候全在划水。看了看题解还不太懂就直接照着题解写了,现在再回来看还是不会QAQ,所以就再看看然后自己写了一遍。 ...

February 20, 2020 · 2 min · zzsqwq

dp练习

A. 矩阵取数游戏 题意 给定一个 $n\times m$ 的矩阵,其中每个元素为非负整数。每次你可以从每行的行首或行末取一个元素,得到的分数为当前元素的值 $a_{ij}\times 2^k$ ,$k$ 为当前是第几次取该行上的元素。 问最大得分为多少。 ...

February 18, 2020 · 2 min · zzsqwq

dp习题练习

A. 方格取数 题意 有一个 $N*N$ 的整数方阵,每个点初始值为0,在一些点上放上数,一个人从左上角走到右下角,规定只能向下或向右走,当他经过的点上有数时会取走它,问走两遍最多能取的数的和最大为多少。 ...

February 12, 2020 · 2 min · zzsqwq

基础线性dp例题 #2

1. 石子归并 题意 $N$ 堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将 $N$ 堆石子合并成一堆的最小代价。 思路 很经典的区间dp例题,我们可以用 $dp[i][j]$ 来表示合并 $i\sim j$ 所需的最小代价,通过枚举中间的断点,来通过方程 $dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+cost[i][j])$ ,其中 $cost[i][j]$ 表示从 $i\sim j$ 的石子总数,通过前缀和很容易计算。在进行状态转移时需要前面状态已知,因为是枚举中间断点,所以断开区间的长度一定要小于原区间,因此在转移之前需要确保比他短的区间都已经达到了最小代价,因此我们可以通过枚举区间长度从 $2\sim N$ 来实现。 ...

February 7, 2020 · 2 min · zzsqwq

基础线性dp例题

前言 某位大佬曾经说过,dp不会没问题,想不到状态转移方程没问题,多做题就会了。所以,我打算多刷点dp题。那么,先从基础刷起吧。 1. P1091 合唱队形 题意 已知序列 $a$ 有 $n$ 个数,通过取出其中一些数可以使他满足严格的先增再减序列,问最少取出几个。 ...

February 6, 2020 · 1 min · zzsqwq