当前位置: 首页 > article >正文

算法-多条件排序

 1、数对排序的使用

pair<ll,ll> a[31];//cmp为比较规则
ll cmp(pair<ll,ll>a,pair<ll,ll>b){if(a.first!=b.first)return a.first>b.first;else return a.second<b.second;
}//按照比较规则进行排序
sort(a+1,a+31,cmp);

 2、具体例题

 输入样例:

3
1 1
2 2
9 3
6 4
7 5
11 6
3 7
13 8
8 9
16 10
4 11
19 12
17 13
5 14
12 15
15 16
14 17
10 18
20 19
18 20
5 11
10 12
30 13
22 14
1 1
28 20
21 16
26 17
2 2
24 3
4 4
29 5
8 6
7 15
6 7
3 8
9 9
25 10
23 19
27 18
19 20
26 19
27 18
18 17
21 16
12 15
28 14
20 13
17 12
14 11
13 10
23 9
29 8
22 7
30 6
15 5
24 4
25 3
16 2
11 1

输出样例:

1 50
2 42
11 39
24 34
16 31
6 29
9 29
25 28
29 27
3 25
4 25
8 25
13 22
30 21
7 20
15 19
22 19
5 15
17 15
14 12
23 12
10 10
12 10
19 8
20 8
21 8
28 6
26 4
27 4
18 3

 思路:分数不同,按分数降序排列;分数相同,按编号升序排列。

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
pair<ll,ll> a[31];
bool vis[31];
ll cmp(pair<ll,ll>a,pair<ll,ll>b){if(a.first!=b.first)return a.first>b.first;else return a.second<b.second;
}
int main(){ll n;cin>>n;for(ll i=1;i<=30;i++){a[i].first=0;//分数a[i].second=i;//编号}memset(vis,false,sizeof(vis));ll b[21]={0,25,21,18,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0};while(n--){for(ll i=1;i<=20;i++){ll c,p;cin>>c>>p;a[c].first+=b[p];vis[c]=true;}}sort(a+1,a+31,cmp);for(ll i=1;i<=30;i++){if(vis[a[i].second]){cout<<a[i].second<<" "<<a[i].first<<endl;}}
}

http://www.lryc.cn/news/2404182.html

相关文章:

  • DelayQueue、ScheduledThreadPoolExecutor 和 PriorityBlockingQueue :怎么利用堆实现定时任务
  • Kafka 消息模式实战:从简单队列到流处理(二)
  • 大数据(2) 大数据处理架构Hadoop
  • 【Kotlin】注解反射扩展
  • 固定ip和非固定ip的区别是什么?如何固定ip地址
  • 升级centos 7.9内核到 5.4.x
  • Nginx 安全设置配置
  • 协程的常用阻塞函数
  • 探索NoSQL注入的奥秘:如何消除MongoDB查询中的前置与后置条件
  • 使用矩阵乘法+线段树解决区间历史和问题的一种通用解法
  • React Navive初识
  • scss(sass)中 的使用说明
  • 如何从浏览器中导出网站证书
  • 低功耗MQTT物联网架构Java实现揭秘
  • 总结HTML中的文本标签
  • python版若依框架开发:前端开发规范
  • AI推理服务的高可用架构设计
  • GPU集群故障分析:大型AI训练中的硬件问题与影响
  • ideal2022.3.1版本编译项目报java: OutOfMemoryError: insufficient memory
  • centos7编译安装LNMP架构
  • 接口限频算法:漏桶算法、令牌桶算法、滑动窗口算法
  • Spring Boot 3.3 + MyBatis 基础教程:从入门到实践
  • 征文投稿:如何写一份实用的技术文档?——以软件配置为例
  • 【后端】RPC
  • 详细讲解Flutter GetX的使用
  • ReLU 新生:从死亡困境到强势回归
  • tensorflow image_dataset_from_directory 训练数据集构建
  • QuickJS 如何发送一封邮件 ?
  • clickhouse 和 influxdb 选型
  • GOOUUU ESP32-S3-CAM 果云科技开发板开发指南(一)(超详细!)Vscode+espidf 通过摄像头拍摄照片并存取到SD卡中,文末附源码