随笔分类 -  动态规划

摘要:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102 普通写法:dp,预处理出每个点最左边和最右边的距离。 用单调递减栈维护。 阅读全文
posted @ 2017-03-03 20:16 Crazy、baby 阅读(629) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5532 题意:给你一个数列,消除一个数以后,是剩下的数列是排序的(递增或递减的)。 题解:直接正反两次LIS即可,如果>=n-1,证明是YES。注意要用到LIS的nlogn算法。 注意元素相等的情况(WA的一晚。。 阅读全文
posted @ 2016-09-14 16:00 Crazy、baby 阅读(205) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1423 一维数组. 1 #include<stdio.h> 2 #include<string.h> 3 int a[510],b[510]; 4 int dp[510]; 5 int main() 6 { 7 i 阅读全文
posted @ 2016-07-21 17:09 Crazy、baby 阅读(162) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1458 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 char a[1005],b[1005]; 6 int dp[100 阅读全文
posted @ 2016-07-21 15:24 Crazy、baby 阅读(228) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=2533 注意dp[i]是以第i个数为尾数(一定为尾数结尾)的最长上升子序列。 dp[i]=max(dp[j]+1,dp[i])。 dp[n]不一定为最大的,所以要重新扫一遍。从零开始,所以最后要加一。 1 #include<cstdio> 2 # 阅读全文
posted @ 2016-07-21 14:45 Crazy、baby 阅读(153) 评论(0) 推荐(0)