TYVJ P1048 田忌賽馬 Label dp

2022-03-11 06:16:15 字數 1156 閱讀 1111

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

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

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

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

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

92 83 71 

95 87 74

200

#include#include

#include

#include

#define inf 1<<30

using

namespace

std;

bool cmp(int i,int

j)int n,f[3005][3005],a[3005],b[3005],c[3005][3005

];int

main()}f[

0][0]=0

;

for(int i=1;i<=n;i++)

}int ans=0

;

for(int i=0;i<=n;i++) ans=max(f[n][i],ans);

printf(

"%d\n

",ans*200

);

return0;

}

之前看別人方程理解錯了,然後就沒有然後了,以下是引用的題解

dp方程

設f[i,j]表示齊王按從強到弱的順序出馬和田忌進行了i場比賽之後,田忌從「頭」取了j匹較強的馬,從「尾」取了i-j匹較弱的馬,所能夠得到的最大盈利。

狀態轉移方程如下:

f[i,j]=max

其中c[i,j]表示田忌的馬和齊王的馬分別按照由強到弱的順序排序之後,田忌的第i匹馬和齊王的第j匹馬賽跑所能取得的盈利,勝為1,輸為-1,平為0。

結果用最大的乘以200即可。

tyvj p1048 田忌賽馬 (0 100分)

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

TYVJ 1048 田忌賽馬 貪心解法

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

nyoj 田忌賽馬

題目大意 第一行給出n表示有n場比賽,以下兩行分別給出n個數,分別表示田忌和齊王n匹馬的速度,贏家從輸者手中獲得200錢,求田忌最多能贏多少錢。思路 1.先把兩者的馬按速度從大到小排序 2.從最大的馬開始比較,若出現齊王的馬比田忌的馬快,先暫停。3.將此時齊王最快的馬和田忌最慢的馬比賽,田忌輸掉一局...