2 条题解
-
0
/贪心策略: 分行列,找到分开学生最多的一条过道/
/*贪心策略: 分行列,找到分开学生最多的一条过道*/ #include<bits/stdc++.h> using namespace std; int a[2][2000],b,c,d,e,f,g,h,k,l,m[2][2000]; //a[][]=>row,line; //b=>row, c=>line, d=>cut row, e=>cut line; //g,h,k,l=>Ax,Ay,Bx,By; bool way (int a,int b) { return a>b; } void pai (int a[],int b[],int c,int d) { int e[1000]; for (int i=0;i<1000;i++) e[i]=i;//catch row/line num for (int i=0;i<c;i++) for (int j=0;j<c-1;j++) if (a[j]<a[j+1]) { swap (a[j],a[j+1]); swap (e[j],e[j+1]); }//sort ,catch sort for (int i=0;i<d;i++) b[i]=e[i];//num turn return; } int main() { cin>>b>>c>>d>>e>>f;//d=>a[0];e=>a[1];f=>D for (int i=0;i<f;i++) { cin>>g>>h>>k>>l; if (g==k) a[1][min(h,l)]++;//x=x => row=row => cut line; if (h==l) a[0][min(g,k)]++; } pai (a[0],m[0],b,d); pai (a[1],m[1],c,e); sort (m[0],m[0]+d); sort (m[1],m[1]+e);//resort <<< for (int i=0;i<d;i++) { cout<<m[0][i]; if (i!=d-1) cout<<" "; } cout<<endl; for (int i=0;i<e;i++) { cout<<m[1][i]; if (i!=e-1) cout<<" "; }//cout return 0; }
信息
- ID
- 164
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 15
- 已通过
- 9
- 上传者