TYVJ 1048 田忌賽馬 貪心解法

2021-08-09 08:45:07 字數 1394 閱讀 2032

中國古代的歷史故事「田忌賽馬」是為大家所熟知的。話說齊王和田忌又要賽馬了,他們各派出n匹馬,每場比賽,輸的一方將要給贏的一方200兩**,如果是平局的話,雙方都不必拿出錢。現在每匹馬的速度值是固定而且已知的,而齊王出馬也不管田忌的出馬順序。請問田忌該如何安排自己的馬去對抗齊王的馬,才能贏取最多的錢?

第一行為乙個正整數n (n <= 1000) ,表示雙方馬的數量。

第二行有n個整數表示田忌的馬的速度。

第三行的n個整數為齊王的馬的速度。

僅有一行,為田忌賽馬可能贏得的最多的錢,結果有可能為負。

92 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兩 如果是平局的話,雙方都不必拿出錢。現在每匹馬的速度值是固定而且已知的,而齊王出馬也不管田忌的出馬順序。請問田忌該如何安排自己的...