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

Peter would like to find another sequence b1,b2,...,bnb1,b2,...,bn

in such a manner that F(a1,a2,...,an)F(a1,a2,...,an)

equals to F(b1,b2,...,bn)F(b1,b2,...,bn)

. Among all the possible sequences consisting of only positive integers, Peter wants the lexicographically smallest one.

The sequence a1,a2,...,ana1,a2,...,an

is lexicographically smaller than sequence b1,b2,...,bnb1,b2,...,bn

, if there is such number ii

from 11

to nn

, that ak=bkak=bk

for 1≤k<i1≤k<i

and ai<biai<bi

.InputThere are multiple test cases. The first line of input contains an integer TT

, indicating the number of test cases. For each test case:

The first contains an integer nn

(1≤n≤100000)(1≤n≤100000)

-- the length of the sequence. The second line contains nn

integers a1,a2,...,ana1,a2,...,an

(1≤ai≤109)(1≤ai≤109)

.OutputFor each test case, output nn

integers b1,b2,...,bnb1,b2,...,bn

(1≤bi≤109)(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

题意:

就是求fi,即求以ai为最后一位的最长子序列

解法:

扫描这一个数组a,每一个数进入dp数组,在里面找到<=a[i]的下标最小的指针,在这里面存储a[i]。

lower_bound(dp,dp+n,a[i])-dp+1   这个是找到>=a[i]的最小指针减去dp数组的首指针再加1

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#define inf 0x3f3f3f
using namespace std;
typedef long long ll;
ll a[110000],dp[110000]; int main()
{
int t;
cin>>t;
while(t--)
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%I64d",&a[i]);
memset(dp,inf,sizeof(dp));
for(int i=0;i<n-1;i++)
{
*lower_bound(dp,dp+n,a[i])=a[i];
printf("%d ",lower_bound(dp,dp+n,a[i])-dp+1);
}
*lower_bound(dp,dp+n,a[n-1])=a[n-1];
printf("%d\n",lower_bound(dp,dp+n,a[n-1])-dp+1);
}
return 0;
}

  

美人鱼 hdu 5784的更多相关文章

  1. HDU 5784 (计算几何)

    Problem How Many Triangles (HDU 5784) 题目大意 给定平面上的n个点(n<2000),询问可以组成多少个锐角三角形. 解题分析 直接统计锐角三角形较困难,考虑 ...

  2. hdu 5784 How Many Triangles 计算几何,平面有多少个锐角三角形

    How Many Triangles 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5784 Description Alice has n poin ...

  3. HDU 5784 How Many Triangles

    计算几何,极角排序,双指针,二分. 直接找锐角三角形的个数不好找,可以通过反面来求解. 首先,$n$个点最多能组成三角形个数有$C_n^3$个,但是这之中还包括了直角三角形,钝角三角形,平角三角形,我 ...

  4. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  6. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  7. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  8. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

  9. HDU 1796How many integers can you find(容斥原理)

    How many integers can you find Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

随机推荐

  1. windows下mongodb基础玩法系列一介绍与安装

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  2. FFmpeg内存IO模式(内存区作输入或输出)

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10318145.html 所谓内存IO,在FFmpeg中叫作"buffered ...

  3. Failed to convert value of type 'java.lang.String' to required type 'java.time.LocalDate';

    springboot jdbc查询使用LocalDate报:Failed to convert value of type 'java.lang.String' to required type 'j ...

  4. JavaScript 深入之从原型到原型链

    1 .构造函数创建对象 我们先使用构造函数创建一个对象: function Person(){ } var p = new Person(); p.name = 'ccy'; console.log( ...

  5. angularjs学习第九天笔记(指令作用域【隔离作用域】研究)

    您好,昨天学习了指令作用域为布尔型的情况, 今天主要研究其指针作用域为{}的情况 1.当作用域scope为{}时,子作用域完全创建一个独立的作用域, 此时,子做预约和外部作用域完全不数据交互 但是,在 ...

  6. java根据年月显示每周

    一.页面效果 1.展示7月份的所有周. 2.当前时间2018.08.02  ,  显示到本周. 二.前端代码 1.显示层的代码 <span id="weekyear"> ...

  7. jquery全选或不全选时,不操作已经禁用的checkbox

    $("#selectAll").click(function(){ if(this.checked ){ $(":checkbox[name='equid']" ...

  8. 【Spring】5、利用自定义注解在SpringMVC中实现自定义权限检查

    转自:http://www.tuicool.com/articles/6z2uIvU 先描述一下应用场景,基于Spring MVC的WEB程序,需要对每个Action进行权限判断,当前用户有权限则允许 ...

  9. Spring全家桶–SpringBoot Rest API

    Spring Boot通过提供开箱即用的默认依赖或者转换来补充Spring REST支持.在Spring Boot中编写RESTful服务与SpringMVC没有什么不同.总而言之,基于Spring ...

  10. Python全栈学习_day003作业

    day3作业及默写 1,有变量name = "aleX leNb" 完成如下操作: 1) 移除 name 变量对应的值两边的空格,并输出处理结果 print(name.strip( ...