动态规划
奔跑的蜗new
这个作者很懒,什么都没留下…
展开
-
Advanced Fruits(LCS+保存路径)
参考博客#include <stdio.h>#include <string.h>char s1[1005];char s2[1005];int dp[1005][1005];int mark[1005][1005];int len1,len2;void pre(int i,int j)//利用递归打印字母{ if (i == 0 && j == 0) return; i原创 2018-01-04 23:42:48 · 224 阅读 · 0 评论 -
最长公共子序列-滚动数组优化
朴素写法:for (int i = 1; i <= len1; i++){ for (int j = 1; j <= len2; j++) { if (str1[i-1] == str2[j-1]) dp[i][j] = dp[i-1][j-1] + 1; else dp[i][j] = max(dp[i-1][...原创 2018-04-09 21:13:16 · 692 阅读 · 0 评论 -
最长上升子序列
题目:POJ2533#include <stdio.h>#include <algorithm>using namespace std;int num[1005];int dp[1005];int main(){ int n; while (scanf("%d",&n) != EOF) { //dp[i]表示以第i个数结尾的上升子序列元素个...原创 2018-04-09 22:02:11 · 87 阅读 · 0 评论 -
最大子序列和
hdu 1003#include <stdio.h>#include <algorithm>using namespace std;int num[100005];int main(){ int t,kase = 0; scanf("%d",&t); while (t--) { ++kase; if (kase != 1) prin...原创 2018-04-09 22:54:55 · 101 阅读 · 0 评论 -
最长上升子序列O(nlog(n))
思路:从头到尾扫一遍序列,用一个数组ans保存当前最长的上升序列,如果扫到的元素大于当前上升序列的最后一个,那么就把该元素加在ans序列末尾,否则,将该元素替换ans序列中第一个比该元素大的元素,如果没有则替换最后一个。替换过程使用二分处理。#include <string.h>#include <stdio.h>int num[1005];int ans[10...原创 2018-04-10 22:29:43 · 372 阅读 · 0 评论 -
CF730J(背包)- 省赛选拔
有n个瓶子,每个瓶子有a[i]的水,每个瓶子容量为b[i],每移动一个单位水小号1秒,问在使用最少个瓶子的前提下,移动水至少需要多少秒省赛选拔前没做背包专题,后来做了背包专题,现在看这题还是毫无头绪。。。状态实在太难想了,还是只会参考别人的参考博客:背包dp#include <cstdio>#include <cstring>#include <...原创 2018-08-15 18:52:17 · 330 阅读 · 0 评论