-------------------------多重集合容器法此处为多重集合容器法------------------------------

一种排序

时间限制: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-----一种排序(优先队列法)相关推荐

  1. C语言常用8种排序方法耗时测试

    最近项目中用到排序算法,于是研究了一下常用的8种排序算法.由于是在8位单片机上使用,所以对内存和时间要求比较高,最好是不额外占空间,同时耗时较短.于是对常用的8中算法耗时做了个测试.通过LED的亮灭来 ...

  2. 常用的几种排序,卖菜的王婆已经学废了,你不来瞅瞅?

    常用的八种排序 1.冒泡排序 2.插入排序 3.希尔排序 4.选择排序 5.堆排序 6.快速排序(重要) 7.归并排序(重要) 8.计数排序 各种排序方式的复杂度及稳定性比较 对一个数组进行排序你该不 ...

  3. 数据结构(三) 用java实现七种排序算法。

    很多时候,听别人在讨论快速排序,选择排序,冒泡排序等,都觉得很牛逼,心想,卧槽,排序也分那么多种,就觉得别人很牛逼呀,其实不然,当我们自己去了解学习后发现,并没有想象中那么难,今天就一起总结一下各种排 ...

  4. 用中值排序基数法实现树状结构 (转)

    在BBS的编写中,经常有人问怎样实现树状结构?一个比较不负责任的回答是:使用递归算法.当然,递归是一个可行的办法 (二叉树的历遍也好象只能使用递归算法),但对于BBS来说,这样做势必要进行大量的Sql ...

  5. 位图排序 大数据_干货分享:大话12种排序算法

    干货分享:大话12种排序算法 常见的排序算法: 快速排序.堆排序.归并排序.选择排序 插入排序.二分插入排序 冒泡排序.鸡尾酒排序 桶排序.计数排序.基数排序.位图排序 技能点: 1.归并排序在O(N ...

  6. 基于FPGA的几种排序算法总结

    目录 1      冒泡法和比较排序法 1.1        算法原理 1.2        仿真结果 1.3        算法优缺点 2      并行全比较排序法 2.1        算法原理 ...

  7. 10种排序算法基础总结

    基于比较的排序: 基础排序:  冒泡排序:谁大谁上,每一轮都把最大的顶到天花板 效率太低--掌握swap. 选择排序:效率较低,但经常用它内部的循环方式来找最大值和最小值. 插入排序:虽然平均效率低, ...

  8. 郑州尚学堂:JAVA常用4种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 当然 程序中最简单的使用就是:快速排序和冒泡排序,插入排序的使用更具有技巧性,选择排序则过于复杂,冗杂 ...

  9. FPGA篇(三)基于FPGA的几种排序算法

    目录 1      冒泡法和比较排序法 1.1        算法原理 1.2        仿真结果 1.3        算法优缺点 2      并行全比较排序法 2.1        算法原理 ...

  10. C语言十个字母用冒泡法排序,冒泡排序法(C语言) - osc_wq8j2a9a的个人空间 - OSCHINA - 中文开源技术交流社区...

    常用的排序方法有冒泡排序法,选择排序法,插入排序法以及希尔排序法等.本文着重讲解如何利用C代码,实现冒泡排序. 首先,要了解什么是冒泡排序.冒泡排序是常用的一种排序方法,其基本方法就是逐次比较.即一次 ...

最新文章

  1. Numpy中数组间运算
  2. 第十三届光华工程科技奖公布,彭士禄、张伯礼、王海峰等40人及1个团体获奖
  3. 消息扩散(强连通分量)
  4. Python基础教程:上下文管理器 context manager(with...as...)
  5. 初识Docker-Docker的安装
  6. 【LiveVideoStack线上分享】WebAssembly在Web多媒体领域的相关实践
  7. virtualbox安装android6.0并设置分辨率为1920x1080x32
  8. ZetCode 杂项教程
  9. Linux+c语言结构体对齐,C语言中结构体struct的对齐问题解析
  10. AD20元件重叠绿色报错的解决方法,距离太近绿色报错
  11. 源码目录变了,修改Eclipse配置:工作空间,JDK
  12. SmartSvn遗漏.a文件的解决办法
  13. python遇到天猫反爬虫_用Python爬取天猫评价-我的新游戏
  14. Git和SVN区别和命令
  15. 查看oracle表空间的碎片,Oracle 数据库表空间碎片查询和整理
  16. Centos挂载iscsi存储(浪潮存储)
  17. 每次发版都搞到晚上11点,我们能不能……
  18. YDLidar开发-在win10下使用C++/python开发全过程-SDK配置
  19. 第九讲:因子分析(Factor analysis)
  20. 2021春项目需求记录 python实现模拟登录+爬取NASA Modis 上的产品数据

热门文章

  1. 不解之缘———我与Linux系统
  2. 127.0.0.1和localhost和本机IP三者的区别
  3. Swift - iCloud存储介绍
  4. 我和linux的第十三天
  5. itemCF matlab算法,推荐系统初探:ItemCF算法实现知乎问题推荐
  6. r语言初学者指南_由R入统:R语言统计学类书籍推荐
  7. Android意图Intent总结(隐式意图,显示意图,意图数据传递,意图数据回传)
  8. python线程监控_Python 使用摄像头监测心率!这么强吗?
  9. mysql查询一个月未登录_mysql函数实例-统计1周内未登陆的用户
  10. mysql日期为00_MySQL 8.0.13设置日期为0000-00-00 00:00:00时出现的问题解决