动态规划DP
文章平均质量分 72
apsara-jueying
阿里云菜鸟攻城狮
展开
-
poj 1015 Jury Compromise(神一般的DP)
先说题意 一共n个人 每人有两个值 p 和 d。现在要从中选出m个人 使得这m个人的p 的和 与 d的和的差的绝对值最小 如果有相同情况输出p的总和最大的那个 要求输出这种方法选的人的编号,生序输出 这道题。半年前我就看过,我想了不会,我看代码看不懂。 这段时间来一直想搞这道题 每次想想 想不通 都放弃了 刚才,就在刚才。我终于过了。 我原创 2013-01-23 23:09:24 · 356 阅读 · 0 评论 -
HDU 1423 Greatest Common Increasing Subsequence(最长公共上升子序列)
最长上升子序列没啥 问题这个是公共的诶。。。其实还是DP就是稍微复杂了点 首先是输入两个数组 数组长度 最大是500 我们以数组a为基准 用b匹配 用len[i]记录b中第i 个数字为终点的最长公共上升子序列 最jj pain的DP过程啊。。 我们循环数组a 然后对每个a[i] 循环数组b 如果a[i]==b[j]了,我们肯定是要更新len[原创 2013-01-23 23:06:53 · 448 阅读 · 0 评论 -
poj 1338 Ugly Number(DP)
这个题是好经典的DP了,记得当初还用很弱智的办法 然后wa了半天。 素因子只有2 3 5 嘛 那我们用三个index 表示2 3 5 乘到第几位了 每次更新的时候看2 3 5 分别和index位置的那个数字相乘 最小的那个更新 但是也有可能 相等 那就index都++ #include #include using namespace std; int a原创 2013-01-23 23:07:45 · 348 阅读 · 0 评论 -
POJ 1088滑雪(纯DP的方法)
刚才写过了dfs的方法 现在回顾一下dp算法 dp的算法看起来比dfs 好理解的多 当然dfs设计复杂的递归本来就不是一种好理解的算法。 我们首先用struct data 存储节点 这个节点是由坐标和 height值组成的。 data arr【maxn】; 具体步骤就是输入 赋值arr数组 然后从小到大排序 我们的思想是从he原创 2013-01-23 23:08:35 · 357 阅读 · 0 评论 -
hdu 1025 Constructing Roads In JGShining's Kingdom(最长上升子序列的o(nlog(n))算法)
这个是很久以前敲过的。。今天又用到LIS 的nlogn算法了。。于是回顾。但是自己的代码好半天没看懂。。看来写题解真的好重要啊。 最后看别人的看懂了。。。 这种算法用一个数组stack stack[i]表示目前为止 lis的长度为i的 最末尾的数字的最小值。 这个值应该尽可能小 这样后面的数字更可能插入到这个序列。 对原来的数组arr进行迭代 从 首先stack[1]=arr[i]; 然后原创 2013-01-28 00:10:15 · 354 阅读 · 0 评论 -
poj 1163The Triangle(水dp)
#include #include #include #include using namespace std; const int maxn=102; int dp[maxn][maxn]; int arr[maxn][maxn]; int main() { int n,i,j; while(scanf("%d",&n)!=EOF) { for(i=1原创 2013-01-27 21:30:03 · 420 阅读 · 0 评论 -
poj 3670 Eating Together(最长上升子序列 lis nlogn复杂度)
看了这个题 然后发现用lis做 然后。。。傻×了两次 第一个词是还写了一个lds 突然发现把原来数组reverse一下再lis不就行了么。。。 傻×的第二点 主要的 lis算法 nlogn复杂才能过。以前写过 找了半天才找到 但是又忘了 重新学了一遍。 之后又wa了 因为这次改了数组下标从0 开始 然后 len 什么的都没改 以后直接从1 开始就拉倒了。。 之前写过这个算法了 直接贴原创 2013-01-28 00:42:56 · 704 阅读 · 0 评论 -
poj3230 Travel(图中的DP,比较简单而且有意思)
题目的hint应该是给错了 第三天应该是从2到1 连hint都错了。。怪不得这题目过的人不多。。 题意是有n个城市,一个人要在m天内travel 这n个城市。他每天在一个城市 要得到一个income 但是从一个城市到另一个城市也要有cost 如果呆在一个城市 也就是在矩阵中的从i到i表示呆在这个城市的cost nm 都小于100 然后给出n*n的矩阵 cost cost[i][j]表示的是从i原创 2013-02-07 01:50:01 · 476 阅读 · 1 评论 -
DUT1033: MATRIX(2013市赛,找矩阵中最大子矩阵)
市赛题。。当时没敲。。太无语了。。 还是用扫描法 对每个位置记录 up left 和right 只不过这回记录left 和right的时候 要在这个位置 往左和右探查。。这样复杂度最坏可能上升到三次方。 。 代码写的长了。。但是逻辑清晰。 直接过了。。。唉 。市赛时候忘了敲一下了。。 #include #include #include #include using namespace原创 2013-04-24 10:51:32 · 516 阅读 · 0 评论