蓝桥杯-打水问题(贪心+模拟)

简介: 打水问题

Problem Description:


N个人要打水,有M个水龙头,第i个人打水所需时间为Ti,请安排一个合理的方案使得所有人的等待时间之和尽量小。  


Input:


第一行两个正整数N  M  接下来一行N个正整数Ti。

N,M< =1000,Ti< =1000    


Output:


最小的等待时间之和。(不需要输出具体的安排方案)  


Sample Input:


7 3

3 6 1 4 2 5 7


Sample Output:


11


程序代码:


#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
    int n,m,a[1001],book[1001];
    scanf("%d %d",&n,&m);
    memset(book,0,sizeof(book));//数组初始化 
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+1+n);//C++中的排序 
    int sum=0,num,c,d;
    for(int i=1;i<=n;i++)
    {
        num=0;
        c=0;
        d=i;
        while(1)
        {
            if(book[d]==1)
                break;
            else
                book[d]=1;
            if(d+m<=n)
            {
                c+=a[d];//加上前一个人的时间 
                num+=c;//每个水龙头总的 
                d+=m;//改变水龙头位置 
            }
            else
                break;
        }
        sum+=num;//所有水龙头时间总和 
    }
    printf("%d\n",sum);
    return 0;
}
相关文章
|
7月前
|
算法 测试技术 C#
【动态规划】1223. 掷骰子模拟
【动态规划】1223. 掷骰子模拟
|
7月前
|
算法 测试技术 C++
【动态规划】C++ 算法458:可怜的小猪
【动态规划】C++ 算法458:可怜的小猪
|
算法
代码随想录 Day26 贪心算法01 中 LeetCode T376 摆动序列
代码随想录 Day26 贪心算法01 中 LeetCode T376 摆动序列
60 1
|
6月前
|
存储 算法 数据挖掘
力扣174题动态规划:地下城游戏(含模拟面试)
力扣174题动态规划:地下城游戏(含模拟面试)
|
7月前
|
机器学习/深度学习 算法 机器人
【动态规划】【C++算法】741摘樱桃
【动态规划】【C++算法】741摘樱桃
|
7月前
|
算法 测试技术 C++
【动态规划】【数学】【C++算法】18赛车
【动态规划】【数学】【C++算法】18赛车
|
存储 机器人 C++
leetcode 每日一题 874. 模拟行走机器人 c++模拟解法
简单来说就是机器人在一个矩阵上移动 我们要找到一个离原点的一个最大欧式距离的平方
141 0
|
7月前
代码随想录Day36 动态规划05 LeetCode T1049最后一块石头的重量II T494 目标和 T474 一和零
代码随想录Day36 动态规划05 LeetCode T1049最后一块石头的重量II T494 目标和 T474 一和零
59 0
|
算法
代码随想录算法训练营第三十一天 | LeetCode 455. 分发饼干、376. 摆动序列、53. 最大子数组和
代码随想录算法训练营第三十一天 | LeetCode 455. 分发饼干、376. 摆动序列、53. 最大子数组和
70 0
|
算法
代码随想录算法训练营第三十八天 | LeetCode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
代码随想录算法训练营第三十八天 | LeetCode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
58 0