HDOJ 5748 Bellovin(LIS)
来源:互联网 发布:冠道车钥匙淘宝图片 编辑:程序博客网 时间:2024/05/16 11:36
Bellovin
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 816 Accepted Submission(s): 372
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 integerT , 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, outputn 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
上周BC靠这一题上了1700,记录一下吧。
中文题面:点击打开链接
题解:我们要找到的以ai为最后一个字符的当前段严格递增的最长上升子序列的长度,就是要判断ai前面有多少个比它小的数。且O(n^2)算法超时,所以我用了O(n*logn)的算法。
代码如下:
#include<cstdio>#include<cstring>#include<algorithm>#define maxn 100010#define INF 1000000100using namespace std;int f[maxn];int b[maxn];int dp[maxn];int main(){int t,n,i;scanf("%d",&t);while(t--){scanf("%d",&n);for(i=0;i<n;++i)scanf("%d",&b[i]);fill(dp,dp+n,INF);for(i=0;i<n;++i){*lower_bound(dp,dp+n,b[i])=b[i];//往序列中第一个>=b[i]的地方插入b[i] f[i]=upper_bound(dp,dp+n,b[i])-dp;//找到序列中第一个大于b[i]的位置 }int cnt=1;for(i=0;i<n;++i){if(i!=n-1)printf("%d ",f[i]);elseprintf("%d\n",f[i]);}}return 0;}
0 0
- HDOJ 5748 Bellovin(LIS)
- HDOJ-----5748Bellovin(LIS)
- hdoj 5748 Bellovin (LIS) 【BestCoder Round #84 】
- LIS hdu 5748 (Bellovin)
- HDU-5748-Bellovin【LIS】
- hdu 5748 Bellovin(LIS)
- HDU 5748 (Bellovin LIS)
- HDU 5748 Bellovin(LIS)
- 【HDU】5748 - Bellovin(LIS)
- HDU Problem 5748 Bellovin 【LIS】
- HDU 5748 Bellovin(LIS)
- HDU 5748 Bellovin (LIS)
- Bellovin【hdu 5748 dp lis】
- HDOJ 5748 Bellovin
- HDOJ 5748 Bellovin
- 【HDU】-5748-Bellovin(LIS,变化)
- HDU-5748 Bellovin 【LIS(STL应用)】
- HDU:5748 Bellovin(LIS+打表)
- 同一个Thread启动第二次会报错java.lang.IllegalThreadStateException
- Android学习历程——高德地图学习开发之显示地图,定位
- Qt读写ini文件
- 项目中遇到的问题(笔记)
- hdu 3631 Shortest Path (floyd)
- HDOJ 5748 Bellovin(LIS)
- DOM事件处理程序
- Animation动画
- HDU 5723/2016多校1A Abandoned country
- Scala cheetsheet,小抄,语法整理
- MQTT介绍
- bash 括号(小括号,双小括号,中括号,双中括号,大括号)
- spring data jpa使用详解
- LeakCanary 中文使用说明