排队打水问题

贪心算法动态规划-排队打水、导弹问题、活动选择 排水打水问题 有n个人排队到r个水龙头去打水,他们装满水桶的时间t1,t2,…,tn为整数且各不相等,应如何安排他们的打水顺序才能使他们花费的总时间最少? 每个人打水的时间 = 排队的时间 + 实际打水的时间,本题假设一个人打好水,排在他后面的人接着打水的这个切换过程不消耗时间。 比如,有2个人A和B,他们打水的时间分别是3和2,只有1个水龙头,这时,如果A先打水,B后打水,那么A和B打水的时间分别为3、3+2(B排队3分钟)。 因此,所有人打水的总时间就是每个人的打水时间及每个人的排队时间的总和。 输入格 阅读详情

 


/*
【杂题】:排队打水问题(normal)
http://mail.bashu.cn:8080/JudgeOnline/showproblem?problem_id=1002
Time Limit:1000MS  Memory Limit:65536K
Total Submit:495 Accepted:170 

Description 

有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2………..tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少?

Input 

第一行n,r (n<=500,r<=75) 
第二行为n个人打水所用的时间Ti (Ti<=100); 


Output 

最少的花费时间

Sample Input 


3 2
1 2 3

Sample Output 


7

Source 

xinyue

*/
    #include 
<stdio.h>
    
    
#define MAXN 1001
    
#define MAXR 101
    
    
int main(void)
    {
        
int n,r,time=0,max;
        
int mt[MAXN]={0},mr[MAXR]={0};
        
int i,j,k,temp;
        scanf(
"%d %d",&n,&r) ;
        
for(i=1 ; i<= n ; i++)
        scanf(
"%d",&mt[i]) ;
        
        
if ( n <= r) /*特殊情况处理*/
        {
             
for(i=1 ; i<= n ; i++)
             time 
+= mt[i] ;
             printf(
"%d ",time);
             
return 0 ;
        }
        
        
for(i=1 ; i< n ; i++)  /*排序*/
        
for(j=i+1 ; j<= n ; j++)
        
if (mt[j] < mt[i])
        {
                  temp 
= mt[j] ;
                  mt[j] 
= mt[i];
                  mt[i] 
= temp ;
        }
       
        max 
= (n/r)*r ;
        
        
for(i=1 ; i<= max; i += r) /*分组处理,贪心分组,因为具有这种性质*/
        {
                
for(j=1,k=i ; j<=r ; j++,k++)
                {
                   mr[j] 
+= mt[k] ;
                   time 
+= mr[j] ;
                }
        }
        
        
for(j=1,k=max+1; k <= n ; j++,k++)
        {
           mr[j]
+= mt[k] ;
           time 
+= mr[j] ;
        }
        
        printf(
"%d ",time);
 
         
        
        
return 0 ;
    }
XYNU 1248 排队打水问题(water)—贪心算法 欢迎访问XYNUOJ 1248: 排队打水问题(water) 时间限制: 1 Sec  内存限制: 128 MB 提交: 27  解决: 6 [提交][状态][讨论版][Edit] [TestData] 题目描述 有n个人排队到m个水龙头去打水,他们装满水桶的时间t1, t2 , ……, tn为整数且各不相同,应如何安排他们的打水顺序才能使他们花费的总时间最少?  只有 阅读详情

相关推荐

EVM算法的Python实现

EVM(Eulerian Video Magnification,欧拉视频放大或欧拉影像放大)是一种将视频中的微小变化进行放大的算法,正如论文标题所说《Eulerian Video Magnification for Revealing Subtle Changes in the World》,该算法可以将视频中的微小变化转变为肉眼可以

flyingzhao 1万+

排队打水问题(贪心)

问题描述   有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2………..tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少? 输入格式   第一行n,r (n   第二行为n个人打水所用的时间Ti (Ti 输出格式   最少的花费时间 样例输入 3 2 1 2 3 样例输出 7 数据规模和约定其中80%的数据保证n 解析:要

轩邈 7079

保姆级避坑指南:用Docker在Ubuntu 22.04上部署Isaac Sim 5.1.0,搞定宇树G1仿真环境

本文提供了一份详细的保姆级避坑指南,帮助用户在Ubuntu 22.04上通过Docker部署Isaac Sim 5.1.0,并成功搭建宇树G1仿真环境。文章涵盖了环境准备、Docker与NVIDIA容器工具包的配置、Isaac Sim镜像的定制化拉取与配置,以及宇树G1仿真环境的实战调试,旨在帮助开发者高效解决部署过程中的常见问题。

weixin_33728268的博客 207

排队打水问题 贪心

题目链接 问题描述   有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2………..tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少? 分析:贪心。每次将剩下接水花费时间最短的人排在等待时间最短的水龙头上,每一次加入一个人的时候水龙头的等待时间延长,需要重新排序。总的时间复杂度O(nlogr)其实也可以用优先队列优化,但是数据量不大,不优化也行 方...

Nicolas的博客 1928

基于PLC的茶叶揉捻机自动控制系统设计【附代码】

茶叶揉捻是初茶加工过程中的一道关键工序,通过揉捻可以使鲜茶叶成条、碎茶及叶组织细胞破损等。影响茶叶成条率、碎茶率和叶组织细胞破损的主要因素包括揉捻时间、压力和揉捻桶转速。为了提高茶叶品质的稳定性和减轻工人的劳动强度,本文提出了一种基于PLC自动控制技术的茶叶揉捻机控制系统设计。📊 PLC自动化设计 | 毕业设计指导 | 工业自动化解决方案。✅ 具体问题可以私信或查看文章底部二维码。✅ 感恩科研路上每一位志同道合的伙伴!

lagougongzuoshi的博客 1341

游戏开发实战:5种AOI算法对比(九宫格 vs 灯塔 vs 十字链表)

本文深入对比了游戏开发中五种主流AOI算法(九宫格、灯塔、十字链表等)的性能与适用场景,帮助开发者根据项目规模选择最优解决方案。通过详细的技术分析和实战数据,揭示不同算法在万人同屏等极端场景下的表现差异,为MMORPG等大型多人在线游戏提供关键性能优化指南。

weixin_29268385的博客 474

排队打水问题——贪心

问题描述 有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2………..tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少?输入格式 第一行n,r (n&lt;=500,r&lt;=75) 第二行为n个人打水所用的时间Ti (Ti&lt;=100);输出格式 最少的花费时间样例输入 3 2 1 2 3样例输出 7 思路:这道题关键就是理解题意 这道题最后要求 ...

小七的博客 5179

NLM去噪算法:原理、优化与医学图像处理实战

本文深入解析NLM去噪算法的核心原理及其在医学图像处理中的优化应用。通过全局自相似性计算,NLM算法有效抑制噪声并保留细节,特别适用于超声图像斑点噪声处理。文章还介绍了积分图像和傅里叶变换等优化技巧,显著提升计算效率,并分享医学影像项目中的实用调参经验。

weixin_29051149的博客 344

Java实现 蓝桥杯VIP 算法提高 排队打水问题

算法提高 排队打水问题 时间限制:1.0s 内存限制:256.0MB 问题描述   有n个人排队到r个水龙头去打水,他们...

Marcus 3528

数学建模小白必看:层次分析法(AHP)从入门到实战(附Python代码)

本文详细介绍了层次分析法(AHP)在数学建模竞赛中的应用,从构建判断矩阵到一致性检验,再到权重计算和实战案例。通过Python代码实现,帮助小白快速掌握AHP的核心技巧,解决评价类难题,提升建模效率。

web39explorer的博客 918

Java电商秒杀系统性能优化(一)——电商秒杀系统框架回顾

电商秒杀系统框架回顾项目简介外部依赖框架回顾项目要点项目中存在的问题小结 课程是免费的,课程地址如下:SpringBoot搭建电商秒杀项目,课程真的很棒,作者的思路很清晰,建议各位读者可以跟着视频练习一下这个项目; 项目简介 通过SpringBoot快速搭建的前后端分离的电商基础秒杀项目。项目通过应用领域驱动型的分层模型设计方式去完成:用户otp注册、登陆、查看、商品列表、进入商品详情以及倒计时秒...

ghw15221836342的博客 3718

19 排队打水问题

19 排队打水问题 作者: Turbo时间限制: 1S章节: 其它 问题描述 : 有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2…………tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少? 输入说明 : 第一行n,r (n<=500,r<=75)   第二行为n个人打水所用的时间Ti (Ti<=100); 输出说明 : 最少的花费时间 输入范...

内在的天空 627

LVDS接口总结--(0)LVDS硬件电路接口

xilinx LVDS接口硬件总结

zidan1412的博客 9715

排队打水问题(water)

题目描述 有n个人排队到m个水龙头去打水,他们装满水桶的时间t1, t2 , ……, tn为整数且各不相同,应如何安排他们的打水顺序才能使他们花费的总时间最少?  只有一组输入数据哦。 输入 4 2 ( n m ) 2 6 4 5 (t1 t2 …… tn)   输出 23(所有人的花费时间总和) 样例输入 4 2 2 6 4 5 样例输出 23 代码: ...

一个和代码打交道の小孩 2883

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

蓝桥杯 算法提高 排队打水问题 Python

蓝桥杯 算法提高 排队打水问题 Python 贪心算法 有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2………..tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少?

离暑假还有41天的博客 1402

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

2796: 【基础】排队打水问题

2796: 【基础】排队打水问题 时间限制: 1 Sec 内存限制: 32 MB 提交: 849 解决: 457 [提交] [状态] [讨论版] [命题人:ghost79] 题目描述 有n个人排队到r个水龙头去打水,他们装满水桶的时间t1,t2,...,tn为整数且各不相等,应如何安排他们的打水顺序才能使他们花费的时间最少? 输入 第1行,两个整数n(1<=n<=500)和r(1...

做一只熊猫不好吗? 620

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

[蓝桥杯][算法提高][vip] 排队打水问题

蓝桥杯 ADV-148 算法提高 排队打水问题(贪心) 问题描述   有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2…………tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少? 输入格式   第一行n,r (n&amp;lt;=500,r&amp;lt;=75)   第二行为n个人打水所用的时间Ti (Ti&amp;lt;=100); 输出格式   最少的花费时间 样例输入 3 2 ...

cp0328的博客 3882

贪心算法——排队打水问题

*/6.3 排队打水问题:有n个人排队到r个水龙头去打水,他们装满水桶的时间为t1,t2,…,tn为正整数且个不相等。 应如何安排他们打水顺序才能使他们花费的时间最少。 算法分析:时间总和=等待时间+装水时间。采用贪心思想。先sort(),默认将装水时间从小到大排序。 n个人,r个水龙头,可以以水龙头为序将队伍序分割成n/r个小组,每小组的成员分别对应r个位置。 实际上就是将人依序分成r个小队打水...

yutian74的博客 6496

1228. 排队打水问题

问题描述有 n 个人排队到 r 个水龙头去打水,他们装满水桶的时间 t_1,t_2,...,t_n 为整数且各不相等,应如何安排他们的打水顺序才能使他们花费的总时间最少?每个人打水的时间 = 排队的时间 + 实际打水的时间,本题假设一个人打好水,排在他后面的人接着打水的这个切换过程不消耗时间。比如,有 2 个人 A 和 B ,他们打水的时间分别是 3 和 2 ,只有 1 个水龙头,这时,如果 A 先打水,B 后打水,那么 A和 B 打水的时间分别为 3 、3+2( B 排队 3 分钟)。

chenminggui123的博客 334
上一篇: 合唱队形(NOIP原题)
下一篇: 方形问题(数方形)
oopos
博客等级 码龄19年 21粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值