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

相关推荐

SpringBoot实现电子发票生成

电子发票是近年来比较流行的一种票据形式,它取代了以往传统的纸质发票,具有减少纸张浪费、方便有效查验等优点。本文将介绍如何使用Spring Boot和Vue.js构建一个仿真电子发票生成应用程序,借助微信二维码扫描功能和第三方库,实现用户扫描二维码获取发票信息并填写相关开票信息,最后生成电子发票。在本文中,我们介绍了如何使用Spring Boot和Vue.js构建一个仿真电子发票生成应用程序,借助微信二维码扫描功能和第三方库,实现用户扫描二维码获取发票信息并填写相关开票信息,最后生成电子发票。

不愧是暮言的博客 6093

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

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

stenpen的博客 1619

新能源充电桩充电枪口标准

建立的标准确保了新能源汽车充电的安全性、兼容性和效率,促进了新能源汽车产业的发展。

网络安全的研究者、新能源行业的追求者 4689

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

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

Alex_McAvoy的博客 6047

MAX31856高精度热电偶测温系统实战:从寄存器配置到温度读取

本文详细介绍了MAX31856高精度热电偶测温系统的实战应用。从硬件连接避坑、核心寄存器配置(如CR0、CR1),到利用中断高效读取并解析温度数据,提供了完整的驱动框架和代码示例。该方案解决了传统热电偶信号微弱、非线性及冷端补偿难题,适用于工业测温等场景,帮助开发者快速实现稳定可靠的高精度温度测量。

coffee的博客 486

零代码做游戏:AI辅助开发HTML5网页小游戏从创意到发布全流程

在软件开发领域,自然语言编程正成为一种新兴的人机协作方式,而AI辅助开发则是其最典型的落地形态。它让开发者无需精通语法,只需用清晰的语言描述游戏规则与交互逻辑,AI便能自动生成可运行的代码。这种模式大幅降低了编程门槛,尤其适合快速验证创意、制作原型。对于HTML5网页游戏而言,借助AI生成单个HTML文件,配合在线运行环境,即可在浏览器中直接试玩、迭代与分享。无论是产品经理验证玩法、运营人员制作互动小游戏,还是教育者设计课堂闯关,都能通过自然语言描述需求,让AI完成代码实现与报错修复。本文完整记录了一个“接

weixin_31497453的博客 333

排队接水(贪心算法)

洛谷题单贪心算法

捉只树袋熊的博客 1918

VOLTE信令流程-IMS注册篇(五)

目录 VOLTE信令流程-IMS 注册 VOLTE信令流程-IMS 注册/注销 VOLTE信令流程-VoLTE呼叫流程 VoLTE-VoLTE VoLTE-CS CS-VoLTE CS-CS VOLTE信令流程 VOLTE信令流程-VOLTE-VOLTE信令 VOLTE信令流程-INVITE详细信息 VOLTE信令流程-eSRVCC信令流程 VOLTE信令流程-IP短信 VOLTE信令流程-IMS 注册 IMS注册流程简述  获取鉴权向量 IMS用户将注...

gender123的博客 2万+

ZCMU--5253: 排队接水

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

小小小Why的博客 1125

MID360+fastlio功能笔记

前言。

qq_35598561的博客 5302

1、Ka频段双极化低剖面卫通相控阵天线

设计了双馈口叠层十字缝隙耦合天线,采用“双线极化天线 +旋转馈电 + 移相控制”架构,采用双馈口的叠层十字缝隙耦合天线,并以 2 x2 阵列为主体,旋转排布实现二次圆极化,同时极化可切换,通过多层 PCB 工艺实现天线层、控制/电源层功分网终层、芯片层一体化集成,研制出 64 阵元的圆极化可切换发射天线,测试结果表明:天线工作 频段为 27.5 ~31 GHz,可实现60°扫描,法向轴比

qq_43416206的博客 4370

贪心算法5: P1223排队接水

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

yanyanwenmeng的博客 7964

黑猫带你学UFS协议第8篇:UFS电气特性详解(Power、CLK、Reset等)

UFS强制支持secure mode。UFS设备可能会存储个人或者公司的信息,UFS提供把数据永久从设备上移除的功能,并且保证对存储介质进行逆向恢复数据也恢复不回来原有数据。安全模式是以逻辑单元为单位进行应用的,不同的逻辑单元可以有不同的安全模式。由于UFS设备的存储介质不同,所以把数据安全从存储介质上移除方式会有不同,spec提供了三种通用的移除方法,UFS设备至少支持其中一种。● 对存储的位置进行一次擦除操作。● 对存储的位置使用单一字符(比如0xAA)覆盖写,然后进行擦除。.........

黑猫奥利奥的博客 4076

洛谷 P1223 排队接水 题解

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

weixin_44271578的博客 897

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

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

apple_51927114的博客 1394

VC中sqlite的使用

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

洛谷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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

洛谷贪心算法题单 其一 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、付费专栏及课程。

余额充值