首页 > 代码库 > 排座椅(贪心)
排座椅(贪心)
浴谷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 point16 {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 }
排座椅(贪心)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。