打水问题(贪心算法)

题目:有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;
} 
相关推荐
Dfreedom.2 小时前
分类算法的统一视角:从方差最大化到概率建模再到损失函数
算法·支持向量机·分类
Nebula_g2 小时前
JavaSE加强:Commons-io框架
java·开发语言·算法·javase
梦帮科技3 小时前
【3.0修订版】音乐权利 NFT:MusicRightsNFT 的确权思想与授权关联
网络协议·算法·web3·区块链·密码学·智能合约·零知识证明
Dfreedom.3 小时前
基于PCA的光谱物质识别分析
算法
强化湿件的技术神甫3 小时前
KS检验和Lilliefors正态性检验方法
算法
yi0113 小时前
DAY23: LeetCode 27 → 283:从移除元素到移动零,理解快慢指针的两种思路
人工智能·笔记·python·算法·leetcode·排序算法·双指针
怕浪猫3 小时前
多 Agent 系统面试怎么答?我总结了 4 种经典架构
人工智能·算法·面试
程序员清风3 小时前
排序算法:从冒泡排序到归并排序
数据结构·算法·排序算法
万年咸鱼3 小时前
C语言内功心法篇——变量与数据类型
c语言·jvm·算法
张小凡vip4 小时前
Kubernetes--k8s---了解和使用 ServiceAccount
容器·贪心算法·kubernetes