NYOJ 8 一种排序
生活随笔
收集整理的這篇文章主要介紹了
NYOJ 8 一种排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點擊打開鏈接
一種排序
時間限制:3000 ms ?|? 內存限制:65535 KB 難度:3 描述1.按照編號從小到大排序
2.對于編號相等的長方形,按照長方形的長排序;
3.如果編號和長都相同,按照長方形的寬排序;
4.如果編號、長、寬都相同,就只保留一個長方形用于排序,刪除多余的長方形;最后排好序按照指定格式顯示所有的長方形;
每一組第一行有一個整數 0<m<1000,表示有m個長方形;
接下來的m行,每一行有三個數 ,第一個數表示長方形的編號,
第二個和第三個數值大的表示長,數值小的表示寬,相等
說明這是一個正方形(數據約定長寬與編號都小于10000);
AC代碼:2ms
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<iostream> using namespace std; struct node{int mark,lon,wid; }str[10005]; bool cmp(node a,node b) {if(a.mark<b.mark)return true; else if(a.lon<b.lon&&a.mark==b.mark)return true;else if(a.lon==b.lon&&a.mark==b.mark&&a.wid<b.wid)return true;return false; } int main() {int n,m,i,t,j;scanf("%d",&n);while(n--){memset(str,0,sizeof(str));scanf("%d",&m);for(i=0;i<m;i++){scanf("%d%d%d",&str[i].mark,&str[i].lon,&str[i].wid); if(str[i].lon<str[i].wid)swap(str[i].lon,str[i].wid); //長>寬 for(j=0;j<i;j++)if(str[i].mark==str[j].mark&&str[i].lon==str[j].lon&&str[i].wid==str[j].wid){m--;i--; //如果跟前面已經輸入過的i組數據有相同的,這里用i--方式在下一次輸入的時候覆蓋掉,用m--記錄有效數據數量。 }}sort(str,str+m,cmp);//也可以sort之后再查重 for(i=0;i<m;i++)printf("%d %d %d\n",str[i].mark,str[i].lon,str[i].wid);}return 0; }
AC代碼:4ms
優先隊列
AC代碼:10ms
//#include<bits/stdc++.h> #include<iostream> #include<set> #include<vector> #include<algorithm> using namespace std; const int MAX=1e3+5; struct node{int id;//編號int l;//長int w;//寬 }; bool cmp(node a,node b) {if(a.id==b.id){if(a.l==b.l)return a.w<b.w;return a.l<b.l;}return a.id<b.id; } vector<node> a; int main() {ios::sync_with_stdio(0);int n;cin>>n;while(n--){int m;cin>>m;a.clear();int id,l,w;for(int i=0;i<m;i++){cin>>id>>l>>w;if(l<w)swap(l,w);bool flag=0;for(int j=0;j<i;j++)if(a[j].id==id&&a[j].l==l&&a[j].w==w) flag=1; if(!flag){node t;t.id=id;t.l=l;t.w=w;a.push_back(t);}}sort(a.begin(),a.end(),cmp);for(int i=0;i<a.size();i++){cout<<a[i].id<<" "<<a[i].l<<" "<<a[i].w<<endl;}}return 0; }與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的NYOJ 8 一种排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法竞赛入门与进阶 (四)二分
- 下一篇: hdu 2046 骨牌铺方格 递推求解