【问题描述】

采药人虽然 AFO(SU),但他在闲暇的时候还是可以玩一玩接水果(cat)的。但他渐渐发现 cat 好像有点太弱智。于是他不想浪费他的智商,于是决定写一个程序帮他玩。

cat 是这样玩的,开始时没有水果,采药人可以自己选择他所在的位置。接下来每隔 \(1\) 秒会有一个水果落到地上,而且第 \(i\) 秒落下的水果落到 \(x_i\) 这个位置,得分为 \(1\)。而采药人每秒只能移动一单位长度,但他不需要担心到了水果落下的位置还接不到水果,而且接水果不需要时间。采药人当然希望自己的分数越高越好。

采药人觉得写这个程序也太简单了,并且得分过低,于是他写了个挂,将接水果的一个人变成了两个人。但他却突然不想写 auto 程序了?这时转头看见了正在拼命切题的你,于是毫不犹豫地把这个问题交给了你。

【输入格式】

第 \(1\) 行:一个正整数 \(n\),游戏时间有 \(n\) 秒

接下来 \(n\) 行:第 \(i+1\) 行,一个正整数 \(x_i\)

【输出格式】

共 \(1\) 行:最大得分

【数据范围】

对于 \(30\%\) 的数据,\(n\leqslant100\)

对于 \(60\%\) 的数据,\(n\leqslant1000\)

对于 \(80\%\) 的数据,\(n\leqslant10000\)

对于 \(100\%\) 的数据,\(n\leqslant500000\), \(x_i\leqslant50000\)


Solution

考虑用二元组 \((x,y)\) 来表示一个水果,其含义为 (出现时间, 出现位置)。
假设我们已经拿了第 \(a\) 个水果,接下来要去拿第 \(b\) 个水果,则需要满足的条件为:
\[
|b_y-a_y|\leqslant b_x-a_x
\]
\[
a_x-b_x\leqslant a_y-b_y\leqslant b_x-a_x
\]
\[
\begin{cases}
a_x+a_y\leqslant b_x+b_y\\
a_x-a_y\leqslant b_x-b_y
\end{cases}
\]
发现是个二维偏序的关系,由于有两个人接,求最长 \(2\) 不相交子序列即可。

最新文章

  1. Xcode 历史版本
  2. SSH Key连接github提示Permission denied (publickey).错误
  3. Bootstrap (导航、标签、面包屑导航)
  4. PAT (Basic Level) Practise:1012. 数字分类
  5. Failed to issue method call: Unit mysqld.service failed to load: No such file or directory.
  6. CDQ分治题目小结
  7. json包的loads dumps区分
  8. Integer和int的详细比较(转)
  9. SVG图像技术摘要
  10. Jfinal中Db类的的使用
  11. Spring和SpringMvc详细讲解
  12. elk kibana查询语法
  13. Linux文件系统2---VFS的四个主要对象
  14. WIN10安装和使用MySql5.6中遇到的一些问题与解决
  15. JAVA⑤
  16. Qt 菜鸟的坑 QAbstractSocket::isValid()
  17. asp.net网页中添加年月日时分秒星期。
  18. HTML 水平线
  19. Linux中Readlink命令
  20. fm 讲解加代码

热门文章

  1. Django SQLite3的使用
  2. pandas时间序列常用操作
  3. python GUI测试自动化
  4. Processing 3!
  5. ASENET MVC 5 with Bootstrap and Knockout.js 第一弹
  6. NOI2.5 1490:A Knight's Journey
  7. SIFT特征匹配算法介绍
  8. 每日一技|巧用 Telnet 调试 Dubbo 服务
  9. java.io 包下的类有哪些 + 面试题
  10. OpenResty学习指南(二)