中國古代的歷史故事「田忌賽馬」是為大家所熟知的。話說齊王和田忌又要賽馬了,他們各派出n匹馬,每場比賽,輸的一方將要給贏的一方200兩**,如果是平局的話,雙方都不必拿出錢。現在每匹馬的速度值是固定而且已知的,而齊王出馬也不管田忌的出馬順序。請問田忌該如何安排自己的馬去對抗齊王的馬,才能贏取最多的錢?
第一行為乙個正整數n (n <= 1000) ,表示雙方馬的數量。
第二行有n個整數表示田忌的馬的速度。
第三行的n個整數為齊王的馬的速度。
僅有一行,為田忌賽馬可能贏得的最多的錢,結果有可能為負。
392 83 71
95 87 74
200
1/*2**首先,雙方的馬按速度排序。
3考慮己方最弱的馬和對方最弱的馬的速度關係。如果對方更弱,那麼不妨就用這匹馬去對對方的那匹馬;如果我方更弱,那麼不妨用這匹馬和對方當前最強的馬比賽。(平局稍後再說)
4同樣地,可以考慮己方最強的馬和對方最強的馬的關係。
5不停地貪心處理,直到雙方最強的馬相等、最弱的馬也相等。
6再考慮己方最弱馬 和對方最強馬的關係
7相等就強制讓這兩局平局發生。
8否則就耗掉對方最強馬
9繼續處理,直到所有的馬都用完。
10*/
11 #include12 #include13 #include14
#define maxn 10010
1516
using
namespace
std;
1718
int a[2
][maxn];
1920
intn,ans;
2122 inline void read(int &x)
25while(c>='
0'&&c<='
9')
26 x=x*f;27}
2829
intmain()
39else
if(a[1][tl]0][jl])
40else
if(a[1][tl]==a[0
][jl])
42else
if(a[1][tr]0][jr])
43else
if(a[1][tr]==a[0
][jr])
45else
if(a[1][tl]0][jr]) 46}
47}48}
49 printf("
%d\n
",ans*200
);50
return0;
51 }
田忌賽馬(貪心)
描述 中國古代的歷史故事 田忌賽馬 是為大家所熟知的。話說齊王和田忌又要賽馬了,他們各派出n匹馬,每場比賽,輸的一方將要給贏的一方200兩 如果是平局的話,雙方都不必拿出錢。現在每匹馬的速度值是固定而且已知的,而齊王出馬也不管田忌的出馬順序。請問田忌該如何安排自己的馬去對抗齊王的馬,才能贏取最多的錢...
田忌賽馬(貪心
給出田忌和齊王各馬的速度,求最優得分 我的貪心策略 當然是錯的 1,用我方在 可以 戰勝 或 比平 對方最慢的馬 的馬 中 最慢的馬 去比 對方最慢的馬 2,直到我方最快的馬也下場了,剩下的馬預設全部戰敗 這種策略明顯是不對的 我方的快馬的貪心策略應該是擊敗能力範圍內對方最快的馬 浪費最小 我方的慢...
貪心DP 田忌賽馬
田忌賽馬 描述 description 中國古代的歷史故事 田忌賽馬 是為大家所熟知的。話說齊王和田忌又要賽馬了,他們各派出n匹馬,每場比賽,輸的一方將要給贏的一方200兩 如果是平局的話,雙方都不必拿出錢。現在每匹馬的速度值是固定而且已知的,而齊王出馬也不管田忌的出馬順序。請問田忌該如何安排自己的...