NOIP2008排座位(普及組T2)————貪心,排序
阿新 • • 發佈:2018-11-26
題解:本題主要考查貪心,排序。先記錄行列的分隔數,再排序將需要裝入桶中(重點,因為要輸出的不只是最大值的序號)。
程式碼如下:
#include<iostream> #include<algorithm> using namespace std; int m,n,k,l,d,sum=0,i; int x1,y1,x2,y2; int a1[2222],a2[2222],t1[2225],t2[2225]; int main() { cin>>m>>n>>k>>l>>d; for(i=1;i<=d;i++) { cin>>x1>>y1>>x2>>y2; if(x1==x2)a1[min(y1,y2)]++; else if(y1==y2)a2[min(x1,x2)]++; } for(i=1;i<=k;i++) { int maxn=-1,p; for(int j=1;j<m;j++) if(a2[j]>maxn) { maxn=a2[j]; p=j; } a2[p]=0; t2[p]++; } for( i=1;i<=l;i++) { int maxn=-1,p; for(int j=1;j<n;j++) if(a1[j]>maxn) { maxn=a1[j]; p=j; } a1[p]=0; t1[p]++; } for(i=1;i<=2222;i++) if(t2[i]>0)cout<<i<<" "; cout<<endl; for(i=1;i<=2222;i++) if(t1[i]>0)cout<<i<<" "; return 0; }