#CSES1191. 循环数组

    ID: 408 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 3 上传者: 标签>贪心倍增前缀和环形数组二分CSES二分查找

循环数组

题目背景

翻译自 CSES-1191 题。

题目描述

给定一个包含 nn 个元素的循环数组。每个元素有两个邻居,位置 nn 和位置 11 的元素也被视为邻居。

你的任务是将数组划分成若干个子数组,使得每个子数组的和不超过 kk。请你计算出最少需要多少个子数组。

输入格式

第一行包含两个整数 nnkk,表示数组的长度和每个子数组的最大和。

第二行包含 nn 个整数 x1,x2,,xnx_1, x_2, \ldots, x_n,表示数组的内容。

保证数组中至少有一个划分(即数组中没有任何一个值大于 kk)。

输出格式

输出一个整数,表示最小的子数组个数。

样例

8 5
2 2 2 1 3 1 2 1
3

提示

我们可以将数组划分为三个子数组:[2,2,1][2, 2, 1][3,1][3, 1][2,1,2][2, 1, 2](注意数组是循环的)。

数据范围

  • 1n2×1051 \le n \le 2 \times 10^5
  • 1xi1091 \le x_i \le 10^9
  • 1k10181 \le k \le 10^{18}