[Offer收割]编程练习赛11 题目4 : 排队接水

Posted deadend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Offer收割]编程练习赛11 题目4 : 排队接水相关的知识,希望对你有一定的参考价值。

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

有n个小朋友需要接水,其中第i个小朋友接水需要ai分钟。

由于水龙头有限,小Hi需要知道如果为第l个到第r个小朋友分配一个水龙头,如何安排他们的接水顺序才能使得他们等待加接水的时间总和最小。

小Hi总共会有m次询问,你能帮助他解决这个问题吗?

假设3个小朋友接水的时间分别是2,3,4。如果他们依次接水,第一位小朋友等待加接水的时间是2,第二位小朋友是5,第三位小朋友是9。时间总和是16。

输入

第一行一个数T(T<=10),表示数据组数

对于每一组数据:

第一行两个数n,m(1<=n,m<=20,000)

第二行n个数a1...an,表示每个小朋友接水所需时间(ai<=20,000)

接下来m行,每行两个数l和r

输出

对于每次询问,输出一行一个整数,表示答案。

样例输入
1
4 2
1 2 3 4
1 2
2 4
样例输出
4
16

思路

莫队算法。待完成。

以上是关于[Offer收割]编程练习赛11 题目4 : 排队接水的主要内容,如果未能解决你的问题,请参考以下文章

[Offer收割]编程练习赛11 题目2 : 物品价值

[Offer收割]编程练习赛11 题目1 : hiho字符串

hihocoder offer收割编程练习赛11 A hiho字符串

[Offer收割]编程练习赛12 题目4 : 寻找最大值

[Offer收割]编程练习赛12 题目2 : 一面砖墙

hihocoder offer收割编程练习赛11 C 岛屿3