BZOJ 1046: [HAOI2007]上升序列
来源:互联网 发布:淘宝网店图片设计制作 编辑:程序博客网 时间:2024/04/29 20:26
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1046
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <string.h>#include <queue>#include <vector>#include <algorithm>#include <cassert>#include <set>#include <map>#include <cmath>#include <ctime>using namespace std;#define rep(i,a,b) for(int i=(a);i<(b);++i)#define rrep(i,a,b) for(int i=(a);i>=(b);--i)#define clr(a,x) memset(a,(x),sizeof(a))#define eps 1e-8#define LL long long#define mp make_pairconst int maxn=100000+5;int A[maxn];int S[maxn],len,dp[maxn],maxlen;int ans[maxn];int n;void output(int L){ int sz=0,pre=1<<31; rep(i,1,n+1) { if(dp[i]>=L&&pre<A[i]) { --L; ans[sz++]=A[i]; pre=A[i]; } if(L==0) break; }}int main(){ while(scanf("%d",&n)==1) { rep(i,1,n+1) scanf("%d",A+i); len=0; rrep(i,n,1) { int j=lower_bound(S,S+len,-A[i])-S; dp[i]=j+1; if(j==len) ++len; S[j]=-A[i]; } int m; scanf("%d",&m); while(m--) { int l; scanf("%d",&l); if(len<l) { puts("Impossible"); continue; } output(l); printf("%d",ans[0]); rep(i,1,l) printf(" %d",ans[i]); puts(""); } }}
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]上升序列
- 匆匆:有一个暑期的结束
- JAVA 计算地球上任意两点(经纬度)距离
- SOAP详解
- NSSet类型 以及与NSArray区别
- linux文件与目录管理
- BZOJ 1046: [HAOI2007]上升序列
- WSDL详解
- android 中 intent 是经常要用到的DEMO以及Intent 调用说明
- 123意外之旅
- Home
- 关于CSS
- Web Service详解
- Java中的静态变量和静态函数
- 二进制颜色代码大全