HDU5748-Bellovin(最长上升子序列)
来源:互联网 发布:数据结构c语言视频 编辑:程序博客网 时间:2024/05/18 17:42
Bellovin
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1219 Accepted Submission(s): 521
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 sequenceb1,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 sequencea1,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 .
Peter would like to find another sequence
The sequence
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 integern (1≤n≤100000) -- the length of the sequence. The second line contains n integers a1,a2,...,an (1≤ai≤109) .
The first contains an integer
Output
For each test case, output n integers b1,b2,...,bn (1≤bi≤109) denoting the lexicographically smallest sequence.
Sample Input
311055 4 3 2 131 3 5
Sample Output
11 1 1 1 11 2 3
Source
BestCoder Round #84
#include <iostream>#include <stdio.h>#include <cstring>#include <algorithm>using namespace std;int b[100005],c[100005];int n;int main(){ int t,data; scanf("%d",&t); while(t--) { scanf("%d",&n); int num=0; for(int i=1;i<=n;i++) { scanf("%d",&data); if(i==1) b[++num]=data,c[1]=1; else if(data>b[num]) b[++num]=data,c[i]=num; else { int k=lower_bound(b+1,b+1+num,data)-b; b[k]=data; c[i]=k; } } for(int i=1;i<n;i++) printf("%d ",c[i]); printf("%d\n",c[n]); } return 0;}
0 0
- HDU5748-Bellovin(最长上升子序列)
- Hdu5748-Bellovin-最长上升子序列(LIS)
- HDU5748-Bellovin【最长上升子序列的变形】
- Bellovin(最长上升子序列)
- 【HDU5748 BestCoder Round 84B】【LIS模板 最长单调上升子序列】Bellovin 以尾端点最长LIS压缩数组
- div.2/Bellovin<最长上升子序列>
- HDU 5748 Bellovin(最长上升子序列[nlogn])
- hdu 5748 Bellovin (最长递增子序列 二分查找)
- hdu5748 Bellovin(LIS模板)
- A序列(最长上升子序列)
- hdu5748 Bellovin
- HDU5748:bellovin
- 【HDU5748】Bellovin
- Bellovin||HDU5748
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- 最长上升子序列
- boost library
- 几种常见Dialog,直接拿去用!
- udhcp详解源码(序)
- Vue.js——60分钟组件快速入门(下篇) 概述【3】
- udhcp源码详解(一)
- HDU5748-Bellovin(最长上升子序列)
- udhcp源码详解(二)
- python可视化之散点图的绘制
- C++类和对象,结构体
- udhcp源码详解(三)上
- libxml/xmlversion.h: No such file or directory
- 如何成为一名很酷的机器人工程师?
- 完全背包基础
- udhcp源码详解(三)下