打水问题(贪心算法)

这篇具有很好参考价值的文章主要介绍了打水问题(贪心算法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

#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;
} 

到了这里,关于打水问题(贪心算法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 贪心算法(区间问题)

    有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中 points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend 之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气

    2024年03月11日
    浏览(66)
  • Java 贪心算法经典问题解决

    题目 一块金条切成两半,是需要花费和长度数值一样的铜板的。比如 长度为20的 金条,不管切成长度多大的两半,都要花费20个铜 板。一群人想整分整块金 条,怎么分最省铜板? 例如,给定数组{10,20,30},代表一共三个人,整块金条长度为 10+20+30=60. 金条要分成10,20,30三个部分

    2024年02月16日
    浏览(37)
  • 贪心算法-删数问题C++

    目录 一、题目 二:思路  代码 运行结果 有一个长度为n(n = 240)的正整数,从中取出k(k n)个数,使剩余的数保持原来的次序不变,求这个正整数经过删数之后最小是多少。 输入格式: n和k 输出格式: 一个数字,表示这个正整数经过删数之后的最小值。 输入样例: 结尾无空

    2024年02月08日
    浏览(42)
  • 贪心算法-跳跃游戏问题(java)

    1.1 题目描述 输入是一个非负整数数组nums,数组元素nums[i]代表你站的位置i最多能够向前跳几步。现在你站的第一个位置nums[0],请问能否跳到最后一个位置。 举例: nums = [2,3,1,1,4] 这个就可以跳到最后,返回true nums = [3,2,1,0,4]这个就无法跳到最后,返回false 1.2解题思路: 我们每

    2024年02月05日
    浏览(46)
  • 【趣学算法】Day3 贪心算法——背包问题

    14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!  ❤️一名热爱Java的大一学生,希望与各位大佬共同学习进步❤️ 🧑个人主页:@周小末天天开心 各位大佬的点赞👍 收藏⭐ 关注✅,是本人学习的最大动力 感谢! 📕该

    2024年02月02日
    浏览(41)
  • 背包问题算法全解析:动态规划和贪心算法详解

    计算机背包问题是动态规划算法中的经典问题。本文将从理论和实践两个方面深入探讨计算机背包问题,并通过实际案例分析,帮助读者更好地理解和应用该问题。 背包问题是一种经典的优化问题。有的时候我们需要将有一堆不同重量或者体积的物品放入背包,但是背包容量

    2024年02月09日
    浏览(45)
  • 贪心算法解决多机调度问题

    一、问题描述         设有N个独立的作业{1,2,...,n},由M台相同的机器进行加工处理。作业i所需时间为Ti.约定:任何作业可以在任何一台机器上加工,处理单位完工前不允许中断处理,人和作业不能拆分成更小的作业 。要求给出一种作业调度方案,使所给的N个作业,在尽可能

    2024年02月11日
    浏览(33)
  • 【算法日志】贪心算法刷题:重叠区问题(day31)

    目录 前言 无重叠区间(筛选区间) 划分字母区间(切割区间)  合并区间 今日的重点是掌握重叠区问题。

    2024年02月12日
    浏览(42)
  • 贪心算法在找零问题中的应用

    找零问题是一个经典的优化问题,其目标是用最少的硬币找零给定的金额。贪心算法是解决这类问题的一种常用方法,其核心思想是在每一步选择中都采取最好或最优(即最有利)的选择,从而希望能够导致全局的最好或最优的解。在找零问题中,贪心算法的策略通常是根据

    2024年04月23日
    浏览(31)
  • c++—0/1背包问题--贪心算法(详解)

    贪心算法的基本思想 •贪心算法的特点是每个阶段所作的选择都是局部最优的,它期望通过所作的局部最优选择产生出一个全局最优解。 贪心与动态规划: 与动态规划不同的是,贪心是 鼠目寸光 ; 动态规划是 统揽全局 。 贪心:每个阶段产生的都是局部最优解 贪心算法的

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包