
DP
文章平均质量分 62
16bit戦争
这个作者很懒,什么都没留下…
展开
-
BZOJ 3831 POI 2014 Little Bird 单调队列DP
题目大意:给出一片树林,树排成一排,每一棵树都有一个高度。从地一棵树出发,每次可以跳到i+k棵之前,跳到小于自己高度的树上不需要花费体力,反之需要花费一点体力,问到最后一棵树最少需要多少体力。思路:简单DP方程:f[i] = min{f[j] + (height[i] >= height[j])}然后发现数据范围只有O(n)可以过。维护单调队列,队列中按照f单调递减,队尾按照时原创 2015-01-08 13:59:25 · 1220 阅读 · 0 评论 -
BZOJ 3246 IOI 2013 Dreaming 树形DP
题目大意给出一个缺若干条边的树,现在让你填一些长度为定值的边,使得整个树的直径最小。思路给一个详细的网址,讲的非常明白。 http://www.ccf.org.cn/resources/1190201776262/fujian/xuhaoran2013-07-25-03_33_55.pdf还有数据范围是50w。CODE#define _CRT_SECURE_NO_WARNINGS#includ原创 2015-03-02 12:52:17 · 1193 阅读 · 0 评论 -
BZOJ 3892 Usaco2014 Dec Marathon DP
题目大意:给出平面上的一些点,要求按顺序遍历,费用是两点之间的曼哈顿距离,可以跳过k次,问最少需要花费多少。思路:O(n^3)dp就行了。CODE:#define _CRT_SECURE_NO_WARNINGS#include #include #include #include #define MAX 510using namespace std;原创 2015-02-27 18:22:09 · 986 阅读 · 0 评论 -
BZOJ 1046 HAOI 2007 上升序列 DP
题目大意:给出一个序列,求出字典序最小的长度为k的上升序列。思路:先随便搞搞求出一个数组f,表示从i开始最长的上升序列的长度。然后贪心的往后找,能放在当前位置就放。CODE:#define _CRT_SECURE_NO_WARNINGS#include #include #include #include #define MAX 10010#defin原创 2015-02-27 14:46:11 · 739 阅读 · 0 评论 -
BZOJ 1270 Beijing Wc 2008 雷涛的小猫 动态规划
题目大意:给出一个棵果树,上面有些地方长了一些果子。现在有一只小猫想去吃这些果子,他从最高处往下跳,每到一个地方可以吧这个地方的果子全吃掉。也可以向旁边的果树上跳。问小猫最多能吃到多少果子。思路:WC的无脑动规大水题。随便加个小优化就过了。。CODE:#include #include #include #include #define MAX 3510u原创 2014-12-31 14:36:21 · 951 阅读 · 0 评论 -
BZOJ 1057 ZJOI 2007 棋盘制作 DP+悬线法
题目大意:给出一个由01形成的矩阵,问这个矩阵中最大面积的正方形和矩形,其中任意一个方块相邻的都是不同的格子。思路:其实吧所有(i + j)&1的位置上的数字异或一下,就变成都是0或者都是1的最大正方形和矩形了。第一问就是水DP,第二问可以单调栈或者悬线。都很好写。CODE:#include #include #include #include #defin原创 2015-01-14 08:30:41 · 980 阅读 · 0 评论 -
BZOJ 1090 SCOI 2003 字符串折叠 区间DP
题目大意:给出一个字符串,在不改变这个字符串的内容的情况下可以将它进行折叠,具体见题里说的吧。问这个字符串最短可以折叠成多长。思路:数据范围才100,怎么暴力怎么搞。首先是一个区间DP,设f[i][j]为字符串从i开始到j最短可以折叠成多短。要用到体中的折叠的方法,其实只需要暴力枚举这一段折叠成几段,然后用hash判定一下就行了。当然不要忘了正常的区间DP。CODE:原创 2015-01-14 10:33:22 · 1031 阅读 · 0 评论 -
BZOJ 1592 Usaco 2008 Feb Making the Grade 路面修整 DP
题目大意:给出一个不整齐的路面,可以将一个路面升高或者降低,都需要话费|x - x'|的费用,把路面修正成单调不降或单调不升的最小花费是多少。思路:路面的高度跨度有点大啊,先离散化。之后f[i][j] 表示到i为止路面保证单调不降并且最高高度为j的最小花费是多少,利用一个前缀和优化一下。单调不升也一样,简单DP水过。。CODE:#include #include原创 2015-01-14 14:31:43 · 1359 阅读 · 0 评论 -
BZOJ 2427 HAOI 2010 软件安装 Tarjan+树上DP
题目大意:给出一个每个点都有一个依赖节点的图,选择一个节点必须选择这个节点的依赖节点,才会得到这个节点的权值。每个点有一个空间,给出总空间限制,问最多可以获得多少权值。思路:出现在一个环中的点要么全选,要么全不选,所以可以先缩点,之后变成一棵树,在树上做一下树上背包就行了。CODE:#include #include #include #include #d原创 2015-01-13 15:59:34 · 1511 阅读 · 0 评论 -
BZOJ 1093 ZJOI 2007 最大半连通子图 强联通分量+拓扑图DP
题目大意:定义半连通图:图中任意两点之间可以单向到达。求一个图的最大半连通子图,和这个图最大半连通子图的个数。思路:半连通图并不是一定要没有环。。这题意让我理解的。。其实想法什么的不难,想明白了也不难写。因为要保证半连通,所以要先处理出一个图的联通状况。先用Tarjan缩点得到DAG,在这个DAG上找到最长链的长度就是第一问的答案。第二问可以先找到所有f值等于答案的点,在这些点上反原创 2015-01-11 09:49:53 · 994 阅读 · 0 评论 -
BZOJ 3611 HEOI 2014 大工程 LCA单调性
题目大意:给出一棵树,每次询问一些节点,当把这些节点连接起来,使得每两个询问的点之间有一条边,共有k*(k - 1)条边。问这些边中,长度的总和是多少,最短的一条边是多少,最长的一条边是多少。保证询问的点的总数是O(n)级别。思路:利用LCA单调性,每次询问的时候重新建树,在这棵树上做DP,使得总体时间复杂度降到O(nlogn)。树形DP我写的都要麻烦死了。。听了正解之后简直想吐血原创 2015-01-09 14:52:51 · 1274 阅读 · 0 评论 -
POJ 1737 Connected Graph 高进度+递推
题目大意:n个点组成的联通图有多少种。思路:动态规划的思想。设f[i]为i个点的连通图有多少种。显然f[1] = 1。从2个点开始,我们用所有的方案 - 不连通的图的方案。所有的方案很简单,2^(n * (n - 1))。然后我们枚举哪些点与1号节点联通,剩下的点不与1号节点联通,那么图就是不连通的。设有k个节点与1号节点联通,那么这个方案数是f[k + 1]。剩下的点原创 2015-01-28 20:09:30 · 932 阅读 · 0 评论 -
BZOJ 3890 Usaco2015 Jan Meeting Time 拓扑图DP
题目大意题上的中文题意太不明确了。。。 给出一个拓扑图,每条有向边有两个权值,有两个人从1出发到n,分别走这两种权值。问有没有权值使得这两个人都能走过这些权值到达n。思路看懂了题之后就水了。维护两个数组表示从1号节点是否能够通过i的权值到达j。然后做拓扑图DP。CODE#define _CRT_SECURE_NO_WARNINGS#include <queue>#include <cstdio>原创 2015-03-02 16:14:16 · 1153 阅读 · 0 评论