9.28 考试总结

10 篇文章 0 订阅
4 篇文章 0 订阅

来自9.28号考试的总结(ps:打到这里好像29号了QAQ)
区间DP
一、定义
区间DP,顾名思义是在区间上DP,它的主要思想就是先在小区间进行DP得到最优解,然后再利用小区间的最优解合并求大区间的最优解。
二、实现思路
下面给出区间DP最简单形式的伪代码(具体要根据题目修改)

//mst(dp,0) 初始化DP数组
for(int i=1;i<=n;i++){
    dp[i][i]=初始值
}
for(int len=2;len<=n;len++)  //区间长度
for(int i=1;i<=n;i++){        //枚举起点
    int j=i+len-1;           //区间终点
    if(j>n) break;           //越界结束
    for(int k=i;k<j;k++){ //枚举分割点,构造状态转移方程
        dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+w[i][j]);
}
}

好像没啥了。。。
题目:hdu 5115 poj 1651 poj 2955 poj 3280
Bzoj 4380 bzoj 1710 bzoj 1996//这几道板子oj的题真恶心

树状动态规划
之所以这样命名树规,是因为树形DP的这一特殊性:没有环,dfs是不会重复,而且具有明显而又严格的层数关系。
拿到一道树规题,我们有以下3个步骤需要执行:
判断是否是一道树规题:
即判断数据结构是否是一棵树,然后是否符合动态规划的要求。如果是,那么执行以下步骤,如果不是,那么换台。
建树:通过数据量和题目要求,选择合适的树的存储方式。
如果节点数小于5000,那么我们可以用邻接矩阵存储,如果更大可以用邻接表来存储(注意边要开到2*n,因为是双向的。这是血与泪的教训)。如果是二叉树或者是需要多叉转二叉,那么我们可以用两个一维数组brother[],child[]来存储(这一点下面会仔细数的)。
写出树规方程:通过观察孩子和父亲之间的关系建立方程。我们通常认为,树形DP的写法有两种:
a.根到叶子: 不过这种动态规划在实际的问题中运用的不多
b.叶子到根: 既根的子节点传递有用的信息给根,完后根得出最优解的过程。这类的习题比较的多。

以下即将分析的题目的目录及题目特点:
一、常规树形DP
1、 Hdu 1520 Anniversary party 每个节点有权值,子节点和父节点不能同时选,问能选的最大价值是多少?
2、Hdu 2196 Computer 经典题,求树每个点到其他点的最远距离,转化为有根树,深搜两次,一次记录到叶子的最远距离,一次更新最终答案
3、Poj 1741 Tree(难) 经典题,求树上两点间距离小等于K的方案数,树上分治。
4、Poj 2152 Fire(难) 罕见的O(n^2)的树形DP,在树上建消防站,要求每个节点离最近的消防站距离小于K,问最小花费。
5、Poj 3162 Walking Race(难) 树形DP找最远距离+线段树查询最大最小值,然后再维护两个指针遍历整个序列。//这东西好像可以跑单调队列
二、树形背包问题(在树上进行分组背包处理)
1、Poj 1155 TELE 把每个节点的子节点看成一组背包,最大容量是这点的叶子子孙数量,选几个节点就是选择的容量,价值就是用户给的Money-中转费用
2、Hdu 1011 Starship Troopers 和上题相似,要选择父节点必先子节点,特判m为0的时候。
3、Poj 1947 Rebuilding Roads 求最少删除几条边使得子树节点个数为p,具体的模型和上题很像。
4、Hdu 1561 The more, The Better 在一棵树上选择若干个点获得的最大价值,选子节点必须先选父节点,求解情况和上两题相同。
5、Hdu 4003 Find Metal Mineral (推荐,好题) 树形DP+选且只能选一个物品的分组背包,状态转移方程难想。
6、Poj 2486 Apple Tree 树形DP+分组背包,但是状态转移方程要分三步,较为难想。
7、Poj 3345 Bribing FIPA 树形DP+分组背包,和前面几题相比没有特殊的地方,只是要注意输入。
8、Hdu 4044 GeoDefense 树形DP+分组背包,要求从每个儿子结点获取最小的hp,然后找这些儿子的最大组合,不是特别好想。
9、Zoj 3627 Treasure Hunt II 树形DP +分组背包,浙大月赛的水题,很普通的树形背包。
10、4276 The Ghost Blows Light 有两种写法,一种是把一棵树压缩成一条链,然后在链上DP,一种和 Apple tree差不多
三、删点或者删边类树形DP
1、Hdu 3586 Information Disturbing 二分Upper power limit,然后从叶子节点向上更新,边权与limit比较再进行状态转移。
2、Poj 3107 Godfather 删点,使剩下的分支中最大的节点数最小,深搜一次记录到叶子节点距离,再进行枚举求最大值,再更新答案。
3、Poj 2378 Tree Cutting 删点,使剩下的分支中有最大节点数的分支小等于总数一半,问有几种方案,和上题差不多。
4、Poj 1655 Balancing Act 删点,使剩下的分支中最大的节点数最小,深搜一次记录到叶子节点距离,再进行枚举求最大值,再更新答案。
5、Poj 3140 Contestants Division 删边,求删去某条边后两个分支的最小差异值,也是深搜两次。

完成于9.29日 0:25

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值