POJ 1065 Wooden Sticks(zoj 1025) 最长单调子序列
来源:互联网 发布:新浪微博域名二次修改 编辑:程序博客网 时间:2024/06/04 18:51
POJ :http://poj.org/problem?id=1065
ZOJ: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25
看大神的代码的研究的。。。
心情不好该学习还是要学习的。。。。QAQ
其实题目的意思就是把所有元素分为最少的堆数,每堆有l<=l' and w<=w' 按l排序后(l相等则按w),问题转化为把所有元素分为最少的堆数,每堆有w<=w'(l<=l' 显然成立) 即已知一个数列,要求最少用多少个不下降序列完全覆盖
可以证明不下降序列完全覆盖数就是最长下降子列的长度(记为L): 显然覆盖数不能比L小,否则由抽屉原理,必然有下降子列中两元素(a < b)在同一不下降须列中(a <= b),这是不可能的 由覆盖数可以取得L,而序列的每个元素在不同堆中,然后每次将元素“贪心”地分在堆中,这个过程和dp地求最长下降子列很像,可以构造解,也可以反证如果不能分号,与下降子列长度为L矛盾。
于是先将数列按照l,w的顺序进行快排,然后在求出w序列中的最长递减序列的长度就可以了.(摘自http://blog.csdn.net/wmbol/article/details/5450952)
那么就转化为求最长递减序列的长度。
和LIS(最长上升字串差不多)
也可以二分来做。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAXN=5000+10;struct data{int weight;int length;}a[MAXN];bool operator <(const data &a,const data &b){if(a.length == b.length)return a.weight < b.weight;return a.length < b.length;}int main(){int T;scanf("%d",&T);while(T--){int dp[MAXN];int n;scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d%d",&a[i].length,&a[i].weight);sort(a,a+n);dp[0]=1;int maxl;for(int i=1;i<n;i++){maxl=1;for(int j=i;j>=0;j--){if(a[i].weight < a[j].weight && dp[j]+1 > maxl){maxl= dp[j]+1;}}dp[i]=maxl;}int ans=0;for(int i=0;i<n;i++)if(dp[i]>ans)ans=dp[i];printf("%d\n",ans);}}
- POJ 1065 Wooden Sticks(zoj 1025) 最长单调子序列
- 【最长下降子序列】北大 POJ 1065 Wooden Sticks
- POJ 1065 Wooden Sticks 最长上升子序列
- POJ - 1065 Wooden Sticks(DP 子序列问题)
- zoj 1025 &&poj 1065 Wooden Sticks
- zoj 1025 || poj 1065 || hdoj1051 Wooden Sticks
- zoj 1025 || poj 1065 Wooden Sticks(DP做法)
- ZOJ-1025(POJ-1065、HDU-1051) Wooden Sticks
- POJ1065-Wooden Sticks-最长下降子序列
- POJ-1065 Wooden Sticks,排序+最长单减子序列!
- zoj 1025 Wooden Sticks (DP子序列)(第100,纪念一下)
- poj 1065 Wooden Sticks (求最长非降子序列的个数)
- POJ1065 Wooden Sticks(贪心+动态规划——单调递增子序列)
- ZOJ-1025-Wooden Sticks
- ZOJ 1025 Wooden sticks
- ZOJ 1025 Wooden Sticks
- zoj 1025 Wooden Sticks
- zoj 1025 wooden sticks
- 写给妹妹的编程札记
- tomcat目录简介
- 模式(小例9-2)
- 黑马程序员-javaBean(高新技术)
- 黑马程序员:管道流(PipedInputStream)介绍:IO和多线程结合的类
- POJ 1065 Wooden Sticks(zoj 1025) 最长单调子序列
- mysql show (global) status 命令相关
- HTTP协议详解
- 黑马程序员-代理(高新技术)
- Message Forwarding
- C#执行一个目录下所有sql文件
- 利用mysql中show global status和show variables来优化mysql的配置参数
- C#面试问答总结1
- Java中的泛型使用详细介绍