最长递增子序列?Why?朦朦胧胧的感觉也许是这样的。。大神说要用Dilworth定理来证明无爱了,这个定理先放一放吧 1 //#define LOCAL 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 ...
分类:
其他好文 时间:
2014-07-22 22:46:58
阅读次数:
238
好题,有一些人在河的一边,想通过河里的某些点跳到对岸去。每个点最多只能承受一定数量的人,每人跳跃一次需要消耗一个时间。求所有人都过河的最短时间。看网上说是用了什么动态流的神奇东东。其实就是最大流吧,不过是一个很有意思的模型。每递增一个时间,所有的点增加一层,因为有的人可以站在上一个点不走动,最终每个...
分类:
其他好文 时间:
2014-07-22 08:04:37
阅读次数:
216
二分查找方法二分查找经常用来在有序的数列查找某个特定的位置。因此,应用二分查找法,这个数列必须包含以下特征:存储在数组中有序排列二分查找方法不适用于链表,因为链表方法需要遍历,应用二分查找法意义不大。一般情况下,我们默认数组是单调递增数列,且无重复元素。(有重复元素的题应该如何解决)二分查找方法递归...
分类:
其他好文 时间:
2014-07-22 00:39:35
阅读次数:
287
思路:1、开辟数组L,L[i]记录的为a[0]~a[i]的最长递增子序列长度2、开辟数组maxV,maxV[i]记录的为长度为i的各递增子序列的最后一个元素的最小值,譬如有子序列1,2,4 1,2,5则maxV[3] = 43、使用maxLen记录当前的最长递增子序列长度4、转移方程:L[i+1] ...
分类:
其他好文 时间:
2014-07-22 00:17:35
阅读次数:
189
区域合并时需要考虑两点
1、pushup中区域合并时最左右递增长度(llen/rlen)等于整个区域长度(r - l)时需要重新计算父区域的最左右的递增长度
2、query中需要考虑区域合并接口处是否有可能产生ans值
#include
#include
#include
#include
using namespace std;
const int maxn = 100050;
s...
分类:
其他好文 时间:
2014-07-21 15:45:16
阅读次数:
227
在第三节中,我们将讨论序列化问题中的动态规划解法。这部分多半分为单序列和双序列等问题
例一:最长上升子序列。
最长上升子序列问题,有一个正整数数列,长度n在1000之内,元素a[i]在10^5之内,求最长递增子序列的长度。
分析一:发现问题的可分性质
如果我们采用穷举法,将有2^n的时间复杂度;这里面有很多是重复的4、3、***类型的子序列,以4开头的递增子序列的长度都是1....
分类:
其他好文 时间:
2014-07-21 15:34:06
阅读次数:
207
虽然很多人说记模板提升空间有限,但是对于我这种菜鸟级别的人来说。能做的也只有记记模板了!
希望这个模板能帮到你,如果有更好的模板记得告诉我哦!!谢谢。
二维代码:
#include
#include
#include
using namespace std;
int n,m,a[505],b[505],dp[505][505];
int LICS()
{
int max,i,j;
mem...
分类:
其他好文 时间:
2014-07-21 11:42:44
阅读次数:
192
一般情况:
#include
#include
#include
using namespace std;
int a[1005],dp[1005],n;
int LIS()
{
int i,j,ans,m;
dp[1] = 1;
ans = 1;
for(i = 2;i<=n;i++)
{
m = 0;
for(...
分类:
其他好文 时间:
2014-07-21 11:23:15
阅读次数:
185
什么是捕获?
捕获就是捕捉某一瞬间的值,通常用它来测量外部某个脉冲的宽度或周期。使用捕获功能可以非常准确的测量脉冲宽度或周期,他的工作原理是:单片机内部有两组寄存器,其中一组的内部数值是按照固定的机器周期递增或递减,通常这组寄存器就是定时器的计数器寄存器(TLX,THX),当与捕获功能相关的外部某引脚有一个负跳变时,捕获便会立即将此时第一组寄存器中的数值准确地获取,并且存入另一组寄存器中,这组寄...
分类:
其他好文 时间:
2014-07-20 15:16:51
阅读次数:
160
题意:求最长递增子序列
AC代码:#include
#include
#include
using namespace std;
int dp[1010],a[1010];
int main()
{
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;...
分类:
其他好文 时间:
2014-07-20 10:28:31
阅读次数:
235