题目:acdream 1216 Beautiful People 题意:每一个人有两个值,能力值和潜力值,然后要求一个人的这两个值都严格大于第二个人的时候,这两个人才干呆在一块儿,给出很多人的值,求最多有多少个人? 分析:非常easy想到是个单调非增模型,假设用O(n*n)的写法的话,会超时! 那么我们就要用二分优化来找. 我们能够先按第一个值 x 从小到大排序,然后按第二个值从大到小排序,这种话找出的最长个数是没有错的.(想想为什么) 假如这样一个例子: 5 1 10 2 12 3 5 3 1…
题目地址:http://acdream.info/problem? pid=1216 这题一開始用的是线段树.后来发现查询的时候还须要DP处理.挺麻烦..也就不了了之了..后来想到,这题事实上就是一个二维的最长上升子序列. . 要先排序,先按左边的数为第一keyword进行升序排序.再按右边的数为第二keyword进行降序排序.这种话,第一keyword同样的的肯定不在一个同一个上升子序列中.然后仅仅对第二keyword进行复杂度为O(n*logn)的DP,找出最长上升序列,然后处理前驱,并输出…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1087 题目大意: 求递增子序列最大和 思路: 直接dp就可以求解,dp[i]表示以第i位结尾的递增子序列最大和,初始化dp[i] = a[i],转移方程dp[i] = max(dp[i], a[i] + dp[j])如果j < i && a[j] < a[i] #include<cstdio> #include<cstring> #include<i…
Beautiful People Special Judge Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statistic Next Problem Problem Description The most prestigious sports club in one city has exactly N members. Each of its members…
题目1112:拦截导弹 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5218 解决:2603 题目描述: 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹.拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹.    输入: 每组输入有两行,…
问题 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱).例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4. 解决方案: 1,新建一个二维数组ret[ ][ ];以数组A[ ]= {2 , 1 , 5 , 9}为例: -   2   1   5   9 0        0   0   0   0   0     //为了方便计算,第0行第0列均设为0 1        0   2   1…
“就是迭代,被众人说得这么玄乎" “之所以归为优化,是因为动态规划本质是一个systemetic bruce force" “因为systemetic,所以比穷举好了许多,就认为是优化的功绩咯" 不等长活动的安排 活动不等长,安排利用率最高的活动安排. T(n) 不一定是最大,所以,最后要找出Table中的T(1)->T(n)中最大的,即是最优的. 最长递增子序列 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱). 例如:给定一个长度为…
单调递增子序列(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长子序列,并求出其长度. 如:1 9 10 5 11 2 13的最长单调递增子序列是1 9 10 11 13,长度为5.   输入 有多组测试数据(<=7)每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的下一行里有n个整数,表示数列中的所有元素.每个整形数中间用空格间隔开(0<n<…
这位dalao的单调栈文章很棒!我写的是他的题单233. http://www.cnblogs.com/COLIN-LIGHTNING/p/8474668.html 一.单调栈的一般写法 ;i<=n;i++) { ; scanf("%d",&x); while(x>=sta[top]&&top) top--; sta[++top]=x; } 而各种各样繁杂的题目正是在这个基础上维护一些其他的信息. 二.注意事项 栈不能为空.要随时注意,否则RE. 计…
例题51Nod-1376,一个经典问题,给出一个序列问该序列的LIS以及LIS的数量. 这里我学习了两种解法,思路和代码都是参考这两位大佬的: https://www.cnblogs.com/reverymoon/p/9496040.html https://www.cnblogs.com/RabbitHu/archive/2017/11/02/51nod1376.html 首先是先分析一下问题,求LIS是一个很基础的问题了,用得最多的是nlogn的解法这里就不讲了.当我们求出序列a[i]的LI…