机器人

题目背景

时限3秒,内存512MB

题目描述

小 R 喜欢研究机器人。

最近,小 R 新研制出了两种机器人,分别是 P 型机器人和 Q 型机器人。现在他要测试这两种机器人的移动能力,测试在从左到右排成一排的 nn 个柱子上进行,柱子用1 - n1n 依次编号,ii 号柱子的高度为一个正整数 h_ihi。机器人只能在相邻柱子间移动,即:若机器人当前在 ii 号柱子上,它只能尝试移动到 i - 1i1 号和 i + 1i+1 号柱子上。

每次测试,小 R 会选取一个起点 ss,并将两种机器人均放置在 ss 号柱子上。随后它们会按自己的规则移动。

P 型机器人会一直向左移动,但它无法移动到比起点 ss 更高的柱子上。更具体地,P 型机器人在 l (l \leq s)l(ls) 号柱子停止移动,当且仅当下列两个条件均成立:

  • l = 1l=1h_{l-1} > hshl1>hs

  • 对于满足 l \leq j \leq sljsjj,有 h_j \leq h_shjhs

Q 型机器人会一直向右移动,但它只能移动到比起点 ss 更低的柱子上。更具体地,Q 型机器人在 r (r \geq s)r(rs) 号柱子停止移动,当且仅当下列两个条件均成立:

  • r = nr=nh_{r+1} \geq h_shr+1hs

  • 对于满足 s < j \leq rs<jrjj,有 h_j < h_shj<hs

现在,小 R 可以设置每根柱子的高度,ii 号柱子可选择的高度范围为 [A_i, B_i][Ai,Bi],即A_i \leq h_i \leq B_iAihiBi。小 R 希望无论测试的起点 ss 选在哪里,两种机器人移动过的柱子数量的差的绝对值都小于等于22。他想知道有多少种柱子高度的设置方案满足要求,小 R 认为两种方案不同当且仅当存在一个 kk,使得两种方案中 kk 号柱子的高度不同。请你告诉他满足要求的方案数模 10^9 + 7109+7 后的结果。

输入输出格式

输入格式:

第一行一个正整数 nn,表示柱子的数量。

接下来 nn 行,第 ii 行两个正整数 A_i, B_iAi,Bi,分别表示 ii 号柱子的最小和最大高度。

输出格式:

仅一行一个整数,表示答案模 10^9 + 7109+7 的值。

输入输出样例

输入样例#1: 复制
5
3 3
3 3
3 4
2 2
3 3
输出样例#1: 复制
1

说明

柱子高度共两种情况:

  • 高度为:3 2 3 2 3。此时若起点设置在 55,P 型机器人将停在 11 号柱子,共移动44 个柱子。Q 型机器人停在 55 号柱子,共移动 00 个柱子,不符合条件。

-高度为:3 2 4 2 3。此时无论起点选在哪,都满足条件,具体见下表:

对于所有测试数据:1 \leq n \leq 3001n300 , 1 \leq A_i \leq B_i \leq 10^91AiBi109

每个测试点的具体限制见下表:

#笔试题目#
全部评论

相关推荐

头像
04-07 20:40
已编辑
未填写教育信息
以下是本篇内容一.嵌入式市场薪资情况目前从了解的情况来看,嵌入式应届本科生在二线城市找到一个7k-10k的工资,硕士找到一个12k-&nbsp;15k的工资比较容易,会一些linux的同学22年可以达到15-16k起步。以上对标二线城市,之所以会说二&nbsp;线城市,是为了避免谈一线高工资博眼球。一线城市23年会linux的211硕士应届能到25w起步,比如一些机器人公司。这是我关注各个学校校&nbsp;招以及我的师弟师妹了解到的。二.转行前的基础本硕7年都是学的机械工程专业,本科设置C语言课程,考计算机二级需要突击,除此之外在C语言&nbsp;上没有再深入学习过。机械专业本科会有一点数电模电的课程。在我转行之前就是上面的基础水平,实&nbsp;际上在转行时,距离本科毕业已经过去了5年多时间,基本是忘光了。。。。三.为什么选择自学?1)因为我穷,报班动辄5000+,1万,2万。但是我还不知道我能不能成功,我就把钱交了,我心&nbsp;里没底。说白了,自己感觉试错成本有点高。如果有人能保证我交了钱就成功,我肯定会交,但是没人&nbsp;能保障,如果有,那就是骗子。。。2)因为是开源时代,所有资料都能网上找到。并且我对比了培训班课程与开源资料,发现有些东&nbsp;西他们讲的未必有公开的资料讲的好,索性我就自己打基础,然后等有基础了再去考虑项目的问题,这&nbsp;样我也能识别培训班的层次和水平,让钱花的更值。四.如何实现自学及对应路线?我的自学模式:&nbsp;基础知识+实战项目&nbsp;&nbsp;现在的资料很多都是开源的,实际上为自学提供了非常好的土壤。对于新手最大的问题是资料太多,看什么都不会,看什么都觉得应该学,但是学每一个都会花非常多时间,导致很多人不敢尝试和退却。转行前我也这样,开始苦恼了一段时间。我以自学过来的视角给大家加加油。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;嵌入式体系知识非常庞大,涉及各行各业,入行的新手不要想象所有都要学了才去找工作,有些东西一辈子学不完,但是想入门有一份工作还是比较容易的。1.我的学习路线&nbsp;C语言——2.数据结构——硬件基础(数电模电)——51单片机——stm32单片机——32实战项目——linux驱动开发/linux应用开发——linux实战项目2.学习方法:实际上按照上面的每一个节点去搜索,你都可以搜出大量且海量的视频资料,不要一头扎&nbsp;进去学习,先要了解嵌入式对上面各个节点的要求程度,然后针对性学习。
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务