lanqiaoOJ 2148 数组切分

简介: lanqiaoOJ 2148 数组切分

1.数组切分 - 蓝桥云课 (lanqiao.cn)

好的题解AcWing 4668. 数组切分 - AcWing

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
const int N = 10010 ,M = 1e9+7;
typedef long long LL ;
LL dp[N] ;//\\表示前i个数可以划分的自然数组的数量
LL a[N] ;//\\存储原数组
int main(){
  int n ; cin >> n ;
  for(int i = 1 ;i <= n ; i ++) cin >>a[i] ;
  dp[0] = 1 ;//\\初始化
  for(int i = 1; i <= n ; i ++){
    LL mi,ma ;//\\定义一个最大值和最小值
    mi = ma = a[i];\\当最大值减最小值等于数组长度时说明可以组成一个自然数组
    for(int j = i ; j >= 1 ; j --){
      mi = min(mi,a[j]) ; ma = max(ma,a[j]) ;
      if(i-j==ma-mi){//\\j--i 可以组成一个自然数组,然后j-1 之前的数组成的自然数组都可以组成i的自然数组
        dp[i] = (dp[i] + dp[j-1]) % M ;
      }
    }
  }
  cout << dp[n] << endl ;
  return 0 ;
}
目录
相关文章
|
5月前
|
算法 前端开发
100224. 分割数组
100224. 分割数组
39 0
php数组随机排序
PHP中对数据进行随机排序
二维数组的压缩存储,稀疏数组
在二维数组只有少部分有效数据的时候,为了不存储过多的无效数据,我们可以使用稀疏数组来存储二维数组。
|
5月前
|
人工智能 BI
leetcod-561:数组拆分 I
leetcod-561:数组拆分 I
38 0
|
11月前
|
C语言
数组拆分与合并
C 语言实例 - 数组拆分与合并
45 1
从排列字符串到排列序列:解析增减字符串匹配问题
题目要求根据给定的字符串 s,构造一个排列序列 perm,其中排列序列中的数字满足以下规则: 如果 perm[i] < perm[i + 1],则对应的字符为 'I'; 如果 perm[i] > perm[i + 1],则对应的字符为 'D'。 我们需要根据字符串 s 中的字符,构造满足上述规则的排列序列 perm。
52 0
|
人工智能 算法 Java
LeetCode 算法 | 如何拆分数组?
LeetCode 算法 | 如何拆分数组?
|
PHP
php数组学习(1):固定格式的字符串分割成数组后内容去重
php数组学习(1):固定格式的字符串分割成数组后内容去重
51 0
|
存储 C语言
5.5_数据的存储和排列
计算机组成原理之数据的存储和排列
238 0
5.5_数据的存储和排列
|
人工智能 BI C++
数组拆分(C++)
你的任务是将这些数分成。
110 0