top1编程
← 返回上一页

P5014. 投球游戏

时间限制
1000 ms
内存限制
128 MiB
难度
-
知识点
童程童美
知识点
动态规划基础
知识点
线性DP
知识点
蓝桥杯国赛集训

题目描述

有一个投球游戏,玩法是将球投到 NN 个篮筐里。具体玩法如下: 投篮顺序必须同时符合以下三个规则: 例如给出的 33 个篮筐距离和顺序为 130 200 55130\ 200\ 55。 规则一: 第一次投篮可以投任意一个篮筐; 规则二: 从第二次投篮开始,每一次投篮只能投顺序在上一次篮筐的后面的篮筐; 如果第一次投的 200200 篮筐,那么接下来就不能投 130130 的篮筐,可以投 5555 的篮筐。 规则三: 从第二次投篮开始,每一次投篮只能投比上一次投篮距离更近的篮筐。 如果第一次投的 130130 的篮筐,那么接下来不能投 200200 的篮筐,只能投 5555 的篮筐。 现给出 NN 的数值,和 NN 个篮筐的距离及顺序,假定每次投篮都能投进,请你编写程序计算按照投球规则最多能投进几个球。 如:N=33N=3,3个篮筐的距离及顺序为:130 200 55130\ 200\ 55 按照三条规则,一共有以下三种投球方案: 1)如果第一次投 130130,那么投 1301305555,最多可以投进 22 球; 2)如果第一次投 200200,那么投 2002005555,最多可以投进 22 球; 3)如果第一次投 5555,那么投 5555,最多可以投进 11 球。 则按照规则最多可投进 22 球。

输入格式

第一行输入一个正整数 N(2<N<20)N(2<N<20) 表示篮筐的个数 第二行分别输入 NN 个正整数( 10<10< 正整数 <1000<1000 )并以一个空格隔开,分别表示篮筐距离和 NN 个篮筐顺序,每个篮筐的距离都不相同。

输出格式

输出一个整数,表示最多能投进球的个数。

3
130 200 55
2