本題故事是由田忌賽馬引起的,但是什麼田忌賽馬的我是不管咯啊。廢話不多說,先把題目大概意思講一下:路人甲和路人乙各有n匹馬,現在給出了這些馬的速度,如何匹配這些馬兒使得路人甲獲得最大利益?(ps:贏一場得200積分,輸一場減去200積分,平局不增不減)。
分析:這題目是我在題目分類中看到的一道貪心題。我們可以把它做如下分類;
1、路人甲的最快馬速度 > 路人乙的最快馬速度, 則該兩匹馬匹配;
2、路人甲的最快馬速度 < 路人乙的最快馬速度,則用路人甲的最慢馬與路人乙的最快馬匹配;
3、路人甲的最快馬速度 = 路人乙的最快馬速度:(a)路人甲的最慢馬速度 > 路人乙最慢馬速度,該兩匹最慢馬匹配;
(b)路人甲的最慢馬速度 <= 路人乙的最慢馬速度,路人甲的最慢馬與路人乙的最快馬匹配。
這是解決該題目的分類情況。詳細分析請參考:
#include#includeusing namespace std;
bool cmp(int x,int y)
int main()
else if(a[head1]b[tail2])
else
{if(a[tail1]
hdu1052 田忌賽馬 貪心
錯誤 include 田忌賽馬,錯誤版 include include 思路 用田忌最快的馬與齊王最快的馬比較,1.若能贏就贏 2.若贏不了,就用最差的馬拖齊王最好的馬入水 3.若打平 要判斷是否在最好一匹馬,若是,則打平,若不是,則用最差的一匹馬拖它下水,雖然輸了這次,但下次有機會贏回。看似無差別...
HDU 1052 田忌賽馬 貪心
題意是田忌賽馬的背景,雙方各有n匹馬,下面兩行分別是田忌和齊王每匹馬的速度,要求輸出田忌最大的淨勝場數 每場的賭金200。開始的時候想對雙方的馬匹速度排序,然後比較最快的馬,能勝則勝,否則用最慢的馬去消耗對方,但這樣存在問題 1 2 3 對 1 3 3的時候,會變成1 3,2 3,3 1,淨勝 1場...
田忌賽馬 貪心演算法 HDU1052
田忌賽馬的故事大家都應該聽過吧。田忌和齊王賽馬,有優良差三種馬,每一種馬齊王都比田忌要好,所以齊王總是贏,田忌輸一次就要給齊王200銀幣,田忌輸的很慘於是去找孫臏幫忙。孫臏就讓他用最差的馬去和齊王最好的馬比,然後用優秀的馬去贏齊王差的馬。題目不過是把三頭馬變成了1000頭馬,齊王還是按馬的優劣來安排...