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 ;
}
目录
相关文章
|
6月前
|
算法 前端开发
100224. 分割数组
100224. 分割数组
40 0
|
18天前
数组拆分与合并
【10月更文挑战第29天】数组拆分与合并。
23 2
|
6月前
DAY-2 | 哈希表、指针与区间划分:字符种数统计问题
```markdown ## 题干 [牛客网链接](https://www.nowcoder.com/practice/eb94f6a5b2ba49c6ac72d40b5ce95f50) ## 题解 1. **查表法(哈希表)**:利用数组标记出现过的 ASCII 值小于127的字符,首次出现计数,重复则忽略。 2. **指针与区间划分(回头法)**:遍历字符串,对每个字符检查其前所有字符是否重复,重复则不计数。 ## 方法总结 - 哈希表在去重问题中非常实用,可多做相关练习。 - 使用`continue`时注意避免死循环,确保循环变量会改变。 - 多回顾此类问题以巩固理解。 ```
44 2
|
6月前
|
人工智能 BI
leetcod-561:数组拆分 I
leetcod-561:数组拆分 I
47 0
|
人工智能 算法 Java
LeetCode 算法 | 如何拆分数组?
LeetCode 算法 | 如何拆分数组?
|
存储 C语言
5.5_数据的存储和排列
计算机组成原理之数据的存储和排列
251 0
5.5_数据的存储和排列
|
人工智能 BI C++
数组拆分(C++)
你的任务是将这些数分成。
117 0
|
存储
字符串按照固定长度分割并存储在数组
字符串按照固定长度分割并存储在数组
197 0
|
人工智能 BI
【leetcode】561. 数组拆分 I
给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。
120 0
【leetcode】561. 数组拆分 I
二位数组按行按列遍历效率问题【小细节】
二位数组按行按列遍历效率问题【小细节】