BZOJ1034泡泡堂 貪心(田忌賽馬)

2022-09-10 00:36:30 字數 1476 閱讀 4136

第一想法肯定就是田忌賽馬然後想起老闆原來講的二分圖。。。後來發現田忌賽馬原來有個很顯然地貪心做法(模擬原場景)

time limit: 10 sec  memory limit: 162 mb

submit: 3840  solved: 1973

[submit][status][discuss]第***x屆noi期間,為了加強各省選手之間的交流,組委會決定組織一場省際電子競技大賽,每乙個省的代表

隊由n名選手組成,比賽的專案是老少咸宜的網路遊戲泡泡堂。每一場比賽前,對陣雙方的教練向組委會提交乙份

參賽選手的名單,決定了選手上場的順序,一經確定,不得修改。比賽中,雙方的一號選手,二號選手……,n號

選手捉對廝殺,共進行n場比賽。每勝一場比賽得2分,平一場得1分,輸一場不得分。最終將雙方的單場得分相加

得出總分,總分高的隊伍晉級(總分相同抽籤決定)。作為浙江隊的領隊,你已經在事先將各省所有選手的泡泡堂水

平了解的一清二楚,並將其用乙個實力值來衡量。為簡化問題,我們假定選手在遊戲中完全不受任何外界因素干擾

,即實力強的選手一定可以戰勝實力弱的選手,而兩個實力相同的選手一定會戰平。由於完全不知道對手會使用何

種策略來確定出場順序,所以所有的隊伍都採取了這樣一種策略,就是完全隨機決定出場順序。當然你不想這樣不

明不白的進行比賽。你想事先了解一下在最好與最壞的情況下,浙江隊最終分別能得到多少分。

輸入的第一行為乙個整數n,表示每支代表隊的人數。接下來n行,每行乙個整數,描述了n位浙江隊的選手的

實力值。接下來n行,每行乙個整數,描述了你的對手的n位選手的實力值。 20%的資料中,1<=n<=10; 40%的數

據中,1<=n<=100; 60%的資料中,1<=n<=1000; 100%的資料中,1<=n<=100000,且所有選手的實力值在0到100

00000之間。

包括兩個用空格隔開的整數,分別表示浙江隊在最好與最壞的情況下分別能得多少分。不要在行末輸出多餘的

空白字元。21

3242 0

貪心類似模擬歷史上那個故事。我們一一對應找到剛好比田忌小那麼一丟丟的對手最大的那個馬,找不到分配個lj馬過去。

這裡也是一樣。我們考慮從兩頭找比對手更一點的人進行對戰,如果找不到,就分配我方目前最弱且沒有匹配的的給對手目前最強且沒有進行匹配的進行匹配(當然也有可能兩個相等)。

然後第一問最好情況也就是直接這麼搞。第二問最壞情況,由於總分為2*n,那麼就幫對手找最好情況,2*n減去對手分數就可以了。

親測這種方法用在田忌賽馬上也可以直接過,因為貪心的證明方法早在數千年前已經幫我們證明過了。

code:

#includeusing namespace std;

int n;

int a[100005];

int b[100005];

vectorve;

int calc(int *a,int *b)

return sum;

}int main()

BZOJ1034 泡泡堂(貪心)

bzoj 洛谷很基礎的貪心,然而我竟然沒寫對。身敗名裂。大概就是類似田忌賽馬。先拿看當前最大值是否能否解決對面最大值,否則檢查能否用最小值來兌掉。差不多類似把,有點點區別。include include include include include include using namespace ...

BZOJ P1034 泡泡堂BNB 貪心

題目分析 題意,不妨設浙江隊的實力值為a i a i 對手隊的實力值為b i b i 要求可能得到的最高分和最低分。對於可能得到的最高分,也就是我們要贏更多的局,在贏局局數相同的情況下,要讓平局的局數越多。a i a i 贏b j b j 的條件是 a i b j a i b j 所以我們只需要將a...

1034 ZJOI2008 泡泡堂 貪心

第 x屆noi期間,為了加強各省選手之間的交流,組委會決定組織一場省際電子競技大賽,每乙個省的代表 隊由n名選手組成,比賽的專案是老少咸宜的網路遊戲泡泡堂。每一場比賽前,對陣雙方的教練向組委會提交乙份 參賽選手的名單,決定了選手上場的順序,一經確定,不得修改。比賽中,雙方的一號選手,二號選手 n號 ...