描述:田忌與齊王賽馬,雙方各有n匹馬參賽(n<=100),每場比賽賭注為1兩**,現已知齊王與田忌的每匹馬的速度,並且齊王肯定是按馬的速度從快到慢出場,現要你寫乙個程式幫助田忌計算他最好的結果是贏多少兩**(輸用負數表示)。
輸入:
多個測例。
每個測例三行:第一行乙個整數n,表示雙方各有n匹馬;第二行n個整數分別表示田忌的n匹馬的速度;第三行n個整數分別表示齊王的n匹馬的速度。
n=0表示輸入結束。
輸出:每行乙個整數,田忌最多能贏多少兩**。
輸入樣例: 3
92 83 71
95 87 74
220 20
20 20
220 19
22 18
320 20 10
20 20 100
輸出樣例: 1
000
解題思路:
先把田忌與齊王的馬的速度進行由小到大的排序,然後用田忌的慢馬去和齊王的快馬先比較,一直找到比齊王的馬快中的最快的並標記已比過,這樣就可以保證田忌的馬能夠達到合理的利用,可以貪到更多的贏的場次,然後就是求出它們平局的場數並標記,用總數減去他們就是輸的場數,從而就可以得出了。
**如下:
code:
#include
#include
using
namespacestd;
#definemax106
structspeed
; intcmp(speeda,speedb)
intmain()
for(i=0;i
sort(num1,num1+n,cmp);
sort(num2,num2+n,cmp);
signed
intsum1=0,sum2=0;
for(i=0;i
} }
} for(i=0;i
} }
} cout<<2*sum1-n+sum2>n;
} return0;
}
nyoj 田忌賽馬
題目大意 第一行給出n表示有n場比賽,以下兩行分別給出n個數,分別表示田忌和齊王n匹馬的速度,贏家從輸者手中獲得200錢,求田忌最多能贏多少錢。思路 1.先把兩者的馬按速度從大到小排序 2.從最大的馬開始比較,若出現齊王的馬比田忌的馬快,先暫停。3.將此時齊王最快的馬和田忌最慢的馬比賽,田忌輸掉一局...
1257 田忌賽馬
時間限制 1 sec 記憶體限制 128 mb 提交 97 解決 50 提交 狀態 討論版 命題人 外部匯入 賽馬是一古老的遊戲,早在西元前四世紀的中國,處在諸侯割據的狀態,歷史上稱為 戰國時期 在魏國作官的孫臏,因為受到同僚龐涓的 被齊國使臣救出後,到達齊國國都。賽馬是當時最受齊國貴族歡迎的娛樂專...
田忌賽馬(貪心)
描述 中國古代的歷史故事 田忌賽馬 是為大家所熟知的。話說齊王和田忌又要賽馬了,他們各派出n匹馬,每場比賽,輸的一方將要給贏的一方200兩 如果是平局的話,雙方都不必拿出錢。現在每匹馬的速度值是固定而且已知的,而齊王出馬也不管田忌的出馬順序。請問田忌該如何安排自己的馬去對抗齊王的馬,才能贏取最多的錢...