蓝桥杯——数组切分

数组切分

题目分析

这里要搞清楚一个点就是满足区间内数字是连续数字的区间有什么样的特点,既然数字连续重新排列后的数字为n,n+1,n+2,n+3,n+4,...n+len,则最大数字和最小数字之差恰好是区间长度减1,即n+len-n=len,同样因为下标也是连续数字,那么左端点和右端点的下标之差也是区间长度减1,所以最大数字和最小数字之差恰好是左端点和右端点的下标之差。

定义dpi表示以ai结尾的区间能够被划分的区间的个数,那么dpi可以从 d p j − 1 ( j < i ) dpj-1(j<i) dpj−1(j<i)转移过来的条件是aj~ai这个区间是一个连续区间。

题目代码

java 复制代码
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    int a[] = new int[n+1];
    int mod = 1000000007;
    for (int i = 1; i < a.length; i++) {
        a[i] = scanner.nextInt();
    }
    int dp[] = new int[n+1];
    dp[0] = 1;
    for (int i = 1; i < dp.length; i++) {
        int max = a[i];
        int min = a[i];
        for (int j = i; j > 0; j--) {
            max = Math.max(a[j], max);
            min = Math.min(a[j], min);
            if(max-min==i-j) {
                dp[i] = (dp[i] + dp[j-1])%mod;
            }
        }
    }
    System.out.println(dp[n]);
}
}
相关推荐
鶴哥只手遮天28 分钟前
Spring AI Alibaba 深度技术系列-第 05 章 编译与执行引擎:CompiledGraph、GraphRunner与三段式 Executor
java·人工智能·开源
开开心心_Every44 分钟前
免费压缩软件WinRAR无弹窗、广告干扰
java·开发语言·前端·spring·智能手机·word·winrar
计算机毕设定制辅导-无忧学长1 小时前
《基于微信小程序的个人智能刷题助手的设计与实现》
java·spring boot·mysql·微信小程序·uniapp·个人智能刷题助手系统
步行cgn1 小时前
Spring MVC 中实现 request 域效果的几种方式
java·后端
Thomas.Sir1 小时前
第3课:SpringBoot4.x 自动配置原理:@EnableAutoConfiguration底层源码剖析
java·spring boot
Rain的Java大神之路1 小时前
MySQL 被高并发打爆?从定位到分库分表逐层拆解(含秒杀库存实战)
java·后端·面试
cc_瀚海知行1 小时前
工具调用 6|助手什么时候该停下来?
java·服务器·前端·人工智能·python·ai
?abc!1 小时前
(动态规划+DFS)494. 目标和
算法·深度优先·动态规划
YDS8291 小时前
Small Spring IOC篇:应用上下文实现和Bean的扩展
java·后端·spring
Pniubi1 小时前
ConcurrentHashMap拆分线程池难点再讲
java·jvm