ToB企服应用市场:ToB评测及商务社交产业平台

标题: 洛谷P1223 列队接水 [打印本页]

作者: 鼠扑    时间: 2024-8-5 16:32
标题: 洛谷P1223 列队接水
P1223 列队接水

题目描述

有 \(n\) 个人在一个水龙头前列队接水,假如每个人接水的时间为 \(T_i\),请编程找出这 \(n\) 个人列队的一种序次,使得 \(n\) 个人的平均等候时间最小。
输入格式

第一行为一个整数 \(n\)。
第二行 \(n\) 个整数,第 \(i\) 个整数 \(T_i\) 表现第 \(i\) 个人的接水时间 \(T_i\)。
输出格式

输出文件有两行,第一行为一种平均时间最短的列队序次;第二行为这种分列方案下的平均等候时间(输出结果精确到小数点后两位)。
样例 #1

样例输入 #1
  1. 10
  2. 56 12 1 99 1000 234 33 55 99 812
复制代码
样例输出 #1
  1. 3 2 7 8 1 4 9 6 10 5
  2. 291.90
复制代码
提示

\(1\le n \leq 1000\),\(1\le t_i \leq 10^6\),不包管 \(t_i\) 不重复。
思路:

证明策略的可行性


代码:

[code]#include#includeusing namespace std;struct people {        int t;        int id;}a[1005];//按接水时间来升序分列bool compare(people& a, people& b) {        return a.t < b.t;}int n;int main(){        cin >> n;        for (int i = 1; i > a.t;                a.id = i;        }        sort(a + 1, a + 1 + n, compare);        for (int i = 1; i




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4