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

简介: 打水问题

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;
}
相关文章
|
1月前
|
算法
LeetCode回文数(暴力解,求更好的思路)
这篇博客讨论了如何判断一个整数是否为回文数,提供了暴力解法的代码,并寻求更优的算法建议。
41 1
LeetCode回文数(暴力解,求更好的思路)
|
3月前
|
算法 Java 测试技术
算法设计(动态规划实验报告) 基于动态规划的背包问题、Warshall算法和Floyd算法
这篇文章介绍了基于动态规划法的三种算法:解决背包问题的递归和自底向上实现、Warshall算法和Floyd算法,并提供了它们的伪代码、Java源代码实现以及时间效率分析。
算法设计(动态规划实验报告) 基于动态规划的背包问题、Warshall算法和Floyd算法
|
5月前
|
存储 算法 数据挖掘
力扣174题动态规划:地下城游戏(含模拟面试)
力扣174题动态规划:地下城游戏(含模拟面试)
|
PHP
BugKu 矛盾 解题思路
BugKu 矛盾 解题思路
73 0
【动态规划入门】动态规划思路五部曲_斐波那契_爬楼梯_最小花费爬楼梯
【动态规划入门】动态规划思路五部曲_斐波那契_爬楼梯_最小花费爬楼梯
70 0
|
算法
贪心算法的思路和典型例题
贪心算法的思路和典型例题
蓝桥杯备赛leetcode 70.爬楼梯,用最经典的题目来讲解动态规划
题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼梯顶部呢?
蓝桥杯备赛leetcode 70.爬楼梯,用最经典的题目来讲解动态规划
|
算法
算法 - 蓝桥杯并查集题型
算法 - 蓝桥杯并查集题型
|
算法
算法设计与分析/数据结构与算法实验6:0-1背包问题(回溯法)
算法设计与分析/数据结构与算法实验6:0-1背包问题(回溯法)
209 0
算法设计与分析/数据结构与算法实验6:0-1背包问题(回溯法)
|
算法
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
136 0
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法