HDU1871-1872-1873-结构体排序
来源:互联网 发布:java希尔排序算法 编辑:程序博客网 时间:2024/06/06 08:28
这里介绍三个小题,主要都是结构体里面的排序。
第一题:无题 HDU - 1871,链接https://vjudge.net/problem/HDU-1871
构造房间结构体,按照价格排序。
#include<iostream>#include<algorithm>using namespace std;struct Room{ int id,cnt,price; bool operator < (const Room &a) const{ if(a.price!=price) return price<a.price; }}room[101];int main(){ int T; cin>>T; while(T--){ int c; cin>>c; for(int i=0;i<c;i++){ cin>>room[i].id>>room[i].cnt>>room[i].price; } sort(room,room+c); int t,sum; cin>>t; while(t--){ cin>>sum; int flag=0; for(int i=0;i<c;i++){ if(room[i].cnt>=sum){ room[i].cnt-=sum; flag=1; cout<<room[i].id<<endl; break; } } if(flag==0) cout<<"sorry"<<endl; } }}
第二题:稳定排序 HDU - 1872 ,链接https://vjudge.net/problem/HDU-1872
构造学生结构体,首先按照分数排序,分数相同基础上按照原id排序。
#include<iostream>#include<cstring>#include<algorithm>using namespace std;struct Stu{ char name[55]; int score,id; bool operator < (const Stu &a) const{ if(score!=a.score) return score>a.score; else return id<a.id; }}stu[310],xu[310];int n;void out(Stu a[],int n){ for(int i=0;i<n;i++) cout<<a[i].name<<' '<<a[i].score<<endl;}int main(){ while(cin>>n){ for(int i=0;i<n;i++){ cin>>stu[i].name>>stu[i].score; stu[i].id=i; } for(int i=0;i<n;i++){ cin>>xu[i].name>>xu[i].score; } sort(stu,stu+n); int flag1=1,flag2=1; for(int i=0;i<n;i++){ if(stu[i].score!=xu[i].score){ cout<<"Error"<<endl; out(stu,n); flag2=0; break; } } if(flag2==0) continue; for(int i=0;i<n;i++){ if(strcmp(stu[i].name,xu[i].name)!=0){ cout<<"Not Stable"<<endl; out(stu,n); flag1=0; break; } } if(flag1==0) continue; cout<<"Right"<<endl; } return 0;}
第三题:看病要排队 HDU - 1873,链接https://vjudge.net/problem/HDU-1873
这题不难,就是复杂,敲代码要仔细。我的代码里面好多num1,num2这样的参数,不要写错了写混淆了。仔细模拟,可解!
#include<iostream>#include<cstring>#include<algorithm>using namespace std;struct ys{ int id=0,weight=0,zt=0; bool operator < (const ys &a) const{ if(weight!=a.weight) return weight>a.weight; else return id<a.id; }}ys1[2002],ys2[2002],ys3[2002];int main(){ int n; while(cin>>n){ char s[5]; int a,b,cnt=0,num1=0,num2=0,num3=0,out1=0,out2=0,out3=0; while(n--){ cin>>s; if(s[0]=='I'){ cin>>a>>b; cnt++; if(a==1){ys1[num1].weight=b;ys1[num1].id=cnt;ys1[num1].zt=1;num1++; } if(a==2){ys2[num2].weight=b;ys2[num2].id=cnt;ys2[num2].zt=1;num2++; } if(a==3){ys3[num3].weight=b;ys3[num3].id=cnt;ys3[num3].zt=1;num3++; } }else{ cin>>a; if(a==1){ if(out1+1-num1>0){cout<<"EMPTY"<<endl;} else { out1++; sort(ys1,ys1+num1); for(int i=0;i<num1;i++){ if(ys1[i].zt==1){ cout<<ys1[i].id<<endl; ys1[i].zt=0; break; } } } }if(a==2){ if(out2+1-num2>0){cout<<"EMPTY"<<endl;} else { out2++; sort(ys2,ys2+num2); for(int i=0;i<num2;i++){ if(ys2[i].zt==1){ cout<<ys2[i].id<<endl; ys2[i].zt=0; break; } } } }if(a==3){ if(out3+1-num3>0){cout<<"EMPTY"<<endl;} else {out3++; sort(ys3,ys3+num3); for(int i=0;i<num3;i++){ if(ys3[i].zt==1){ cout<<ys3[i].id<<endl; ys3[i].zt=0; break; } } } } } } } return 0;}
阅读全文
0 0
- HDU1871-1872-1873-结构体排序
- hdu1871
- hdu1871 无题
- 结构体排序,多级排序
- hdu1871(优先级队列)
- hdu1871 无题 (贪心扫描)
- HDOJ-----1872结构体稳定排序
- 【杭电oj】1872 - 稳定排序(结构体排序)
- 结构体成员排序
- 结构体数组排序
- 结构体排序
- 结构体学号排序
- 结构体数组排序
- HDU1031结构体排序
- qsort 排序结构体
- 结构体排序
- 结构体数组排序
- 结构体来排序
- struts2的值栈的初步认识
- 文章标题
- 栈堆对于Activity的管理
- x=x|(x+1);和x=x&(x-1)?
- Java之LIst集合一
- HDU1871-1872-1873-结构体排序
- HDU 5407 CRB and Candies 数论
- C
- C语言之字符串
- 【项目管理和构建】——Maven简介(一)
- Button按钮圆角的设置:
- POJ1274: The Perfect Stall 题解
- hdu 2795 Billboard 线段树
- 如何用js给css3中的属性和jquery中的animate动态传值