【问题描述】在SAU-ACM中,tls的女装无疑是最吸引人的,但是tls不想让大家轻易地看到他的女装。tls准备了一个1到N的重排列,并将它们按顺序分给许多ACM队的队员,这意味着每个队员会得到一个或多个数字。现在,队员们需要做一个配合,那就是从N数到1,每个人只能喊出自己拥有的数字,并且只能按照得到数字的顺序喊出。比如,一名队员依次得到数字3,2,4,他就不能在喊出2之前喊出4。那么问题来了,至少需要多少名队员才能完成这个配合呢?让我们一起为tls的女装倒计时吧! 【输入形式】 多组输入。 输入第一行给出一个整数N (0 <= N <=50000),下一行给出从1到N的整数序号的一个重排列,代表tls手中数字的顺序。数字间以空格分隔。 【输出形式】 在一行中输出完成这个倒计时至少需要的队员数。 【样例输入】 9 8 4 2 5 3 9 1 6 7 【样例输出】 4
时间: 2024-04-06 11:28:33 浏览: 59
sau-class-checkin
这是一道经典的贪心题目,可以按照以下思路来解决:
1. 初始化一个空的序列,表示当前已经有的数字序列为空。
2. 从左到右扫描输入的数字序列,对于每个数字,如果它比当前已经有的数字序列中最大的数字还要大,那么就把它加入到数字序列中。
3. 如果它比当前已经有的数字序列中最大的数字还要小,那么就在数字序列中找到第一个比它大的数字,并用它来替换掉。这一步可以使用二分查找来实现,从而把时间复杂度控制在 O(NlogN)。
4. 最后数字序列的长度就是需要的队员数。
以下是参考代码:
阅读全文