数据有误?90分怎么破

P1056 [NOIP2008 普及组] 排座椅

#include <cstring> #include <iostream> #include <vector> #include <algorithm> int arr[1001][1001]; int main() { int M, N, K, L, D, X, Y, P, Q; std::cin >> M >> N >> K >> L >> D; while (--D >= 0){ std::cin >> X >> Y >> P >> Q; if ((X == 41 && P == 42) || (X == 42 && P == 41)) std::cout << "---------------------" << std::endl; if (X == P) { if (Y + 1 == Q) arr[X][Y] |= 1; else if (Y - 1 == Q) arr[P][Q] |= 1; } else if (X + 1 == P) arr[X][Y] |= 2; else if (X - 1 == P) arr[P][Q] |= 2; } int ret[1001]; memset( ret, 0, (M * sizeof(int)) ); //找出每两行间有多少喽 for (int i = 1; i < M; ++i) { for (int j = 1; j <= N; ++j) { if (arr[i][j] == 2 || arr[i][j] == 3) { std::cout << i << " " << j << std::endl; ++ret[i]; } } } int ret2[1001]; memset(ret2, 0, (M * sizeof(int))); int k = K; while (--k >= 0){ int r = 0, max = 0; for (int i = 1; i < M; ++i) { if (ret[i] > max) { max = ret[i]; r = i; } } ret2[k] = r; ret[r] = 0; } std::sort(std::begin(ret2), std::begin(ret2) + K); for (int i = 0; i < K; ++i) std::cout << ret2[i] << (i != K - 1 ? " " : ""); std::cout << std::endl; memset(ret, 0, (N * sizeof(int))); //找出每两列间有多少喽 for (int i = 1; i < N; ++i) { for (int j = 1; j <= M; ++j) { if (arr[j][i] == 1 || arr[j][i] == 3) ++ret[i]; } } memset(ret2, 0, (M * sizeof(int))); int l = L; while (--l >= 0) { int r = 0, max = 0; for (int i = 1; i < N; ++i) { if (ret[i] > max) { max = ret[i]; r = i; } } ret2[l] = r; ret[r] = 0; } std::sort(std::begin(ret2), std::begin(ret2) + L); for (int i = 0; i < L; ++i) std::cout << ret2[i] << (i != L-1 ? " " : ""); return 0; }
by 萝卜头lbt @ 2019-06-05 12:32:25


有些是调试输出
by 萝卜头lbt @ 2019-06-05 12:32:53


@[萝卜头lbt](/space/show?uid=204450) 希望更丰富的展现?使用Markdown
by applese @ 2019-06-05 12:43:41


@[萝卜头lbt](/space/show?uid=204450) 希望更丰富的展现?使用Markdown
by 陈哲 @ 2019-06-05 12:48:54


```cpp #include<iostream> #include<cstring> #include<algorithm> #include<stdio.h> #include<vector> #define MAXN 2008 using namespace std; int m,n,k,l,d; struct node{ int id,sum; }a[MAXN],b[MAXN]; bool cmp(const node& a,const node& b){ return a.sum>b.sum; } int main() { int i,j,n; scanf("%d%d%d%d%d",&m,&n,&k,&l,&d); int x1,y1,x2,y2; for(int i=1;i<=d;i++){ scanf("%d %d %d %d",&x1,&y1,&x2,&y2); if(x1==x2){ if(y1>y2) swap(y1,y2); b[y1].sum++; } else{ if(x1>x2) swap(x1,x2); a[x1].sum++; } } for(int i=1;i<=m;i++) a[i].id=i; for(int i=1;i<=n;i++) b[i].id=i; sort(a+1,a+1+n,cmp); sort(b+1,b+1+n,cmp); vector<int> vr,vc; for(int i=1;i<=k;i++){ vr.push_back(a[i].id); } for(int i=1;i<=l;i++){ vc.push_back(b[i].id); } sort(vr.begin(),vr.end()); sort(vc.begin(),vc.end()); for(int i=0;i<k;i++){ printf("%d ",vr[i]); } printf("\n"); for(int i=0;i<l;i++){ printf("%d ",vc[i]); } return 0; } ```
by charliegong @ 2019-06-05 13:17:57


@[萝卜头lbt](/space/show?uid=204450)
by charliegong @ 2019-06-05 14:08:17


|