1046: [HAOI2007]上升序列

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 3671  Solved: 1255
[Submit][Status][Discuss]

Description

对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ax2 < … < axm)。那么就称P为S的一个上升序列。如果有多个P满足条件,那么我们想求字典序最小的那个。任务给出S序列,给出若干询问。对于第i个询问,求出长度为Li的上升序列,如有多个,求出字典序最小的那个(即首先x1最小,如果不唯一,再看x2最小……),如果不存在长度为Li的上升序列,则打印Impossible.

Input

第一行一个N,表示序列一共有N个元素第二行N个数,为a1,a2,…,an 第三行一个M,表示询问次数。下面接M行每行一个数L,表示要询问长度为L的上升序列。

Output

对于每个询问,如果对应的序列存在,则输出,否则打印Impossible.

Sample Input

6
3 4 1 2 3 6
3
6
4
5

Sample Output

Impossible
1 2 3 6
Impossible

HINT

数据范围

N<=10000

M<=1000

Source

题解:
二分+递推
不会。。。
orz 黄学长 : http://hzwer.com/4065.html
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define INF 1e9
 4 #define MAXN 10010
 5 int f[MAXN],a[MAXN],len[MAXN],mx,n,cc[MAXN];
 6 int read()
 7 {
 8     int s=0,fh=1;char ch=getchar();
 9     while(ch<'0'||ch>'9'){if(ch=='-')fh=-1;ch=getchar();}
10     while(ch>='0'&&ch<='9'){s=s*10+(ch-'0');ch=getchar();}
11     return s*fh;
12 }
13 int ef(int k)
14 {
15     int l=1,r=mx,mid,ans=0;
16     while(l<=r)
17     {
18         mid=(l+r)/2;
19         if(f[mid]>k){ans=mid;l=mid+1;}
20         else r=mid-1;
21     }
22     return ans;
23 }
24 void print(int k)
25 {
26     int last=-1,lc=0,i;
27     for(i=1;i<=n;i++)
28     {
29         if(len[i]>=k&&a[i]>last)
30         {
31             k--;
32             cc[++lc]=a[i];
33             last=a[i];
34             if(k==0)break;
35         }
36     }
37     for(i=1;i<lc;i++)printf("%d ",cc[i]);printf("%d",cc[lc]);
38     printf("\n");
39 }
40 int main()
41 {
42     int i,tmp,m,k,j;
43     n=read();
44     for(i=1;i<=n;i++)a[i]=read();
45     memset(f,0,sizeof(f));
46     memset(len,0,sizeof(len));
47     mx=0;
48     for(i=n;i>=1;i--)
49     {
50         tmp=ef(a[i]);
51         len[i]=tmp+1;
52         f[tmp+1]=max(f[tmp+1],a[i]);
53         mx=max(mx,tmp+1);
54     }
55     m=read();
56     for(i=1;i<=m;i++)
57     {
58         k=read();
59         if(k>mx)printf("Impossible\n");
60         else
61         {
62             print(k);
63         }
64     }
65     fclose(stdin);
66     fclose(stdout);
67     return 0;
68 }

转载于:https://www.cnblogs.com/Var123/p/5330151.html

Bzoj 1046: [HAOI2007]上升序列 二分,递推相关推荐

  1. BZOJ 1046: [HAOI2007]上升序列【贪心+二分状态+dp+递归】

    1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4987  Solved: 1732 [Submit][St ...

  2. BZOJ 1046: [HAOI2007]上升序列(LIS)

    题目挺坑的..但是不难.先反向做一次最长下降子序列.然后得到了d(i),以i为起点的最长上升子序列,接下来贪心,得到字典序最小. ----------------------------------- ...

  3. bzoj 1046: [HAOI2007]上升序列

    1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4860  Solved: 1692 [Submit][St ...

  4. [BZOJ 1046] [HAOI2007] 上升序列 【DP】

    题目链接:BZOJ - 1046 题目分析 先倒着做最长下降子序列,求出 f[i],即以 i 为起点向后的最长上升子序列长度. 注意题目要求的是 xi 的字典序最小,不是数值! 如果输入的 l 大于最 ...

  5. luogu P2216 [HAOI2007]理想的正方形 递推+ST表

    题意:有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 数据规模: (1)矩阵中的所有数都不超过1,000,000,000 (2)20% ...

  6. 【bzoj 4451】[Cerc2015]Frightful Formula - 递推

    才没有在做cerc2015呢 看到好像不少人这题写fft卡得死死的啊,不如 O(n) O(n) 递推(雾) 首先可以观察出 (i,1) (i,1)这个格子为 x x时对(n,n)(n,n) a,b a ...

  7. bzoj1046[HAOI2007]上升序列

    1046[HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 5497  Solved: 1915 [Submit][Stat ...

  8. 趋势预测方法(五)Holt-Winters模型_时序递推预测

    Holt-Winters模型 a基本原理: 该方法有点类似于MA(移动平均)的思路,是对MA的优化.主要因为MA的参数数量过多时,计算时间慢,且计算复杂.Holt-Winters利用三次指数平滑法,将 ...

  9. [常系数(非)齐次线性递推]

    从一个朴素的问题出发:我们需要求出一个序列b[],使得符合递推式 f(n)=∑i=1..kcif(n−i) f ( n ) = ∑ i = 1.. k c i f ( n − i ) f(n)=\su ...

最新文章

  1. 【译】特征工程最佳实践
  2. java多态简单例子6_Java_6、面向对象——继承和多态
  3. 计算机网络安全防护体系研究
  4. Nature撤稿!三年前微软在量子计算上的巨大胜利终究是个错误
  5. 1.8 欠拟合和过拟合-机器学习笔记-斯坦福吴恩达教授
  6. springmvc+batis applicationContext-mybatis.xml 具体说明
  7. OpenCV4Android JavaCameraView实现
  8. PYPL 6 月编程语言排行
  9. APK安装过程及原理详解
  10. Linux操作系统原理与应用02:内存寻址
  11. 五千的手机和两三千的手机使用起来有什么不一样?有必要买贵的吗?
  12. 1622: [Usaco2008 Open]Word Power 名字的能量
  13. matplotlib 2.2.4 has requirement python-dateutil=2.1, but you'll have python-dateutil 1.5
  14. vue+腾讯地图 实现坐标拾取器功能
  15. Spark学习之路——9.Spark ML
  16. keras.datasets.imdb.py 源码分析
  17. [白话解析] 通俗解析集成学习之GBDT
  18. SpringMVC 学谈 (第二章)
  19. vela和鸿蒙,小米Vela系统发布,将对标华为鸿蒙OS
  20. Gi t 折磨疯了的SSL证书问题

热门文章

  1. 全局性业务架构建模工作步骤
  2. Embarcadero公司花2千3百万买下Borland的开发工具业务
  3. Flask自定义转换器,实现路由匹配正则表达式参数
  4. BZOJ1061 [NOI2008]志愿者招募
  5. python中list作为全局变量无需global声明的原因
  6. weblogic集群安装心得-程序包发布
  7. 马哥2016全新Linux+Python高端运维班第八周作业
  8. 写给将要参加软考的朋友们
  9. HashMap 1.8 源码解析以及非线程安全分析
  10. Linux学习笔记重新梳理20180702 之 yum软件包管理器