首页 > 试题广场 >

小红闯关

[编程题]小红闯关
  • 热度指数:4472 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\,\,\,\,\,\,\,\,\,\,小红在玩一个游戏,这个游戏有 n 个关卡,通过第 i 个关卡需要消耗 a_i 个单位时间,小红必须按从前往后的顺序通过每一个关卡。
\,\,\,\,\,\,\,\,\,\,每通过 k 个关卡,小红会获得一个跳关道具,跳关道具可以在任意一个关卡使用,使用跳关道具后可以不消耗时间直接通过关卡。
\,\,\,\,\,\,\,\,\,\,小红想知道她通过这 n 个关卡,最少需要多少时间。

输入描述:
\,\,\,\,\,\,\,\,\,\,第一行输入两个整数 n, k\left(1 \leq n, k \leq 10^5\right) 代表关卡数量和获得跳关道具的条件。
\,\,\,\,\,\,\,\,\,\,第二行输入 n 个整数 a_1, a_2, \dots, a_n\left(1 \leq a_i \leq 10^5\right) 代表通过每个关卡需要消耗的时间。


输出描述:
\,\,\,\,\,\,\,\,\,\,在一行上输出一个整数,表示小红通过这 n 个关卡所需的最少时间。
示例1

输入

3 2
1 3 2

输出

4

说明

\,\,\,\,\,\,\,\,\,\,小红通过第二个关卡后获得跳关道具,此时消耗 1+3 单位时间;在第三个关卡使用跳关道具,不再消耗时间。
示例2

输入

6 2
1 1 4 5 1 4

输出

7

说明

\,\,\,\,\,\,\,\,\,\,小红通过第二个关卡后获得第一个跳关道具;
\,\,\,\,\,\,\,\,\,\,在第四个关卡使用第一个跳关道具后得到第二个跳关道具;
\,\,\,\,\,\,\,\,\,\,在第六个关卡使用第二个跳关道具。
示例3

输入

5 1
2 4 5 1 3

输出

2

说明

\,\,\,\,\,\,\,\,\,\,通过第一关后,后面的关卡都可以使用跳关道具。跳关也算一次成功的闯关。
头像 丨阿伟丨
发表于 2025-08-28 10:49:00
题目链接 小红闯关 题目描述 小红需要按顺序通过 个关卡。通过第 个关卡需要花费 的时间。 每当小红通过了 个关卡(无论是花费时间还是使用道具),她都会获得一个“跳关道具”。 跳关道具可以用于任何一个关卡,使用后能以 0 时间通过该关卡。 请计算通过所有 个关卡所需的最少总时间。 解题思路 展开全文
头像 BraveCoder
发表于 2025-09-04 21:32:58
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n 展开全文
头像 lahm66
发表于 2025-10-06 18:32:49
贪心 import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = ne 展开全文
头像 Silencer76
发表于 2025-08-09 19:00:26
题目链接 小红闯关 题目描述 小红在玩一个游戏,这个游戏有 个关卡,通过第 个关卡需要消耗 个单位时间。小红必须按从前往后的顺序通过每一个关卡。 每当小红通过 个关卡(无论是付费通关还是使用道具),她都会获得一个跳关道具。跳关道具可以在任意一个关卡使用,使用后可以不消耗时间直接通过关卡。 小 展开全文
头像 小胡放轻松
发表于 2025-11-21 23:33:11
/* 我的想法是从最后一个获得道具的位置开始向前,看在每一个位置上获得的道具最多可以减少多少时间,因为后面关卡的道具不能用在获得结点之前,所以说要从最后一个获得道具的位置进行判断,去掉跳过的关卡的前提下进行前面获得道具最大跳过时间的判断 具体的思路是1、计算出不用跳关的总用时sum,并设置变量sa 展开全文
头像 Wind_9233
发表于 2025-08-02 21:56:14
#include <iostream> #include <queue> #include<vector> #define int long long using namespace std; signed main() { int n,k;cin> 展开全文
头像 健谈的小学生整顿职场
发表于 2025-07-10 14:14:01
from heapq import heappop, heappush n, k = map(int, input().strip().split()) costs = list(map(int, input().strip().split())) ans = 0 heap = [] for i i 展开全文
头像 励偲
发表于 2025-10-13 14:08:34
const rl = require("readline").createInterface({ input: process.stdin }); const iter = rl[Symbol.asyncIterator](); const readline = async () 展开全文
头像 Jupiter-56
发表于 2025-10-19 17:27:49
// 优先队列+反向查询 #include <algorithm> #include <functional> #include <iostream> #include <queue> #include <vector> using nam 展开全文
头像 何成95
发表于 2025-10-29 11:52:35
import heapq#不用堆队列也可以做,但是会超时 n, k = map(int,input().split()) a = list(map(int,input().split())) total_time = sum(a) pq, saved_time = [], 0 for i in 展开全文