这道题对于一类题都有一个通用思路:反向递减序列即为正向字典序。

  对于逆向思维的题还要多做才能培养这种对于逆向思维的感觉。

  想到这种方法之后,就很简单了。

  因为n×m不会炸,所以反向LIS叠一个贪心就能过了。

  直接甩题目&代码

  

Description

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

Input

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

Output

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

Sample Input

6
3 4 1 2 3 6
3
6
4
5

Sample Output

Impossible
1 2 3 6
Impossible
 /**************************************************************
Problem: 1046
User: PencilWang
Language: C++
Result: Accepted
Time:1860 ms
Memory:952 kb
****************************************************************/ #include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
int m,n;
int s[];
int d[],sb[],ass;
int bound(int L,int R,int num)
{
while(L<=R)
{
int mid=(L+R)>>;
if(d[mid]>num)
L=mid+;
else R=mid-;
}
return L;
}
void fuck()
{
int t;
for(int i=n;i>=;i--)
{
t=bound(,ass,s[i]);
if(t>ass)ass++;
sb[i]=t;
if(s[i]>d[t])d[t]=s[i];
}
return ;
}
void suck(int num)
{
int star;
for(int i=;i<=n;i++)
{
if(sb[i]>=num)
{
star=i;
num--;
break;
}
}
printf("%d",s[star]);
if(!num)return ;
for(int i=star+;i<=n&&num;i++)
if(s[i]>s[star]&&sb[i]>=num)printf(" %d",s[i]),star=i,num--;
return ;
}
int main()
{
int num;
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",s+i);
fuck();
scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%d",&num);
if(num>ass)printf("Impossible\n");
else suck(num),printf("\n");
}
return ;
}

刷题向》一道逆向思维题(BZOJ1046)(NORMAL)的更多相关文章

  1. MT【56】2017联赛一试解答最后一题:一道复数题的几何意义

  2. Codeforces Round #442 (Div. 2) B题【一道模拟题QAQ】

    B. Nikita and string One day Nikita found the string containing letters "a" and "b&qu ...

  3. 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)

    前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...

  4. 又一道简单题&&Ladygod(两道思维水题)

    Ladygod Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit S ...

  5. 一道js题

    <script> var a = 5; function test(){ this.a = 10; a = 15 this.func = function(){ var a = 20 ; ...

  6. 每天一道Java题[3]

    问题 为什么在重写equals()方法的同时,必须重写hashCode()方法? 解答 在<每天一道Java题[2]>中,已经对hashCode()能否判断两个对象是否相等做出了解释.eq ...

  7. 每天一道Java题[11]

    题目 synchronized怎么实现线程同步?请修改<每天一道Java题[10]>中的MyRunnableThread类以解决三个线程都获取到10的问题. 解答 方法一: 采用synch ...

  8. 第三届山西省赛1004 一道大水题(scanf)

    一道大水题 时间限制: C/C++ 2000ms; Java 4000ms 内存限制: 65535KB 通过次数: 44 总提交次数: 1020 问题描述 Dr. Pan作为上兰帝国ACM的总负责人, ...

  9. ny525 一道水题

    一道水题时间限制:1000 ms  |  内存限制:65535 KB 难度:2描述 今天LZQ在玩一种小游戏,但是这游戏数有一点点的大,他一个人玩的累,想多拉一些人进来帮帮他,你能写一个程序帮帮他吗? ...

随机推荐

  1. python模块--json \ pickle \ shelve \ XML模块

    一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...

  2. C#机器学习插件 ---- AForge.NET

    目录 简介 主要架构 特点 学习之旅 简介 AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能, ...

  3. Cluster的日记体系

    Cluster的日志体系 Cluster的日志体系: Oracle cluster不像数据库那样,具有丰富的视图.工具可以用来辅助诊断,他的日志和trace文件时唯一的选择.但不想oracle只有al ...

  4. bzoj1426(洛谷4550)收集邮票

    题目:https://www.luogu.org/problemnew/show/P4550 全靠看TJ.怎么办?可是感觉好难呀. 首先设出 f[i] 为“买了 i 种,还要买到n种的期望次数”,s[ ...

  5. redis数据结构对象

    redis的数据结构对象包括 字符串 列表 哈希 集合 有序集合五种数据结构对象,由底层的8种数据结构组成这五种对象,每种对象的实现不同的数据都是不一样的. 结构 typedef struct red ...

  6. eclipse安装freemarker插件【转】

    今天在Eclipse上安装Freemarker的插件,一开始装官方网站上的推荐插件,装上后发现除了Freemarker代码高亮显示其他什么效果都没有,郁闷.在javaeye论坛上请教了下,据说官网上的 ...

  7. 《Java核心技术》 -- 读书笔记 ① - 预热

    引言 之前通过网上的实例自己使用了Java的一些技术及轮子快速的的“烂“造了一些小应用,但是毕竟没有认真地了解和认知Java,遂打算花一个月左右的时间来细细品味一下... 从头开始,慢慢深入!! Ja ...

  8. ALSA声卡09_从零编写之参数设置_学习笔记

    1.参数设置分析 (1)open: soc_pcm_open 依次调用cpu_dai, dma, codec_dai, machine的open或startup函数 只在dma的open函数里添加参数 ...

  9. 安装FFmpeg3.0.9

    //静态版的 FFmpeg Static Builds   release: 3.3.3 https://www.johnvansickle.com/ffmpeg/ ffmpeg-release-64 ...

  10. 第四章:重构代码[学习Android Studio汉化教程]

    第四章 Refactoring Code The solutions you develop in Android Studio will not always follow a straight p ...