[2008年NOIP普及组] 排座椅
思路:本题考察的是贪心和排序
代码如下:
#include<bits/stdc++.h>
using namespace std;
int ak[1005],al[1005];//横排的前k个 、纵排的前l个
int a1[1005],b1[1005];//横纵坐标出现的次数
int main()
{
int m,n,k,l,d;
int x1,x2,y1,y2;
cin>>m>>n>>k>>l>>d;
for(int i=1;i<=d;i++)//统计横纵坐标出现的次数
{
cin>>x1>>y1>>x2>>y2;
if(x1==x2)
b1[(y1>y2)?y2:y1]++;
else if(y1==y2)
a1[(x1>x2)?x2:x1]++;
}
for(int i=1;i<=k;i++)//通过比较大小,拿到a1数组(横坐标)中的前k值
{
int max=0,x;
for(int j=1;j<=m;j++)
{
if(a1[j]>max)
{
max=a1[j];
x=j;}
}
ak[i]=x;
a1[x]=0;
}
for(int i=1;i<=l;i++)//通过比较大小,拿到b1数组(纵坐标)中的前l值
{
int max=0,x;
for(int j=1;j<=n;j++)
{
if(b1[j]>max)
{
max=b1[j];
x=j;}
}
al[i]=x;
b1[x]=0;
}
sort(ak+1,ak+1+k);
sort(al+1,al+1+l);
for(int i=1;i<=k;i++)
cout<<ak[i]<<" ";
cout<<endl;
for(int i=1;i<=l;i++)
cout<<al[i]<<" ";
cout<<endl;
return 0;
} 标签:NOIP,int,max,a1,座椅,b1,y1,2008,y2 From: https://www.cnblogs.com/xdzxyingrui/p/16584774.html