# Bellovin

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 858    Accepted Submission(s): 395

Problem Description
Peter has a sequence a1,a2,...,an and he define a function on the sequence -- F(a1,a2,...,an)=(f1,f2,...,fn), where fi is the length of the longest increasing subsequence ending with ai.

Peter would like to find another sequence b1,b2,...,bn in such a manner that F(a1,a2,...,an) equals to F(b1,b2,...,bn). Among all the possible sequences consisting of only positive integers, Peter wants the lexicographically smallest one.

The sequence a1,a2,...,an is lexicographically smaller than sequence b1,b2,...,bn, if there is such number i from 1 to n, that ak=bk for 1≤k<i and ai<bi.

Input
There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:

The first contains an integer n (1≤n≤100000) -- the length of the sequence. The second line contains n integers a1,a2,...,an (1≤ai≤109).

Output
For each test case, output n integers b1,b2,...,bn (1≤bi≤109) denoting the lexicographically smallest sequence.

Sample Input
3
1
10
5
5 4 3 2 1
3
1 3 5

Sample Output
1
1 1 1 1 1
1 2 3

Source

exm[j] 表示长度为j的的序列的最后一个值的大小
lower_bound的使用 返回第一个大于等于key的位置 确保严格的上升

/******************************
code by drizzle
blog: www.cnblogs.com/hsd-/
^ ^    ^ ^
O      O
******************************/
//#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
#include<algorithm>
#include<cmath>
#define ll __int64
#define PI acos(-1.0)
#define mod 1000000007
using namespace std;
int t;
];
];
int n;
int main()
{
scanf("%d",&t);
{
; i<=t; i++)
{
scanf("%d",&n);
scanf(]);
ans[]=;
];
;
exm[]=a[];
; j<n; j++)
{
scanf("%d",&a[j]);

if(a[j]>exm[top])
{
top=top+;
exm[top]=a[j];
ans[j]=top;
}
else
{
int pos=lower_bound(exm,exm+top,a[j])-exm;
exm[pos]=a[j];
ans[j]=pos;
}
}
; j<n; j++)
{
)
printf("%d",ans[j]);
else
printf(" %d",ans[j]);
}
printf("\n");
}
}
;
}

## HDU 5748 最长上升子序列的长度nlogn(固定尾部)的更多相关文章

1. 【最长下降子序列的长度和个数】 poj 1952

转自http://blog.csdn.net/zhang360896270/article/details/6701589 这题要求最长下降子序列的长度和个数,我们可以增加数组maxlen[size] ...

2. HDU 5773 最长上升子序列

题意 给出一个序列 问它的最长严格上升子序列多长 这个序列中的0可以被替代为任何数 n的范围给出了1e5 所以平常的O(n*n)lis不能用了 在kuangbin的模板里有O(nlogn)的模板 套上 ...

3. hdu 1950 最长上升子序列

//Accepted 3540 KB 62 ms //dp 最长上升子序列 #include <cstdio> #include <cstring> #include < ...

4. hdu 4681 最长公共子序列+枚举

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 #include<cstdio> #include<cstring> # ...

5. HDU 1025 Constructing Roads In JGShining&#39;s Kingdom（求最长上升子序列nlogn算法）

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1025 解题报告:先把输入按照r从小到大的顺序排个序,然后就转化成了求p的最长上升子序列问题了,当然按p ...

6. 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...

7. HDU 3998 Sequence （最长上升子序列+最大流）

参考链接:http://www.cnblogs.com/gentleh/archive/2013/03/30/2989958.html 题意:求一个序列的最长上升子序列,及其个数(注意:两个最长上升子 ...

8. ACMDP之最长公共子序列长度—HDU1159

Common Subsequence Problem Description A subsequence of a given sequence is the given sequence with ...

9. 【最长上升子序列】HDU 1087——Super Jumping! Jumping! Jumping!

来源:点击打开链接 最长上升子序列的考察,是一个简单的DP问题.我们每一次求出从第一个数到当前这个数的最长上升子序列,直至遍历到最后一个数字为止,然后再取dp数组里最大的那个即为整个序列的最长上升子序 ...

## 随机推荐

1. 背水一战 Windows 10 (26) - XAML: x:DeferLoadStrategy, x:Null

[源码下载] 背水一战 Windows 10 (26) - XAML: x:DeferLoadStrategy, x:Null 作者:webabcd 介绍背水一战 Windows 10 之 XAML ...

上篇我们介绍了Free类型可以作为一种嵌入式编程语言DSL在函数式编程中对某种特定功能需求进行描述.一个完整的应用可能会涉及多样的关联功能,但如果我们为每个应用都设计一套DSL的话,那么在我们的函数式 ...

3. CentOs6.5下安装svn

1.检查是否已安装 rpm -qa subversion 1.1如果需要卸载旧版本(如果想在一台机器安装不同svn,切记不要执行此步骤!!!) yum remove subversion 2.安装 y ...

4. UIColletionView 的属性与常用方法介绍

UICollectionView基础   初始化部分: UICollectionViewFlowLayout *flowLayout= [[UICollectionViewFlowLayout all ...

7. mockito

import org.junit.Assert;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWit ...

8. MyBatis动态SQL使用，传入参数Map中的Key判断

<select id="" parameterType="Map" resultMap="commodityResultMap" &g ...

9. Vector3.Dot 判断方位

判断方位 假设空间中有这几个坐标,判断一个物体在另一个物体的左边还是右边,前后还是后面 物体空间图 假如以C为中心,判断L是在它的左边还是右边 判断方法 using UnityEngine; usin ...

10. 自定义头文件 No such file or directory

my_file.h为你的头文件名 要用#include"my_file.h",而不能是#include<my_file.h>. 如果头文件名在尖括号<>里, ...