hdu 5182 PM2.5

本文提出了一种改进的PM2.5排序方法,通过比较两次测量值的差值来评估空气质量的变化,并提供了一个具体的C++代码实现。

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

问题描述
目前,我们用PM2.5的含量来描述空气质量的好坏。一个城市的PM2.5含量越低,它的空气质量就越好。所以我们经常按照PM2.5的含量从小到大对城市排序。一些时候某个城市的排名可能上升,但是他的PM2.5的含量也上升了。这就意味着他的空气质量并没有改善。所以这样的排序方式是不合理的。为了使得排序合理,我们提出了一个新的排序方法。我们按照两个PM2.5含量测量的差值(第一次-第二次)来对他们按降序排序,如果有重复,按照第二次的测量值升序排序,如果还有重复,按照输入的顺序排序。
输入描述
多组测试数据(大概100100组),每一组测试数据第一行先给出一个整数nn,代表有nn个城市需要被排序。城市被从00到n-1n1标号。接下来nn行,每一含有两个整数代表每一个城市第一次和第二次被测量的PM2.5值。第ii行描述城市i-1i1的信息。
请处理到文件末尾。
[参数说明]
所有整数都在[1,100][1,100]的范围内。
输出描述
对于每一个数据,输出排好序之后的城市ID。
输入样例
2
100 1
1 2
3
100 50
3 4
1 2
输出样例
0 1
0 2 1

建立结构体,按建立排序方式
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct node
{
    int value,test,id;
    bool operator < (const node &another) const
    {
        if(value!=another.value) return value>another.value;
        if(test!=another.test)   return test<another.test;
        return id<another.id;
    }
}a[111];
int main()
{
    int n,u,v;
    while(~scanf("%d",&n))
    {
        for(int i=0;i<n;i++)
        {
            scanf("%d%d",&u,&v);
            a[i].value=u-v;
            a[i].test=v;
            a[i].id=i;
        }
        sort(a,a+n);
        for(int i=0;i<n;i++)
        {
            if(i) printf(" ");
            printf("%d",a[i].id);
        }
        puts("");
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/zsyacm666666/p/5388941.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值