dp
asdfgh0308
这个作者很懒,什么都没留下…
展开
-
poj1821 Fence,dp
题意,给k个worker,n个plank,每个worker有l(刷plank的连续区间最长长度)、p(刷一个plank的工资)、s(这个worker坐在哪个plank前面)。问最大工资总和是多少。要求每个工人刷的plank是连续的,且要包含s位置的plank。dp[i]表示做到第i个plank的最大值。做每个worker时,将第i个位置的dp值加上(n-i)*p[i],这样,转移的时候原创 2014-08-24 11:35:47 · 679 阅读 · 0 评论 -
hdu4604 Deque,树状数组,最长上升/下降子序列
hdu 4604 Deque,树状数组,最长上升/下降子序列正在补习13多校题。给你一组数,按顺序取出来,再给一个deque,按顺序把这组数取出来插到deque中,可以插头和尾,也可以直接丢掉。要求deque中元素非降。问deque中元素最多有多少个。只要枚举一个中心点,然后就是找这个点之后的大于这个元素的最长上升序列和小于这个元素的下降序列的长度和+1,更新答案即原创 2014-10-27 23:05:45 · 870 阅读 · 0 评论 -
hdu4916 Count on the path,树dp
水题搞了半天也是醉了。以1号节点为根,如果路径不经过根就是1.如果经过根,拆为两条,找这两颗子树中不在路径的最小值和另外一些子树的最小值。大概过程就是dfs(),找每个点往下的最小值。dfs3(),找每个点从上往下不在路径上的最小值。dfs2()找每个点所在的子树。很丑陋的代码,但是明天要比赛,懒得改了!#pragma comment(linker, "/STACK:102原创 2014-11-15 20:17:57 · 541 阅读 · 0 评论 -
hdu4303 Hourai Jeweled 树形dp,统计
hdu4303 树形dp,统计给一个树,边有颜色,点有权值。满足某种条件的路径是好的路径,求(好的路径的(路径上的点的权值和)的总和)。这种条件就是这个路径上没有两个相邻边同色。关键就是算一个点的权值要被计算几次。其实情况就两种,不要重复计算就可以。情况1.包含(u,fa)这条边的路径。情况2.不经过fa,而包含(u,v)这条边的路径。这里要注意,如果有多个儿子原创 2014-10-17 15:40:38 · 564 阅读 · 0 评论 -
hdu4693 Huge String,高精度,dp
hdu4693 Huge String,高精度,dp给一些字母的替换规则,给一个s串。问替换操作n次后,[k,k+m-1]位置的子串是什么。dp预处理大写字母操作i次的长度。然后dfs找那段的字母就可以了。k明摆的是高精度了。贴板吧。#include#include#include#includeusing namespace std;#defin原创 2014-11-03 23:50:11 · 652 阅读 · 0 评论 -
poj1321 棋盘问题,状态压缩dp
好久不做题了。虽然是水题,还是写个解题报告吧。普通的暴搜要8^8的复杂度,还是有点危险的。随便想一下可以发现这题存在最优子结构等动态规划的要素,所以可以用状态压缩DP解决。状态就是每层,当前已有哪几个列已被占。二维。转移就是两种:1.当前行不加棋子,就是f[i][j]+=f[i-1][j];2.当前行加一个棋子,就是f[i][newst]+=f[i-1][j],而且加棋原创 2012-12-31 00:12:08 · 1713 阅读 · 4 评论