NyistOJ 8 一种排序(c++)(结构体排序)

注意题给条件:

第二个和第三个数值大的表示长,数值小的表示宽,相等
说明这是一个正方形(数据约定长宽与编号都小于10000)

此后注意去重就好啦

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <map>
#define ll long long

using namespace std ;

typedef struct{
    int id ;
    int length ;
    int wide ;
}meassage ;

bool cmp( meassage a , meassage b ){
    if ( a.id == b.id ){
        if ( a.length == b.length ){
            return a.wide < b.wide ;
        }
        return a.length < b.length ;
    }
    return a.id < b.id ;
}

bool check( meassage a , meassage b ){
    if ( a.id == b.id && a.length == b.length && a.wide == b.wide ){
        return true ;
    }
    return false ;
}

int main(){
    int t ;
    cin >> t ;
    while ( t -- ){
        int n ;
        cin >> n ;
        meassage mea[n+10] ;
        for ( int i = 0 ; i < n ; i ++ ){
            cin >> mea[i].id >> mea[i].length >> mea[i].wide ;
            if ( mea[i].wide > mea[i].length ){
                swap(mea[i].wide , mea[i].length) ;
            }
        }
        sort( mea , mea + n , cmp ) ;
        printf("%d %d %d\n" , mea[0].id , mea[0].length , mea[0].wide) ;
        for ( int i = 1 ; i < n ; i ++ ){
            if ( !check(mea[i] , mea[i-1]) ){
                printf("%d %d %d\n" , mea[i].id , mea[i].length , mea[i].wide) ;
            }
        }
    }
    return 0 ;
}

原文地址:https://www.cnblogs.com/Cantredo/p/9716236.html

时间: 2024-11-13 04:38:16

NyistOJ 8 一种排序(c++)(结构体排序)的相关文章

go语言的排序、结构体排序

原文:https://studygolang.com/articles/1598 晚上准备动手写点 go 的程序的时候,想起 go 如何排序的问题.排序 sort 是个基本的操作,当然搜索 search 也是.c 提供一个 qsort 和 bsearch,一个快排一个二分查找,不过是使用起来都不方便: c++ 中的 sort 貌似很不错,因为 c++ 支持泛型(或是说模板),所以很多东西使用起来很方便.go 是通过 sort 包提供排序和搜索,因为 go 暂时不支持泛型(将来也不好说支不支持),

HDU 1862 EXCEL排序(结构体排序)

EXCEL排序 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16387    Accepted Submission(s): 6137 Problem Description Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. Input 测试输入包含若干测试用例.每个测试用例的第1行包含两个整数 N (<=1

C++结构体排序

在C++中,对结构体的排序方式比C语言丰富的多.在C语言中,我们主要是通过qsort进行排序操作(抛开手写排序算法不说). 在C++<algorithm>中,有一个十分强大的排序函数sort,他的内部综合了许多种排序算法,因此非常高效.并且,用它来对结构体排序也十分方便. 先贴一段示例代码: 1 #include <cstdio> 2 #include <queue> 3 #include <vector> 4 #include <algorithm&

【结构体排序】hdu 2409 Team Arrangement

[结构体排序]hdu 2409 Team Arrangement 题目链接:hdu 2409 Team Arrangement 题目大意 给出22个球员的各种信息,要求按照给出的阵形选择球员和队长共11人: 选择球员的规则是:同角色的球员按照编号从小到大选择,直到选够此角色的人数: 选择队长的规则是:在所有已经被选择为某角色的球员中,选择服役时间最长的那个球员, 如果服役时间时间相同,就选择编号较大的那一个球员: 2006 Asia Regional Tehran(伊朗首都德黑兰)的第一题,题意

【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能讲讲其用法: 1.sort入门: 使用sort需要包含algorithm头文件,完整代码如下 #include<iostream> #include<vector> #include<algorithm>//貌似可以不用,但最好加上. using namespace std

HDU 1084 [What Is Your Grade?] 结构体排序

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1084 题目大意:共5道题,N个学生.做出5道满分,0道50分.做出1-4道的同学,若在前50%(向下取整),则获得95.85.75.65,若在后50%则获得90.80.70.60. 关键思想:结构体排序 //结构体排序,考虑边界 #include <iostream> #include <algorithm> #include <cmath> #include <me

结构体排序

经常碰到结构体排序的问题,在此总结一下.以一个简单的例题开始: 例1.有三个人(Person结构体),每个人都有name(string型)和age(int型)两个属性,现在需要按照下面的规则排序:先以姓名按从小到大排序(如abc<abd),如果姓名相同,则按照年龄从大到小排序. #include<iostream> #include<string> using namespace std; struct Person{ string name; int age; }; voi

HDOJ 1009. Fat Mouse&#39; Trade 贪心 结构体排序

FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 56784    Accepted Submission(s): 19009 Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats g

最小生成树模板+并查集(隐藏)+结构体排序模板

minn[101],g[101][101],u[101]; memset(u,1,sizeof(u)); memset(minn,0x7f,sizeof(minn)); minn[1]=0; u[1]=0; i,j,k,m; total=0; for(i=1;i<=n;i++) { k=0; for(j=1;j<=n;j++) if(u[j]&&(minn[k]>minn[j])) k=j; u[k]=0; for(j=1;j<=n;j++) if(u[j]&