打水问题(贪心算法)

题目:有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;
} 
相关推荐
Han.miracle2 分钟前
优选算法-004 盛最多水的容器
数据结构·算法
Knight_AL4 分钟前
布隆过滤器参数深度解析:如何根据误判率计算位数组大小与哈希函数数量
算法·哈希算法
赵得C18 分钟前
软件设计师前沿考点精讲:新兴技术与性能优化实战
java·开发语言·分布式·算法·设计模式·性能优化
小白程序员成长日记26 分钟前
2025.12.09 力扣每日一题
数据结构·算法·leetcode
Bear on Toilet29 分钟前
18 . 杨辉三角
算法·leetcode·职场和发展
小川_wenxun36 分钟前
快速选择算法
算法
酌沧39 分钟前
大模型量化技术全解析
人工智能·python·算法
ULTRA??1 小时前
QT向量类实现GJK碰撞检测算法3d版本
c++·qt·算法
仰泳的熊猫1 小时前
1092 To Buy or Not to Buy
数据结构·c++·算法·pat考试
罗湖老棍子1 小时前
【深基16.例3】二叉树深度(洛谷P4913)
数据结构·算法·二叉树