![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
文章平均质量分 63
NeroXD
这个作者很懒,什么都没留下…
展开
-
P2704 [NOI2001] 炮兵阵地 状压DP
P2704 [NOI2001] 炮兵阵地HINTHINTHINT对于 100% 的数据,N≤100N≤100N≤100,M≤10M≤10M≤10,保证字符仅包含 ppp 与 hhh。M的数据范围很小,考虑状压DP。首先,影响第iii行的有i−1i-1i−1行和i−2i-2i−2行,所以我们的dpdpdp数组要体现出来这两个数据的,同时体现出来自己现在在哪行。所以我们可以开个三维的dpdpdp数组:dp[pre][now][i]dp[pre][now][i]dp[pre][now][i],其中的i原创 2021-07-28 16:24:09 · 118 阅读 · 0 评论 -
P2051 [AHOI2009]中国象棋
题目链接题目大意:给定n*m大小表格,让你摆放棋子,摆放的要求是同一行、同一列中的棋子数不超过两个,问一共可能有多少摆法。(不看别人的题解真不会开dp数组,太弱小了)dp数组开三位,表示已经处理好了前i行时,有j列有一个棋子,有k列有两个棋子。dp数组开完之后思路就很明了。我们每次最多可以新摆放两个棋子(如果多了同一行的就会超出限制)先考虑摆放零个的情况:直接就和上一层的一样了。摆一个的情况:我们只能摆在有零个或者一个棋子的那一列。摆两个的情况:还是可以摆在有零个或者一个棋子的那一列原创 2021-07-27 16:29:41 · 204 阅读 · 1 评论 -
Making the Grade (POJ - 3666) 离散化+DP
Making the Grade题目大意:给你一个数组,求将其修改为单增或单减(非严格)所需要的最少代价,修改一次的代价为|初值-末值|。以单增为例:所有更改后的数字必定在原数组中出现过。dp[i][j]表示前i个数都满足要求,且第i个数字取j时所要的代价之和,但由于a[i]取值范围到了1E9,故要进行离散化——第i个数字取第j小的数字(sort)dp[i][j]=abs(a[i]−b[j])+min(dp[i−1][p])且p取1到jdp[i][j]=abs(a[i]-b[j])+min(dp[原创 2021-07-07 10:06:19 · 195 阅读 · 0 评论