Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列
正整数的摆动序列
问题描述
如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列。即 a[2i]<a[2i-1], a[2i+1]>a[2i]。
小明想知道,长度为 m,每个数都是 1 到 n 之间的正整数的摆动序列一共有多少个。
输入格式
输入一行包含两个整数 m,n。
输出格式
输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。
样例输入
3 4
样例输出
14
样例说明
以下是符合要求的摆动序列:
2 1 2
2 1 3
2 1 4
3 1 2
3 1 3
3 1 4
3 2 3
3 2 4
4 1 2
4 1 3
4 1 4
4 2 3
4 2 4
4 3 4
评测用例规模与约定
对于 20% 的评测用例,1 <= n, m <= 5;
对于 50% 的评测用例,1 <= n, m <= 10;
对于 80% 的评测用例,1 <= n, m <= 100;
对于所有评测用例,1 <= n, m <= 1000。
这里附上亓老板的提高时间效率的一些[小技巧](https://blog.csdn.net/qq_43422111/article/details/105326623)
package 省模拟赛;
import java.util.Scanner;
public class 正整数的摆动序列 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
sc.close();
//dp[i][j] i表示第多少位,j表示一个分界线
// 奇数行就是大于j的方案数,偶数行就是小于j的方案数
// 奇数要比前面的大,所以要大于的,偶数要比前面的小,所以要小于的
int[][] dp = new int[m+2][n+2];
//初始化边界
for (int i = 1; i <=n; i++) {
dp[1][i]=n-i+1;
}
for(int i = 2; i <= m; i++)
if((i&1)==1){
//奇数的话是要比前面大的,所以用倒序
for(int j = n; j >= 1; j--){
dp[i][j] = (dp[i-1][j-1] + dp[i][j+1]) % 10000;
}
}
else{
for(int j = 1; j <= n; j++){
dp[i][j] = (dp[i-1][j+1] + dp[i][j-1]) % 10000;
}
}
//判断奇偶从此我要改成这个了,一位位运算确实快
//m&1,就是把m换成二进制看看最后一位是不是1,如果是1证明就是奇数,如果是0证明是偶数
int result = (m & 1)==1 ? dp[m][1] : dp[m][n];
System.out.println(result);
}
}
Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列的更多相关文章
- Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
小明用积木搭了一个城堡. 为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个 n 行 m 列的方格图上,每个积木正好占据方格图的一个小方格. 当然,小明的城堡并不是平面的,而是立体的.小明 ...
- Java 第十一届 蓝桥杯 省模拟赛 梅花桩
小明每天都要练功,练功中的重要一项是梅花桩. 小明练功的梅花桩排列成 n 行 m 列,相邻两行的距离为 1,相邻两列的距离也为 1. 小明站在第 1 行第 1 列上,他要走到第 n 行第 m 列上.小 ...
- Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量
给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母. 元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母. 输入格式 输入一行,包含一个单词,单词中只包含小写英文字母. 输 ...
- Java 第十一届 蓝桥杯 省模拟赛 递增序列
问题描述 在数列 a[1], a[2], -, a[n] 中,如果 a[i] < a[i+1] < a[i+2] < - < a[j],则称 a[i] 至 a[j] 为一段递增 ...
- Java 第十一届 蓝桥杯 省模拟赛 最大的元素距离
在数列 a_1, a_2, -, a_n中,定义两个元素 a_i 和 a_j 的距离为 |i-j|+|a_i-a_j|,即元素下标的距离加上元素值的差的绝对值,其中 |x| 表示 x 的绝对值. 给定 ...
- Java 第十一届 蓝桥杯 省模拟赛 洁净数
洁净数 小明非常不喜欢数字 2,包括那些数位上包含数字 2 的数.如果一个数的数位不包含数字 2,小明将它称为洁净数. 请问在整数 1 至 n 中,洁净数有多少个? 输入格式 输入的第一行包含一个整数 ...
- Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
一棵10层的二叉树,最多包含多少个结点? 注意当一棵二叉树只有一个结点时为一层. 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余 ...
- Java 第十一届 蓝桥杯 省模拟赛 70044与113148的最大公约数
问题描述 70044与113148的最大公约数是多少? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. pac ...
- Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
问题描述 不超过19000的正整数中,与19000互质的数的个数是多少? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将 ...
随机推荐
- 关于Fragment的点击切换数据滞留问题
场景再现:当我使用tabLayout + Fragment 切换不同的fragment时,出现了数据重复显示的问题: 思考逻辑: - 每次切换fragment都会重新获取数据,但是list集合是全局的 ...
- 3-JVM垃圾回收算法和垃圾收集器
垃圾回收算法和垃圾收集器 1.什么是垃圾回收 对于内存当中无用的对象进行回收,如何去判断一个对象是不是无用的对象. 引用计数法: 每个对象中都会存储一个引用计数,每增加一个引用就+1,消失一个引用就- ...
- YOLOV4在linux下训练自己数据集(亲测成功)
最近推出了yolo-v4我也准备试着跑跑实验看看效果,看看大神的最新操作 这里不做打标签工作和配置cuda工作,需要的可以分别百度搜索 VOC格式数据集制作,cuda和cudnn配置 我们直接利用 ...
- 聊聊ESP8266的SDK(ESP8266_RTOS_SDK v3.3 环境搭建)
ESP8266_RTOS_SDK发行版本v3.3-rc1环境搭建 在大学期间玩8266所接触的都无操作系统版本的SDK,但后来接触了ESP32后发现ESP8266也推出了RTOS版本,一直都没来得及去 ...
- 整理今天js留下的作业(点击换图片换首页背景图)
<div class="buttons"> <button id="katong">卡通</button> <b ...
- Django之forms.ModelForm
通常在Django项目中,我们编写的大部分都是与Django 的模型紧密映射的表单. 举个例子,你也许会有个Book 模型,并且你还想创建一个form表单用来添加和编辑书籍信息到这个模型中. 在这种情 ...
- iterm 分屏切换快捷键与配色设置
(1)快捷键设置 ⌘ + d: 垂直分屏, ⌘ + shift + d: 水平分屏. ⌘ + ]和⌘ + [在最近使用的分屏直接切换. ⌘ + opt + 方向键切换到指定位置的分屏. ⌘ + 数字: ...
- 发现用System.Net.Mail发邮件(代码附后),附件稍微大一点就会造成程序假死. 有没有什么简单的解决办法呢? 多谢!!
附件大,上传,发送一定会慢.程序卡,应该是主线程正在发送,邮件造成的.创建其他线程在后台去发.这样就不影响主线程做其他工作了 using System; using System.Collecti ...
- Java并发包4--可重入锁ReentrantLock的实现原理
前言 ReentrantLock是JUC提供的可重入锁的实现,用法上几乎等同于Synchronized,但是ReentrantLock在功能的丰富性上要比Synchronized要强大. 一.Reen ...
- redis学习——day01_redis简介与安装
一.Redis 简介 1.1 Redis是什么 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redi ...