给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。 给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 1 ...
分类:
其他好文 时间:
2017-07-25 21:10:48
阅读次数:
156
FatMouse's Speed http://acm.hdu.edu.cn/showproblem.php?pid=1160 最长递增子序列问题的一个变体。实际上跟最长递增子序列问题没有不论什么本质的差别。 定义一个结构体mice,设mice[i].w表示第i仅仅老鼠的重量,mice[i].s表示 ...
分类:
其他好文 时间:
2017-07-22 22:26:51
阅读次数:
181
题目链接:点这里!! 题意:中文题 题解: f[i]:以第i个数结尾的LIS的长度,和该长度的LIS数量 转移的话,显然f[i].first=max{f[j].first}+1,j<i且a[j]<a[i] f[i].second=∑jf[j].second,f[j].first=f[i].first ...
分类:
其他好文 时间:
2017-07-15 18:52:09
阅读次数:
147
题意:给出一个数列,其中0可以替换为任意整数,问最长严格递增子序列多长。 思路:如果某个数前面有0,那么这个0替换成该数-1为最优,那么我们就可以把数字-前面0的个数,去掉0形成一个新的数列,结果就是该数列的最长递增子序列+0的个数 ...
分类:
其他好文 时间:
2017-07-05 00:27:56
阅读次数:
161
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1218 题解:先要确定这些点是不是属于最长递增序列然后再确定这些数在最长递增序列中出现的次数,如果大于1次显然是可能出现只出现1次肯定是必然出现。那么就是怎么判断 ...
分类:
其他好文 时间:
2017-07-04 16:09:41
阅读次数:
181
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1376 题解:显然这题暴力的方法很容易想到就是以每个数为结尾最长的有多少个,但是这样显然会超时所以要想一个方法去优化,要么用stl要么就是数据结构 线段树是个可以 ...
分类:
其他好文 时间:
2017-07-03 12:25:59
阅读次数:
173
1. 动态规划,使用一个数组保存当前的最大递增子序列长度,时间复杂度为O(N^2) # include <iostream> # include <cstdlib> # include <climits> using namespace std; int longestsub(int a[],int ...
分类:
其他好文 时间:
2017-06-28 19:01:18
阅读次数:
144
本题就先排序老鼠的重量,然后查找老鼠的速度的最长递增子序列,只是由于须要按原来的标号输出,故此须要使用struct把三个信息打包起来。 查找最长递增子序列使用动态规划法。主要的一维动态规划法了。 记录路径:仅仅须要记录后继标号,就能够逐个输出了。 #include <stdio.h> #includ ...
分类:
其他好文 时间:
2017-06-18 21:44:39
阅读次数:
153
【算法】动态规划 【题解】经典模型:最长上升子序列(n log n) #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=50010; int a[maxn],b[max ...
分类:
其他好文 时间:
2017-06-06 22:15:52
阅读次数:
201
传送门 题解来自网络流24题: 【问题分析】 第一问时LIS,动态规划求解,第二问和第三问用网络最大流解决。 【建模方法】 首先动态规划求出F[i],表示以第i位为开头的最长上升序列的长度,求出最长上升序列长度K。 1、把序列每位i拆成两个点<i.a>和<i.b>,从<i.a>到<i.b>连接一条容 ...
分类:
其他好文 时间:
2017-06-02 15:43:01
阅读次数:
214