P1056 排座椅

https://www.luogu.com.cn/problem/P1056

錯誤原因:最後輸出的行和列不是按照能解決多少同學而輸出,而是按照從小列向大列、小行向大行輸出

/* .................................................................................................................................. */
const int maxn = 1e5+50;
int line[maxn];//列
int row[maxn];
int fi[maxn];
int se[maxn];
int main(){
    int m, n, k, l, d;
    RD(m, n, k, l, d);
    REP(i, d){
        int x, y, p, q;
        RD(x, y, p, q);
        if (x == p){line[min(y, q)]++;}
        if (y == q){row[min(x, p)]++;}
    }
    //int ans = 0;
    int i = 0;
    while(i < k){
        int maxx = 0;
        for(int j = 1; j <= m-1; j++){
            if (row[maxx] < row[j]){
                maxx = j;
            }
        }
        i++;
        fi[maxx]++;
        row[maxx] = 0;
    }

    i = 0;
    while(i < l){
        int maxx = 0;
        for(int j = 1; j <= n-1; j++){
            if (line[maxx] < line[j]){
                maxx = j;
            }
        }
        i++;
        se[maxx]++;
        line[maxx] = 0;
    }
    for(int i = 0; i < 1005; i++){
        if(fi[i]){
            cout << i << " ";
        }
    }
    cout << '\n';
    for(int i = 0; i < 1005; i++){
        if(se[i]){
            cout << i << " ";
        }
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章