南阳oj-----一种排序(优先队列法)
-------------------------多重集合容器法此处为多重集合容器法------------------------------
一种排序
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);
1.按照编号从小到大排序
2.对于编号相等的长方形,按照长方形的长排序;
3.如果编号和长都相同,按照长方形的宽排序;
4.如果编号、长、宽都相同,就只保留一个长方形用于排序,删除多余的长方形;最后排好序按照指定格式显示所有的长方形;
输入
第一行有一个整数 0<n<10000,表示接下来有n组测试数据;
每一组第一行有一个整数 0<m<1000,表示有m个长方形;
接下来的m行,每一行有三个数 ,第一个数表示长方形的编号,
第二个和第三个数值大的表示长,数值小的表示宽,相等
说明这是一个正方形(数据约定长宽与编号都小于10000);
输出
顺序输出每组数据的所有符合条件的长方形的 编号 长 宽
样例输入
1
8
1 1 1
1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
2 1 2
2 2 1
样例输出
1 1 1
1 2 1
1 2 2
2 1 1
2 2 1
代码实现
#include<iostream>
#include<string>
#include<queue>
using namespace std;
struct Sqre{int id;int length;int width;bool operator <(const Sqre &a) const //重载排序方法{if(a.id!=id)return a.id<id;else if(a.length!=length)return a.length<length;elsereturn a.width<width;}};
int main()
{int n;;int m;int sqre_id;int sqre_length;int sqre_width;int t;priority_queue<Sqre> pq;Sqre x;cin>>n;while(n--){cin>>m;while(m--){cin>>sqre_id>>sqre_length>>sqre_width;if(sqre_length<sqre_width){t=sqre_length;sqre_length=sqre_width;sqre_width=t;}x.id=sqre_id;x.length=sqre_length;x.width=sqre_width;pq.push(x); //数据入队}while(!pq.empty()){if(sqre_id==pq.top().id&&sqre_length==pq.top().length&&sqre_width==pq.top().width)//判断是否与上一个出队元素相同pq.pop();//相同的话直接出队else{sqre_id=pq.top().id;sqre_length=pq.top().length;sqre_width=pq.top().width; //否则对3项数据重新赋值 cout<<pq.top().id<<" "<<pq.top().length<<" "<<pq.top().width<<endl;pq.pop();}}}return 0;
}
南阳oj-----一种排序(优先队列法)相关推荐
- C语言常用8种排序方法耗时测试
最近项目中用到排序算法,于是研究了一下常用的8种排序算法.由于是在8位单片机上使用,所以对内存和时间要求比较高,最好是不额外占空间,同时耗时较短.于是对常用的8中算法耗时做了个测试.通过LED的亮灭来 ...
- 常用的几种排序,卖菜的王婆已经学废了,你不来瞅瞅?
常用的八种排序 1.冒泡排序 2.插入排序 3.希尔排序 4.选择排序 5.堆排序 6.快速排序(重要) 7.归并排序(重要) 8.计数排序 各种排序方式的复杂度及稳定性比较 对一个数组进行排序你该不 ...
- 数据结构(三) 用java实现七种排序算法。
很多时候,听别人在讨论快速排序,选择排序,冒泡排序等,都觉得很牛逼,心想,卧槽,排序也分那么多种,就觉得别人很牛逼呀,其实不然,当我们自己去了解学习后发现,并没有想象中那么难,今天就一起总结一下各种排 ...
- 用中值排序基数法实现树状结构 (转)
在BBS的编写中,经常有人问怎样实现树状结构?一个比较不负责任的回答是:使用递归算法.当然,递归是一个可行的办法 (二叉树的历遍也好象只能使用递归算法),但对于BBS来说,这样做势必要进行大量的Sql ...
- 位图排序 大数据_干货分享:大话12种排序算法
干货分享:大话12种排序算法 常见的排序算法: 快速排序.堆排序.归并排序.选择排序 插入排序.二分插入排序 冒泡排序.鸡尾酒排序 桶排序.计数排序.基数排序.位图排序 技能点: 1.归并排序在O(N ...
- 基于FPGA的几种排序算法总结
目录 1 冒泡法和比较排序法 1.1 算法原理 1.2 仿真结果 1.3 算法优缺点 2 并行全比较排序法 2.1 算法原理 ...
- 10种排序算法基础总结
基于比较的排序: 基础排序: 冒泡排序:谁大谁上,每一轮都把最大的顶到天花板 效率太低--掌握swap. 选择排序:效率较低,但经常用它内部的循环方式来找最大值和最小值. 插入排序:虽然平均效率低, ...
- 郑州尚学堂:JAVA常用4种排序方法
JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 当然 程序中最简单的使用就是:快速排序和冒泡排序,插入排序的使用更具有技巧性,选择排序则过于复杂,冗杂 ...
- FPGA篇(三)基于FPGA的几种排序算法
目录 1 冒泡法和比较排序法 1.1 算法原理 1.2 仿真结果 1.3 算法优缺点 2 并行全比较排序法 2.1 算法原理 ...
- C语言十个字母用冒泡法排序,冒泡排序法(C语言) - osc_wq8j2a9a的个人空间 - OSCHINA - 中文开源技术交流社区...
常用的排序方法有冒泡排序法,选择排序法,插入排序法以及希尔排序法等.本文着重讲解如何利用C代码,实现冒泡排序. 首先,要了解什么是冒泡排序.冒泡排序是常用的一种排序方法,其基本方法就是逐次比较.即一次 ...
最新文章
- Numpy中数组间运算
- 第十三届光华工程科技奖公布,彭士禄、张伯礼、王海峰等40人及1个团体获奖
- 消息扩散(强连通分量)
- Python基础教程:上下文管理器 context manager(with...as...)
- 初识Docker-Docker的安装
- 【LiveVideoStack线上分享】WebAssembly在Web多媒体领域的相关实践
- virtualbox安装android6.0并设置分辨率为1920x1080x32
- ZetCode 杂项教程
- Linux+c语言结构体对齐,C语言中结构体struct的对齐问题解析
- AD20元件重叠绿色报错的解决方法,距离太近绿色报错
- 源码目录变了,修改Eclipse配置:工作空间,JDK
- SmartSvn遗漏.a文件的解决办法
- python遇到天猫反爬虫_用Python爬取天猫评价-我的新游戏
- Git和SVN区别和命令
- 查看oracle表空间的碎片,Oracle 数据库表空间碎片查询和整理
- Centos挂载iscsi存储(浪潮存储)
- 每次发版都搞到晚上11点,我们能不能……
- YDLidar开发-在win10下使用C++/python开发全过程-SDK配置
- 第九讲:因子分析(Factor analysis)
- 2021春项目需求记录 python实现模拟登录+爬取NASA Modis 上的产品数据
热门文章
- 不解之缘———我与Linux系统
- 127.0.0.1和localhost和本机IP三者的区别
- Swift - iCloud存储介绍
- 我和linux的第十三天
- itemCF matlab算法,推荐系统初探:ItemCF算法实现知乎问题推荐
- r语言初学者指南_由R入统:R语言统计学类书籍推荐
- Android意图Intent总结(隐式意图,显示意图,意图数据传递,意图数据回传)
- python线程监控_Python 使用摄像头监测心率!这么强吗?
- mysql查询一个月未登录_mysql函数实例-统计1周内未登陆的用户
- mysql日期为00_MySQL 8.0.13设置日期为0000-00-00 00:00:00时出现的问题解决