日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【贪心】P1056 排座椅

發(fā)布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【贪心】P1056 排座椅 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://www.luogu.com.cn/problem/P1056
考點:貪心、排序

題意:
有M行N列的格子,D只長度為2的蟲子(可橫可豎),橫向縱向分別可以切K,L刀,問怎樣切可以切死最多的蟲子。
。。。
其實原題是用走廊拆開上課交頭接耳的學(xué)生,不知道為啥我覺得翻譯成上面的文字更好理解。
這個題的主要坑點是這一句:

就是說不僅要最優(yōu)切法,而且要按行列號升序輸出。

解法:
很基礎(chǔ)的貪心+排序。輸入數(shù)據(jù)的時候,每條“蟲子”都砍一刀,記錄在該位置砍了一刀,最后看看哪個位置砍的刀數(shù)最多,那么這個位置就要優(yōu)先選擇。以橫向砍為例,排序后就確定了前K個要砍的位置,然后給這K個再按行號升序排序,就可以輸出了。
總共4次排序,數(shù)據(jù)量不大,可以接受。

#include <bits/stdc++.h> using namespace std; using PII = pair<int,int>; int M,N,K,L,D; PII RowCut[1005]; // 某行砍了多少刀 PII ColCut[1005]; // 某列砍了多少刀 // 某一行(列)被砍的刀數(shù)越多,說明在這個地方設(shè)置走廊的效果越好,排個序,從高到低取K(L)個 int main() {cin >> M >> N >> K >> L >> D;for (int i = 0; i < D; i++) {int a,b,c,d; cin >> a >> b >> c >> d;if (a == c) {ColCut[min(b, d)].first++;} else {RowCut[min(a, c)].first++;}}// second保存行列號for (int i = 1; i < M; i++) RowCut[i].second = i;for (int i = 1; i < N; i++) ColCut[i].second = i;// 按照被切數(shù)降序排序sort(RowCut + 1, RowCut + M, [](PII &a, PII &b){ return a.first != b.first ? a.first > b.first : a.second < b.second;});sort(ColCut + 1, ColCut + N, [](PII &a, PII &b){ return a.first != b.first ? a.first > b.first : a.second < b.second;});// 按行號升序sort(RowCut + 1, RowCut + 1 + K, [](PII &a, PII &b){return a.second != b.second ? a.second < b.second : a.first > b.first;});sort(ColCut + 1, ColCut + 1 + L, [](PII &a, PII &b){return a.second != b.second ? a.second < b.second : a.first > b.first;});for (int i = 1; i <= K; i++) {if (i != K) cout << RowCut[i].second << " ";else cout << RowCut[i].second << endl;}for (int i = 1; i <= L; i++) {if (i != L) cout << ColCut[i].second << " ";else cout << ColCut[i].second;}return 0; }

這題沒有任何難度,卡了是因為沒仔細(xì)讀題!!

總結(jié)

以上是生活随笔為你收集整理的【贪心】P1056 排座椅的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。