先从后到前做一个最长下降子序列的dp,记录f[i],我这里用的是二分(其实树状数组比较显然)

然后对于询问,超出最长上升子序列的直接输出;否则从前到后扫,f[i]>=x&&a[i]>la(上个选的)就选,因为这时第一个出现的一定是符合条件的中最小的最小的

#include<iostream>
#include<cstdio>
using namespace std;
const int N=10005;
int n,a[N],m,x,f[N],p[N],cnt,b[N];
int find(int x)
{
int l=1,r=cnt,ans=0;
while(l<=r)
{
int mid=(l+r)>>1;
if(b[mid]>x)
l=mid+1,ans=mid;
else
r=mid-1;
}
return ans;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=n;i>=1;i--)
{
int t=find(a[i]);
f[i]=t+1;
cnt=max(cnt,f[i]);
if(b[f[i]]<a[i])
b[f[i]]=a[i];
}
scanf("%d",&m);
while(m--)
{
scanf("%d",&x);
if(x>cnt)
printf("Impossible\n");
else
{
int la=0;
for(int i=1;i<=n&&x;i++)
if(f[i]>=x&&a[i]>la)
{
printf("%d ",a[i]);
la=a[i];
x--;
}
printf("\n");
}
}
return 0;
}

bzoj 1046: [HAOI2007]上升序列【dp+二分】的更多相关文章

  1. bzoj 1046 : [HAOI2007]上升序列 dp

    题目链接 1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3620  Solved: 1236[Submit] ...

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

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

  3. BZOJ 1046: [HAOI2007]上升序列 LIS -dp

    1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3438  Solved: 1171[Submit][Stat ...

  4. Bzoj 1046: [HAOI2007]上升序列 二分,递推

    1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3671  Solved: 1255[Submit][Stat ...

  5. 1046: [HAOI2007]上升序列(dp)

    1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4999  Solved: 1738[Submit][Stat ...

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

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

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

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

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

    Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ...

  9. BZOJ 1046 [HAOI2007]上升序列(LIS + 贪心)

    题意: m次询问,问下标最小字典序的长度为x的LIS是什么 n<=10000, m<=1000 思路: 先nlogn求出f[i]为以a[i]开头的LIS长度 然后贪心即可,复杂度nm 我们 ...

随机推荐

  1. js获取指定字符前/后的字符串简单实例

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  2. Microsoft Excel 准确按照一页的宽度和高度打印

    设置 Microsoft Excel 准确按照一页的宽度和高度打印 Sheet1. VBA复制  With Worksheets("Sheet1").PageSetup  .Zoo ...

  3. Linux备份-删除指定日期内文件

    #!/usr/bin/env bash source /etc/profile echo " *************** start filter ***************  &q ...

  4. 【计算几何+极角排序+爆ll】E. Convex

    https://www.bnuoj.com/v3/contest_show.php?cid=9147#problem/E [题意] 给定n个点的坐标,可以选择其中的四个点构造凸四边形,问最多能构造多少 ...

  5. php框架之自动加载与统一入口

    现在PHP有很多的框架,基本都是以MVC为基础进行设计的.其实很多框架(像thinkphp,zf,symfont等)都有两个特性,自动加载类文件和统一入口.这里就简单实现以上两个特性. 假设PHP使用 ...

  6. POJ 3233_Matrix Power Series

    题意: 求n*n矩阵的幂和 分析: 逐个加起来时间复杂度太高,通过在矩阵中套个矩阵和,再利用矩阵快速幂,最后时间复杂度为O(n3logn) 代码: #include<cstdio> #in ...

  7. CODEVS——T 3736 【HR】万花丛中2

    http://codevs.cn/problem/3736/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description ...

  8. Servlet表单数据处理

    以下内容引用自http://wiki.jikexueyuan.com/project/servlet/form-data.html: 当需要从浏览器到Web服务器传递一些信息并最终传回到后台程序时,一 ...

  9. laravel5.4新特性

    http://www.cnblogs.com/webskill/category/1067140.html laravel 5.4 新特性 component and slot 使用: 1.compo ...

  10. How to enable Google Play App Signing

    how to enable google play app signing  ------------------------------------------------------------- ...