洛谷 P1223 排队接水

贪心算法实战:用C++解决排队接水问题(附洛谷P1223题解) 本文通过C++实现贪心算法解决排队接水问题,详细解析了洛谷P1223题解。内容包括贪心策略证明、数据结构设计、稳定排序实现及性能优化,帮助读者掌握贪心算法在调度优化中的应用。 阅读详情

P1223 排队接水

题目链接:https://www.luogu.org/problemnew/show/P1223

题目描述

有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。

输入输出格式

输入格式:

输入文件共两行,第一行为n;第二行分别表示第1个人到第n个人每人的接水时间T1,T2,…,Tn,每个数据之间有1个空格。

输出格式:

输出文件有两行,第一行为一种排队顺序,即1到n的一种排列;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。

输入输出样例

输入样例#1: 
10 
56 12 1 99 1000 234 33 55 99 812
输出样例#1: 
3 2 7 8 1 4 9 6 10 5
291.90


说明

n<=1000

ti<=1e6,不保证ti不重复

当ti重复时,按照输入顺序即可(sort是可以的)

题解:直接排序模拟即可,主要类型转换。

AC代码:

#include<cstdio>
#include<algorithm>
using namespace std;
#define _for(i,a,b) for(int i=a;i<=b;i++)
const int maxn = 1007;
int n;
long long sum;
struct node
{
    int inx,val;
}a[maxn];
bool cmp(node x,node y)
{
    return x.val<y.val;
}
int main()
{
    scanf("%d",&n);
    _for(i,1,n)
    {
        int x;
        scanf("%d",&x);
        a[i].val = x;
        a[i].inx = i;
    }
    sort(a+1,a+1+n,cmp);
    int num = n-1;
    _for(i,1,n)printf("%d ",a[i].inx);
    printf("\n");
    _for(i,1,n-1)
    {
        sum+=num*a[i].val;
        num--;
    }
    double ans = (double)sum/(double)n;
    printf("%.2f\n",ans);
    return 0;
}

题解:洛谷 P1223 排队接水 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。输出文件有两行,第一行为一种平均时间最短的排队顺序;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。个人在一个水龙头前排队接水,假如每个人接水的时间为。个人排队的一种顺序,使得。个人的平均等待时间最小。本文分享的必刷题目是从。#普及-# #贪心# 阅读详情

相关推荐

LVGL 离线字体转换lv_font_conv本地安装

LVGL FONT CONV 离线版本

liu132641的专栏 3387

水龙头排队接水问题(贪心算法)

有 n 个人在一个水龙头前排队接水,假如每个人接水的时间为 Ti​,请找出这 n 个人排队的顺序,使得 n 个人的平均等待时间最小。

stenpen的博客 1619

STM32实战:5分钟搞定CanFestival协议栈下的CANopen心跳报文配置(附避坑指南)

本文详细介绍了如何在STM32平台上使用CanFestival协议栈快速配置CANopen心跳报文,包括硬件准备、协议栈移植、心跳报文配置及常见问题解决方案。通过实战步骤和避坑指南,帮助开发者高效实现节点状态监控,提升工业控制系统的可靠性。

win55的博客 747

接水问题(信息学奥赛一本通-T1233)

【题目描述】 学校里有一个水房,水房里一共装有m个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。 现在有n名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1到n编号,i号同学的接水量为wi。接水开始时,1到m号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学j完成其接水量要求wj后,下一名排队等候接水的同学k马上接替j同学的位置开始接水。这个换人的过程是...

Alex_McAvoy的博客 6047

大红球预警版-精选+自定义板块监控

这是一款简单易用的股票大单资金监控插件,兼容通达信软件,可嵌入分时图或定制版面。它以红绿圆球直观显示主力买卖情况(红球为买,绿球为卖),支持300万以上大单语音播报。插件提供实时资金流向分析、多股同时监控、自定义预警条件等功能,无需L2账号。用户可自由切换图形/列表模式,监控特定板块,并配合幻影软件实现自动交易。虽然上涨股通常红球占优,但需结合其他指标综合判断。该插件完全免费,包含详细视频教程,适合新手使用。

guleba的博客 1795

Flutter 直接调用so动态库,或调用C/C++源文件内函数

我把 .so 文件尝试放过好几个目录/lib/,最终都会报这个错误,现在才知道库文件需要放在你根本想象不到的地方!!!尝试了一些方法还是不行后我放弃了 ffi,想着用 Flutter 的 MethodChannel 桥接 android/ios 原生,再让原生去调 native 层。一顿操作把Android端的搞定了,当然中间涉及到 Kotlin和C++ 层的数据类型映射的痛苦,而且业务函数也不像一个 helloworld 那么简单,别提有多痛苦了。

开发以大橘为重 8352

排队接水(贪心算法)

洛谷题单贪心算法

捉只树袋熊的博客 1918

SSE(Server-Sent Events)完整使用示例

本篇使用Node.js 作为服务端,在浏览器客户端演示SSE的完整实例和演示。实现了一个基于 Server-Sent Events (SSE) 的实时数据推送功能。

oscar999的专栏 750

ZCMU--5253: 排队接水

有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。输入共两行,第一行为n;第二行输入n个数字,表示第1个人到第n个人每人的接水时间T1,T2,……,Tn,每个数据之间有1个空格。输出有两行,第一行为一种排队顺序,第i个数字代表第i个接水人的编号,行末不能有多余空格,即1到n的一种排列;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。注意:输出排序时,当两人接水时间一样时,需要让编号小的人在前。1056 12 1

小小小Why的博客 1125

基于STM32+4G模块设计的智能灌溉系统

当前智能灌溉系统分为三个部分:温湿度采集部分、灌溉系统部分、OneNet云平台。 灌溉系统部分增加刷卡功能,用户可以通过IC卡刷卡将金额刷到灌溉系统设备里,灌溉系统设备里会记录金额,并且在手机可视化页面上会显示当前的设备金额。 金额会随着时间进行递减,按分钟计费,如果计费到0,就无法启动灌溉,需要重新充值金额才能继续。

4514

大模型系列——Ollama简明教程

在这篇文章中,我们将了解如何使用 Ollama、如何在 Ollama 中创建自己的模型 以及如何使用 Ollama 构建聊天机器人。这是深入研究 Ollama 的第一部分,以及我所学到的有关本地 LLM 的知识以及如何将它们用于基于推理的应用程序。在这篇文章中,你将了解——

2401_84052244的博客 1万+

贪心算法5: P1223排队接水

题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。 输入输出格式 输入格式:  输入文件共两行,第一行为n;第二行分别表示第1个人到第n个人每人的接水时间T1,T2,…,Tn,每个数据之间有1个空格。 输出格式:  输出文件有两行,第一行为一种排队顺序,即1到n的一种排列;第二行为这种排列方案下的平均等待时...

yanyanwenmeng的博客 7964

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

洛谷 P1223 排队接水 题解

题目详细:P1223 排队接水 贪心算法解决 寻求最优解,让平均等待时间最短 排序为什么要从小排到大呢? 因为!! 首先做个数学假设, 一个队列任意两个相邻的元素a,b 设a的打水时间Ti1< b的打水时间Ti2 如果a排在b前面,则排队总时间为T1=Ti1 如果b排在a前面,则排队总时间为T2=Ti2 T1 < T2 则a排在b前面 排队时间最短,也就是说明,打水时间越短的排在越前...

weixin_44271578的博客 897

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

洛谷【算法1-5】贪心 ——P1223 排队接水

1.结构体 Person:存储每个人的编号 id 和接水时间 time。2.排序规则:按 time 升序排列,让接水时间短的人优先。3.等待时间计算:- current_sum 记录前面所有人的接水时间之和。- total_wait 累加每个人的等待时间(即 current_sum)。4.输出:- 第一行:按排序后的顺序输出编号。- 第二行:计算平均等待时间 total_wait / n,保留两位小数。

apple_51927114的博客 1394

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

洛谷P1223 排队接水(贪心问题)Java

洛谷P1223 排队接水(贪心问题)Java 输入样例: 10 56 12 1 99 1000 234 33 55 99 812 输出样例: 3 2 7 8 1 4 9 6 10 5 291.90 这道题的目标是要得到最小平均等待时间, 1.总的等待时间=所有人各自的打水时间(T1+T2+…+Tn)+每个人等待前面人打完水的时间之和(0+(T1)+(T1+T2)+…+(T1+T2+…+Tn))...

qq_41904773的博客 762

洛谷贪心算法题单 其一 P1223 排队接水

贪心算法 - 洛谷贪心算法题单 其一 P1223 排队接水

仟墨(郑龙浩)的博客 1167

信息学奥赛一本通 1319:【例6.1】排队接水 | 洛谷 P1223 排队接水

【题目链接】 ybt 1319:【例6.1】排队接水 洛谷 P1223 排队接水 【题目考点】 1. 贪心 2. 贪心选择性质的证明 要想证明贪心选择可以得到最优解,只需要证明最优解包含每一次的贪心选择。 使用数学归纳法: 证明最优解包含第一次的贪心选择 假设存在最优解包含前k次的贪心选择,证明该最优解包含第k+1次的贪心选择 【解题思路】 1. 证明贪心选择性质 贪心选择:每次选择接水时间最短的人去接水 贪心选择性质的证明: 设n个人的编号为1,2,3,…,n 证明:存在最优解,第一个接水的人是通过

君义NOIP的博客 9211

洛谷 P1223:排队接水 ← 贪心算法

​本题可视为升级版的排队打水问题 设 x 和 y 是任意选取的两个人的打水时间,且 x

hnjzsyjyj的专栏 875

洛谷:P1223 排队接水

有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti​,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。

qq_74924951的博客 512

洛谷P1223 排队接水java

将人员按接水时间排序:1, 12, 33, 55, 56, 99, 99, 234, 812, 1000。这种排序方式可以确保总等待时间最小,因为让接水时间短的人先接水,可以减少后面人的等待时间。计算每个人的等待时间(前面所有人的接水时间之和)每个人的等待时间是前面所有人的接水时间之和。第4人(55): 等待1+12+33=46。表示接水的人,包含编号和接水时间两个属性。第3人(33): 等待1+12=13。对人员数组按照接水时间从小到大排序。第2人(12): 等待1。第1人(1): 等待0。

2302_80585812的博客 282

洛谷 P1223 排队接水 2022 01 29(C++)

题目来源: 记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/record/68319146 题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti​,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。 输入格式 第一行为一个整数n。 第二行n个整数,第i个整数 Ti​表示第i个人的等待时间Ti​。 输出格式 输出文件有两行,第一行为一种平均时间最短的排队顺序...

a13923919842的博客 817

【题解】洛谷P1223排队接水 贪心

题目链接 #include&amp;lt;cstdio&amp;gt; struct node{ int id,t; }q[2000],temp; int main(){ //freopen(&quot;in.txt&quot;,&quot;r&quot;,stdin); int n,i,j; long long sum=0; scanf(&quot;%d&quot;,&amp;amp;n);

翻过这座山,他们就会听到你的故事 515

洛谷P1223 排队接水

有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti​,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。

夜深人静写代码 595
上一篇: P1181 数列分段Section I
下一篇: 洛谷 P1094 纪念品分组
sortmin
博客等级 码龄9年 45粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值