区块链技术博客
www.b2bchain.cn

第十一届蓝桥杯国赛-第10题-蓝跳跳

这篇文章主要介绍了第十一届蓝桥杯国赛-第10题-蓝跳跳的讲解,通过具体代码实例进行19829 讲解,并且分析了第十一届蓝桥杯国赛-第10题-蓝跳跳的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=19829

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

目录

  • 前言
  • 题目
          • 数据规模
          • 样例输入1
          • 样例输出1
          • 样例输入2
          • 样例输出2
  • 代码

前言

这次比赛的题目感觉整体上不是太难,大部分题目理解起来比较容易,但是数据规模卡的比较紧。这段时间学校的课程比较紧张,三天两头有报告要写,没什么时间练习算法,发挥的也不是很好(其实就是菜了?)
然后就是这次比赛的最后1题,叫蓝跳跳,一道难度还是比较简单的动态规划+循环数组的题。

题目

蓝跳跳机器人从起点不回头地跳到终点,距离L。

  1. 一次最多可以跳k步。
  2. 连续地两次跳跃不能都大于等于p步,不然机器人会因为不稳定摔倒。

问:有多少种从起点跳到终点的方式?结果mod上20201114
(完整的题目记不住了,等官方出来后补上?)

数据规模

0<p<k<100000(这个记不清了,应该差不多)
0<L<1018

样例输入1

3 2 5

样例输出1

9

样例输入2

5 3 10

样例输出2

397

代码

第十一届蓝桥杯国赛-第10题-蓝跳跳

import java.util.Scanner;  public class Main { 	static int len; 	static int[][] arr; 	static int k; 	static int p;  	public static void main(String[] args) { 		Scanner sc = new Scanner(System.in); 		k = sc.nextInt(); 		p = sc.nextInt(); 		long L = sc.nextLong(); 		sc.close(); 		// 创建一个双层的循环数组,0层存没跳到p几次的方式个数,1层存跳至少p次的方式个数 		len = k + 1; 		arr = new int[len][2]; 		int i; 		arr[0][1] = arr[0][0] = 1; 		for (i = 1; L-- > 0; i = (i + 1) % len) { 			int sum = 0; 			for (int j = 1; j < p; j++) { 				// 跳p次以内累加的是之前跳至少p次的方式个数。 				sum = (sum + arr[(len + i - j) % len][1]) % 20201114; 			} 			arr[i][0] = sum; 			for (int j = p; j <= k; j++) { 				// 跳至少p次时累加的是之前跳p次以内的方式个数。 				sum = (sum + arr[(len + i - j) % len][0]) % 20201114; 			} 			arr[i][1] = sum; 		} 		// for循环多移动了一次i,这里把i移回来。 		i = (len + i - 1) % len; 		System.out.println(arr[i][1]); 	} }  

本文转自互联网,侵权联系删除第十一届蓝桥杯国赛-第10题-蓝跳跳

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 第十一届蓝桥杯国赛-第10题-蓝跳跳
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们