P1223 排队接水

博客围绕P1223排队接水问题,介绍了一种巧妙存数据方式。针对不想用结构体进行快排的同学,因n<=1000,将每个ti乘以1001再加上当前序号,既保证排序时序号不干扰,又便于输出序号和时间,还给出了具体代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

P1223 排队接水
有一个巧妙的存数据方式来输出排序之后编号的顺序

(针对快排懒得用结构体的同学)

因为n<=1000

所以给每个ti都*1001,在加上当前序号

可以保证排序的时候序号不干扰排序

又可以方便输出序号(只需mod1001输出序号,/1001 输出时间)

具体代码如下

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
double sum;
long int n;
long long int t[1001];
double ans;
int main(int argc, const char * argv[])
{
    cin>>n;
    int x;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        t[i]=x*1001+i;
    }
    sort(t+1,t+1+n);
    for(int j=1;j<=n;j++)
    {
        cout<<t[j]%1001<<" ";
        sum+=t[j]/1001*(n-j);
    }
    cout<<endl;
    ans=sum/n;
    printf("%0.2lf",ans);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值