C++ 排队接水


一、题目描述

排队接水

题目描述

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

输入格式

第一行为一个整数 n n n

第二行 n n n 个整数,第 i i i 个整数 T i T_i Ti 表示第 i i i 个人的接水时间 T i T_i Ti

输出格式

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

样例 #1

样例输入 #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

提示

1 ≤ n ≤ 1000 1\le n \leq 1000 1n1000 1 ≤ t i ≤ 1 0 6 1\le t_i \leq 10^6 1ti106,不保证 t i t_i ti 不重复。


二、参考代码

#include <bits/stdc++.h>
using namespace std;

class AC
{
public:
    int no;
    int T;
};

bool cmp(AC ac1, AC ac2)
{
    return ac1.T < ac2.T;
}

int main() {
    int sum;
    cin >> sum;
    AC* ac = new AC[1005];
    for (int i = 1; i <= sum; i++)
    {
        ac[i].no = i;
        cin >> ac[i].T;
    }
    sort(ac , ac + sum + 1, cmp);
    for (int i = 1; i <= sum; i++)
    {
        cout << ac[i].no << ' ';
    }
    cout << endl;
    double out = 0;
    for (int i = 1; i <= sum; i++)
    {
        out += (ac[i].T * ( sum - i ));
    }
    printf("%.2lf", out / (1.0 * sum));
    delete[]ac;
    return 0;
}

  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先,在 Qt 中使用 C++ 进行编程,需要在 Qt 项目中添加 C++ 类或文件。添加 C++ 类或文件的方法如下: 1. 在 Qt Creator 的“项目”视图中,右键单击您的项目,然后选择“添加新”。 2. 选择 C++ 文件或 C++ 类。 3. 输入文件名和路径,然后单击“下一步”。 4. 输入类的名称和继承类的名称(如果需要),然后单击“下一步”。 5. 如果需要,添加类定义中的任何其他选项。 6. 单击“完成”以添加文件或类。 接下来,您可以使用 Qt 中提供的信号和槽机制来连接 C++ 类或文件。信号和槽允许不同的对象之间进行通信,以响应事件和执行操作。 示例: 假设您有一个名为 MyCPlusPlusClass 的 C++ 类,其中包含一个名为 doSomething() 的函数。要将此函数连接到 Qt 窗口小部件的按钮单击事件上,您可以执行以下步骤: 1. 在 Qt Designer 中,将按钮拖动到窗口上。 2. 右键单击按钮,选择“转到槽”。 3. 在“转到槽”对话框中,选择“clicked()”。 4. 单击“确定”。 5. 在您的窗口类的头文件中,添加以下代码: ``` #include "MyCPlusPlusClass.h" ``` 6. 在您的窗口类的源文件中,添加以下代码: ``` MyCPlusPlusClass *myClass = new MyCPlusPlusClass(); connect(ui->myButton, SIGNAL(clicked()), myClass, SLOT(doSomething())); ``` 这将创建一个新实例 MyCPlusPlusClass,然后将其连接到按钮的 clicked() 信号上。当按钮被单击时,将调用 MyCPlusPlusClass 中的 doSomething() 函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z1Jxxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值