蓝桥 摆动序列 (dp)

简介: 蓝桥 摆动序列 (dp)

问题描述
如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列。即 a[2i]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。

比赛的时候用的暴力搜索,应该是得不了多少分。
看了好几个题解才看明白动态规划怎么做,这里记录一下,都在注释里了。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

//i表示第几位

//i为奇数-->dp[i][j]:第i位是大于等于j的个数
//dp[i][j]=dp[i-1][j-1]+dp[i][j+1]

//i为偶数-->dp[i][j]:第i位是小于等于j的个数
//dp[i][j]=dp[i-1][j+1]+dp[i][j-1]
int dp[1005][1005];
int n, m;
int main(){
   
    cin>>m>>n;
    for (int j=1; j<=n; j++){
   
        dp[1][j]=n-j+1;
    }
    for (int i=2; i<=m; i++){
   
        if (i&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;
            }
        }
    }
    int res = m&1? dp[m][1] : dp[m][n];
    cout<<res;
    return 0;
}
相关文章
|
传感器 Android开发 开发者
构建高效Android应用:Kotlin的协程与Flow
【4月更文挑战第26天】随着移动应用开发的不断进步,开发者寻求更简洁高效的编码方式以应对复杂多变的业务需求。在众多技术方案中,Kotlin语言凭借其简洁性和强大的功能库逐渐成为Android开发的主流选择。特别是Kotlin的协程和Flow这两个特性,它们为处理异步任务和数据流提供了强大而灵活的工具。本文将深入探讨如何通过Kotlin协程和Flow来优化Android应用性能,实现更加流畅的用户体验,并展示在实际开发中的应用实例。
|
Web App开发 JSON 前端开发
前端跨域解决方案-汇总
前端跨域解决方案-汇总
438 0
|
存储 机器学习/深度学习 数据可视化
解析exe文件
如何使用`objdump`工具解析exe文件,包括exe文件的组成、`objdump`的用法以及如何查看exe文件的节头信息和完整内容。
914 0
解析exe文件
|
关系型数据库 MySQL 数据库
MySQL删除全局唯一索引unique
这篇文章介绍了如何在MySQL数据库中删除全局唯一的索引(unique index),包括查看索引、删除索引的方法和确认删除后的状态。
929 9
|
SoC Windows
基于蒙特卡洛法的规模化电动汽车充电负荷预测(Python&Matlab实现)
目录 0 概述 1 蒙特卡洛模拟方法介绍 2 规模化电动汽车充电负荷预测计算方法 3 完整代码
582 0
|
运维 架构师 安全
架构师养成手册:架构师职责
小米是一名热情的技术爱好者和架构师,他探讨了架构师的角色和职责。主要涉及六个方面:顶层设计,需与企业战略目标对齐,制定架构原则;规划可适应未来变化的企业架构,分析需求并关注技术趋势;全局视角制定可落地的架构方案,兼顾全局与局部优化;技术选型与难题解决,选择合适技术并解决实际问题;关注方案与代码的广度与深度,确保宏观设计与微观实现的统一;同时,架构师还需具备管理能力,包括团队协作、资源调配和风险管理。
662 11
|
Ubuntu Unix Linux
在Linux中,Unix和Linux之间的关系是什么?
在Linux中,Unix和Linux之间的关系是什么?
|
Java 应用服务中间件 数据库
SpringCloud:服务保护和分布式事务详解
SpringCloud:服务保护和分布式事务详解
517 0
|
Perl 容器 Kubernetes
从零开始入门 | Kubernetes 中的服务发现与负载均衡
作者 | 阿里巴巴技术专家  溪恒 一、需求来源 为什么需要服务发现 在 K8s 集群里面会通过 pod 去部署应用,与传统的应用部署不同,传统应用部署在给定的机器上面去部署,我们知道怎么去调用别的机器的 IP 地址。
|
消息中间件 Cloud Native 前端开发
基于云原生网关的全链路灰度实践
本文完整介绍了基于物理环境隔离和基于逻辑环境隔离两种方案,其中对基于逻辑环境隔离方案进行详细分析对涉及到的各个技术点做了相关介绍,并基于 EDAS 及 MSE 云原生网关的落地方案,并给出相关产品配置用例。

热门文章

最新文章