打水问题(贪心算法)

题目:有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;
} 
相关推荐
AI科技星8 分钟前
从质能关系到时空几何:光速飞行理论的框架对比与逻辑验证
服务器·人工智能·线性代数·算法·矩阵
CSDN_RTKLIB13 分钟前
C++仿函数
c++·算法·stl
学嵌入式的小杨同学30 分钟前
【嵌入式 C 语言高频考点】周测 + 期中真题解析:从基础语法到编程实战
c语言·数据结构·数据库·vscode·算法·面试
沉默-_-37 分钟前
力扣hot100双指针专题解析2(C++)
java·c++·算法·蓝桥杯·双指针
福楠38 分钟前
C++ | 红黑树
c语言·开发语言·数据结构·c++·算法
丝瓜蛋汤41 分钟前
Proof of the contraction mapping theorem
人工智能·算法
We་ct1 小时前
LeetCode 58. 最后一个单词的长度:两种解法深度剖析
前端·算法·leetcode·typescript
小袁顶风作案1 小时前
leetcode力扣——452. 用最少数量的箭引爆气球
学习·算法·leetcode·职场和发展
deep_drink1 小时前
【经典论文精读(一)】Isomap:非线性降维的全局几何框架(Science 2000)
人工智能·算法·机器学习
mjhcsp1 小时前
莫比乌斯反演总结
c++·算法