链接:https://www.nowcoder.com/acm/contest/181/E
来源:牛客网

题目描述

一只青蛙出去旅游,因为中国有一句古话说的好:“由简入奢易,由奢入俭难”,所以这只青蛙当看的当前景点比前面看过的景点差的时候,青蛙就会说“不开心”为了避免这只青蛙说“不开心”,并且使青蛙看的景点尽量的多,所以他请你帮忙给他安排一条线路,使青蛙可以看到尽量多的景点,并且不走回头路。

输入描述:

第一行为一个整数n,表示景点的数量
接下来n行,每行1个整数,分别表示第i个景点的质量

输出描述:

一个整数,表示青蛙最多可以看到几个景点

示例1

输入

复制

10
3
18
7
14
10
12
23
30
16
24

输出

复制

6

备注:

景点质量为1到n+23的整数
10<=n<23 10%23<=n<233 30%233<=n<2333 60%2333<=n<23333 100%

long long ago写过LIS,今天捡起来了QAQ

发现二分又不会了

LIS正常来说是记录每一个位置结尾所能产生的最长长度

然后后来的和之前比这个数字小的比较,看是否能接上,长度++

所以,我们设计一个数组,维护以每一个数字为结尾最长的长度。具体看代码吧

by the way

upper_bound是找出大于某数的最小下标

low_bound是大于等于某数的最小下标

int pos3=lower_bound(num,num+6,7,greater<int>())-num;  //返回数组中第一个小于或等于被查数的值 int pos4=upper_bound(num,num+6,7,greater<int>())-num;//返回数组中第一个小于被查数的值 

记得写头文件algorithm

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;const int maxn = 1e5+5;int a[maxn],n,k;
int d[maxn],len;void binary_search(int x)
{/**  int l=1,r=len,mid;while(l<=r){mid = (l+r)>>1;if(d[mid]<=x) l = mid+1;else r = mid-1;}**/int l=upper_bound(d,d+len,x)-d;d[l]=x;
}int main()
{while(~scanf("%d",&n)){for(int i=0;i<n;i++) scanf("%d",a+i);// memset(d,0,sizeof(d));len=0,d[0]=a[0];for(int i=1;i<n;i++){if(d[len]<=a[i]) d[++len] = a[i];else binary_search(a[i]);}printf("%d\n",len+1);}return 0;
}

牛客网oi测试赛E旅行青蛙【LIS二分】相关推荐

  1. 牛客网 OI 赛制测试赛

    比赛链接:这里写链接内容 A 斐波那契 链接:https://www.nowcoder.com/acm/contest/181/A 来源:牛客网 设f[i]表示斐波那契数论的第i项 f[1]=1,f[ ...

  2. 牛客网Wannafly模拟赛

    A矩阵 时间限制:1秒 空间限制:131072K 题目描述 给出一个n * m的矩阵.让你从中发现一个最大的正方形.使得这样子的正方形在矩阵中出现了至少两次.输出最大正方形的边长. 输入描述: 第一行 ...

  3. 牛客网赛码网 输入输出格式

    目录 牛客网&赛码网输入输出 牛客网 单行输入 多行输入,每一行是一个测试样例 多个测试用例,每个测试用例有多行 赛码网 单个输入,单个输出 单行多个输入,单行多个输出,空格分割 多个测试案例 ...

  4. 牛客网赛码网 输入输出格式 pythonC++

    牛客网&赛码网 输入输出格式 python&C++ Note: 你的程序需要stdin(标准输入)读取输入,然后stdout(标准输出)来打印结果,举个例子,你可以使用c语言的scan ...

  5. 牛客网赛码网输入输出总结(python版)

    1. 单行输入: n, m = map(int, sys.stdin.readline().strip().split()) 对该行中所有元素取整型后赋给等式左边若干参数 2. 多行输入: 先获取第一 ...

  6. js牛客网、赛码网输入输出

    js牛客网.赛码网输入输出 牛客网在线判题系统JavaScript(V8)使用 输入 单行输入 只有一行输入或者一个 var line = read_line(); 只有一行数组 var line = ...

  7. 牛客网在线判题系统JavaScript(V8)使用,附美团赛码系统判题系统使用

    牛客ACM模式 一直在刷leetcode的同学,平时一直使用核心代码模式,突然遇到ACM模式,会无从下手,下面教你处理各种输入输出情况. JavaScript作为一种动态语言,没有像C或Java那种频 ...

  8. 牛客网 赛码网 js输入输出

    牛客网 详细地址 let readline = require('readline') const r1 = readline.createInterface({input: process.stdi ...

  9. oppo测试面经汇总,来自牛客网

    1.Android事件处理机制 答:Activity通过dispatchTouchEvent分发事件,如果需要处理事件则调用onTouchEvent()消费事件,事件循环结束: 如果Activity不 ...

最新文章

  1. 开发工具之Eclipse快捷键
  2. RHEL5.4 iptables 配置详解(图)
  3. windows mobile5.0之“hello world”
  4. 为什么需要ORM 框架
  5. php mysql 排名算法_MySQL PHP:优化排名查询和计数子查询
  6. [html] 请实现一个网站加载进度条
  7. php的ob函数详解
  8. Windows Server 2016上SQL Server Always On可用性组的全面指南
  9. Latex写分段函数
  10. shell 日期格式化输出
  11. 大家知道,我的废话很多,所以来凑热闹
  12. 社会工程学读书[1]
  13. h5学习笔记 横排导航
  14. vue系列(三)——手把手教你搭建一个vue3管理后台基础模板
  15. android fps测试 源码,转一个刺激战场极限帧率代码和修改教程,亲测流畅不卡
  16. linux下openssl版本问题 /lib64/libcrypto.so.10: version `OPENSSL_1.0.2' not found
  17. Ai人工智能在船员管理的应用
  18. 学习笔记:计算excel中的平均值并去除0值
  19. Java中将字符串用空格分割成字符串数组的split方法
  20. 新增磁盘,磁盘扩容之-pv扩容

热门文章

  1. 神经网络研究主要内容,神经网络的起源和发展
  2. 谨慎使用viewWithTag
  3. 电平是什么?单片机的I/0口输入和输出,1和0是什么?什么是TTL电平?TTL电平分析?TTL、CMOS、RS232、RS485电平差异?usb转ttl?CH340模块驱动安装?电平之间的转换?
  4. 【C语言细枝末节の杂谈】转义字符
  5. 说说tushare pro积分规则或积分获取的那些坑!
  6. 51单片机+SYN6288语音模块源码
  7. make问题:make[1] entering directory
  8. 学生用计算机的按键名称,电脑的各键名称及用途
  9. 我的编程竞赛之路 ——中国大学生计算机编程第一人楼天城访谈
  10. 2018-10-27 直播课堂笔记