码迷,mamicode.com
首页 > 其他好文 > 详细

杭电 5748 Bellovin

时间:2016-08-12 19:44:17      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

Description

Peter has a sequence 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享 and he define a function on the sequence -- 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享, where 技术分享技术分享 is the length of the longest increasing subsequence ending with 技术分享技术分享

Peter would like to find another sequence 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享 in such a manner that 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享 equals to 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享. Among all the possible sequences consisting of only positive integers, Peter wants the lexicographically smallest one. 

The sequence 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享 is lexicographically smaller than sequence 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享, if there is such number 技术分享 from 技术分享 to 技术分享, that 技术分享技术分享技术分享技术分享技术分享 for 技术分享技术分享技术分享技术分享技术分享 and 技术分享技术分享技术分享技术分享技术分享.

Input

There are multiple test cases. The first line of input contains an integer 技术分享, indicating the number of test cases. For each test case: 

The first contains an integer 技术分享 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享 -- the length of the sequence. The second line contains 技术分享 integers 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享.

Output

For each test case, output 技术分享 integers 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享 技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享 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

英语题目很难度,但是题意很简单,给你一个整数序列,输出以每个数结尾的最长上升子序列的长度。

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define INF 0x3f3f3f3f
 4 using namespace std;
 5 int dp[100005];
 6 int a[100005];
 7 int b[100005];
 8 int main()
 9 {
10     int t;
11     scanf("%d",&t);
12     while(t--)
13     {
14         int n,i,j;
15         scanf("%d",&n);
16         for(i = 1 ; i <= n  ; i++)
17         {
18             scanf("%d",&a[i]);
19             dp[i]=0;
20             b[i]=INF;
21         }
22         for(i = 1 ; i <= n ; i++)
23         {
24             int k=lower_bound(b+1,b+n+1,a[i])-b;        //函数返回值为大于a[i]的第一个值的位置,比如序列1 1 4 5,a[i]为2,返回值为3 
25             dp[i]=k;                                    //与二分法类似,将数放入新数组    
26             b[k]=a[i];
27         }
28         for(i = 1 ; i < n ; i++)
29             printf("%d ",dp[i]);
30         printf("%d\n",dp[n]);
31     }
32  } 

 

杭电 5748 Bellovin

标签:

原文地址:http://www.cnblogs.com/yexiaozi/p/5765998.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!