排座椅(贪心)
Posted wolf940509
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排座椅(贪心)相关的知识,希望对你有一定的参考价值。
浴谷1056
题意:Noip2008普及组第二题
分析:因为要求最少的讨论组数,并按照升序输出。首先,我们统计去掉那一行(列)最多可以让多少组的人停止讨论,并把结果按照降序排序,然后我们再将结果按照编号的升序排序即可
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 #include <vector> 6 #include <algorithm> 7 #include <set> 8 #include <map> 9 #include <bitset> 10 #include <cmath> 11 #include <queue> 12 #include <stack> 13 using namespace std; 14 const int maxn=2020; 15 typedef struct point 16 { 17 int num,id; 18 }point; 19 point a[maxn],b[maxn]; 20 //int a[maxn],b[maxn]; 21 int m,n,k,l,d; 22 bool cmp1(const point a,const point b) 23 { 24 return a.num>b.num; 25 } 26 bool cmp2(const point a,const point b) 27 { 28 return a.id<b.id; 29 } 30 int main() 31 { 32 while(cin>>m>>n>>k>>l>>d) 33 { 34 for(int i=0;i<maxn;i++) 35 { 36 a[i].id=b[i].id=i; 37 a[i].num=b[i].num=0; 38 } 39 for(int i=0;i<d;i++) 40 { 41 int x,y,p,q,h; 42 scanf("%d%d%d%d",&x,&y,&p,&q); 43 if(x==p){ 44 h=min(y,q); 45 b[h].num++; 46 } 47 if(y==q) 48 { 49 h=min(x,p); 50 a[h].num++; 51 } 52 } 53 sort(a,a+maxn,cmp1); 54 sort(b,b+maxn,cmp1); 55 sort(a,a+k,cmp2); 56 sort(b,b+l,cmp2); 57 for(int i=0;i<k;i++){ 58 cout<<a[i].id<<" "; 59 } 60 cout<<endl; 61 for(int i=0;i<l;i++) 62 { 63 cout<<b[i].id<<" "; 64 } 65 cout<<endl; 66 } 67 return 0; 68 }
以上是关于排座椅(贪心)的主要内容,如果未能解决你的问题,请参考以下文章