BZOJ 1046: [HAOI2007]上升序列
来源:互联网 发布:阿里云是阿里巴巴的吗 编辑:程序博客网 时间:2024/05/28 05:13
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
一开始以为只是一道简单的求最长上升子序列的水题,然而wa的我。。。
字典序不是值的字典序而是位置的字典序(哭晕)。
所以,问题的关键就是如何求出每个数字对应的以他为开头的最长上升子序列。
并没有学过啊。。。
如果把这串数翻转一下,求出以每个数字为结尾的最长下降子序列,问题就迎刃而解了。
剩下的就是简单的模拟了。。。
如果在bzoj评测,注意行末不能有多余的空格,否则。。。
THE END
#include<iostream>#include<cstdio>using namespace std;const int maxn=10005;int n,m,l,a[maxn],b[maxn];int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",a+i); for(int i=n;i>=1;i--) { for(int j=n;j>i;j--) if(a[j]>a[i]) b[i]=max(b[i],b[j]); b[i]++; l=max(b[i],l); } int x; scanf("%d",&m); for(int i=1;i<=m;i++) { scanf("%d",&x); if(x>l) printf("Impossible\n"); else { int mn=0; for(int i=1;i<=n;i++) if(b[i]>=x&&a[i]>mn) { printf("%d",a[i]); if(x!=1) printf(" "); mn=a[i]; x--; if(x==0) break; } printf("\n"); } } return 0;}
0 0
- BZOJ 1046: [HAOI2007]上升序列
- BZOJ 1046: [HAOI2007]上升序列
- BZOJ 1046: [HAOI2007]上升序列
- 【BZOJ 1046】 [HAOI2007]上升序列
- bzoj 1046: [HAOI2007]上升序列
- BZOJ 1046: [HAOI2007]上升序列
- BZOJ 1046: [HAOI2007]上升序列
- BZOJ 1046 [HAOI2007]上升序列
- bzoj 1046: [HAOI2007]上升序列
- [bzoj]1046: [HAOI2007]上升序列
- bzoj 1046 [HAOI2007] 上升序列 题解
- bzoj 1046: [HAOI2007]上升序列 LIS
- BZOJ 1046 洛谷 P2215 [HAOI2007] 上升序列
- 【BZOJ 1046】[HAOI2007]上升序列 lis
- BZOJ 1046: [HAOI2007]上升序列 暴力,二分
- bzoj 1046: [HAOI2007]上升序列 (DP)
- BZOJ 1046: [HAOI2007]上升序列 LIS
- 1046: [HAOI2007]上升序列
- html编写随笔(一)
- Linux权限管理命令
- Codeforces Round #208 (Div. 2) Dima and Text Messages
- (11)HTML标签详解之<script> <noscript>
- java学习笔记4——I/O流
- BZOJ 1046: [HAOI2007]上升序列
- Spring AMQP + RabbitMQ 3.3.5 ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN
- Codeforces Round #364 (Div. 2)
- Android Intent-filter匹配
- HDU 4462 Scaring the Birds (枚举+暴搜)
- 删除TFS2015SP1的集合特性
- Socket —— UDP 初认识
- storm一致性事务
- Hibernate中get和load方法的区别详解