题目:https://www.luogu.org/problemnew/show/P1020

主要是第二问,使用了dilworth定理:一个序列中最长不上升子序列的最大覆盖=最长上升子序列长度。

dilworth定理:http://www.cnblogs.com/nanke/archive/2011/08/11/2134355.html

代码如下:

#include<iostream>
#include<cstdio>
using namespace std;
int d,b[100005],c[100005],n,len1,len2,mx;
int que(int x)
{
int ret=0;
for(;x<=mx;x+=x&-x)
ret=max(ret,b[x]);
return ret;
}
void add(int x,int w)
{ for(;x>0;x-=x&-x)
b[x]=max(b[x],w);
}
int main()
{
while(scanf("%d",&d)==1)
{
mx=max(mx,d);
// if(!len1||d<=b[len1])b[++len1]=d;
// else
// {
// for(int i=len1;i>=0;i--)
// if(d<=b[i]||(i==0&&d>b[1]))
// {
// b[i+1]=d;
// break;
// }
// }
int k=que(d);
add(d,k+1);
if(d>c[len2])c[++len2]=d;
else
{
int k=lower_bound(c+1,c+len2+1,d)-c;
c[k]=d;
}
}
for(int i=1;i<=mx;i++)
len1=max(len1,b[i]);
printf("%d\n%d",len1,len2);
return 0;
}

  

最新文章

  1. HTML5中lineCap端点样式遇到closePath()
  2. (转)SQLServer_T-SQL 语句执行时间的查询
  3. zhuang 自定义Xcode代码模板:Code Snippet
  4. 编程框架—Autofac
  5. 解决ld: warning: directory not found for option警告
  6. Linux操作系统分析__破解操作系统的奥秘
  7. subversion和客户端的应用
  8. 积累的VC编程小技巧之打印相关
  9. ListNode线性表
  10. WINFROM 无边框窗体的移动和改变大小
  11. STM32的IO口是如何配置为某个外设使用的 ---?
  12. eclipse启动tomcat错误解决
  13. ThreadLocal总结
  14. [原创]Burp Suite web应用程序渗透测试神器
  15. centos7之安装wordpress
  16. vc++获取网页源码之使用import+接口方式
  17. C#中.XSD是什么文件?
  18. BZOJ2876 [Noi2012]骑行川藏 【拉格朗日乘数法】
  19. Linux的磁盘分区(一)
  20. Kail Linux渗透测试之测试工具Armitage

热门文章

  1. Windows下安装Oracle 11g全过程。
  2. cesium学习--初识
  3. pjax简单实例
  4. hunnu--11548--找啊找啊找朋友
  5. 九度OJ 1081:递推数列 (递归,二分法)
  6. new() 和 make() 的区别
  7. Swift 学习笔记(扩展和泛型)
  8. 【题解】[CJOI2019]Cipher
  9. 使用pip安装第三方库报错记录
  10. python注释行与段落