打水问题(贪心算法)

题目:有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2.........tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少?通过键盘输入排队打水的人数以及每人打水的时间和水龙头数,使用贪心算法求出所有人完成打水总共花费的时间的最小值。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int t[N]; //打水时间 
int s[N]; //每个人等待的时间
 
int res=0; //总花费时间 
signed main(){
	
	int n,r;
	cin>>n>>r;
	for(int i=1;i<=n;i++)
	cin>>t[i];
	sort(t+1,t+1+n); //从大到小 
	//前r个前缀和直接等于本身 
	for(int i=1;i<=r;i++) s[i]=t[i];
	//纵向前缀和 ,在前面人接水的过程中,后面的人需要等待 
	for(int i=r+1;i<=n;i++) s[i]=s[i-r]+t[i];
	
	//求总和等待时间
	for(int i=1;i<=n-r;i++) res+=s[i];
	cout<<res<<endl; 
	
	return 0;
} 
相关推荐
Wect13 小时前
LeetCode 106. 从中序与后序遍历序列构造二叉树:题解+思路拆解
前端·算法·typescript
qq_4542450313 小时前
上下文驱动的 ECS:一种反应式实体组件系统扩展
数据结构·算法·c#
xiaoye-duck14 小时前
《算法题讲解指南:优选算法-双指针》--03快乐数,04盛水最多的容器
c++·算法
铸人14 小时前
再论自然数全加和 - 质数螺旋
数学·算法·数论·复数
汉克老师14 小时前
GESP2024年3月认证C++二级( 第一部分选择题(1-8))
c++·算法·循环结构·分支结构·gesp二级·gesp2级
坚持就完事了14 小时前
数据结构之堆(Java\Python双语实现)
java·数据结构·算法
自然语14 小时前
人工智能之数字生命-观察的实现
数据结构·人工智能·学习·算法
苦藤新鸡14 小时前
63.排序数组中找元素的第一个元素和最后一个元素
算法·leetcode
苦藤新鸡14 小时前
59 分割回文串
算法
得一录14 小时前
LoRA(Low-Rank Adaptation)的原理和实现
python·算法·机器学习