poj 2287 Tian Ji -- The Horse Racing
poj 2287 Tian Ji -- The Horse Racing
題意:
田忌賽馬
如果3匹馬變成1000匹,齊王仍然讓他的馬按從優到劣的順序出賽,田忌可以按任意順序選擇他的賽馬出賽。贏一局,田忌可以得到200兩銀子,輸一局,田忌就要輸掉200兩銀子,平局的話不輸不贏。
請問田忌最多能贏多少銀子?
思路:
貪心;
如果當前最好的馬可以勝齊王最好的馬,那麼讓這兩匹馬比一場;
如果當前最差的馬能勝齊王最差的馬,那麼讓這兩匹馬比一場;
如果上面兩個條件都不滿足,那麼讓當前最差的馬和齊王最好的馬比一場。
/*poj 2287
題意:
田忌賽馬
如果3匹馬變成1000匹,齊王仍然讓他的馬按從優到劣的順序出賽,田忌可以按任意順序選擇他的賽馬出賽。贏一局,田忌可以得到200兩銀子,輸一局,田忌就要輸掉200兩銀子,平局的話不輸不贏。
請問田忌最多能贏多少銀子?
思路:
貪心;
如果當前最好的馬可以勝齊王最好的馬,那麼讓這兩匹馬比一場;
如果當前最差的馬能勝齊王最差的馬,那麼讓這兩匹馬比一場;
如果上面兩個條件都不滿足,那麼讓當前最差的馬和齊王最好的馬比一場。
*/
#include
#include
#include
using namespace std;
const int N=1005;
int a[N],b[N];
void gao(int n){
int p1=0,p2=0;
int q1=n-1,q2=n-1;
int ans=0;
while(p1<=q1){
if(a[p1]>b[p2]){
++p1;
++p2;
++ans;
}
else if(a[q1]>b[q2]){
--q1;
--q2;
++ans;
}
else{
if(a[p1]!=b[q2])
--ans;
++p1;
--q2;
}
}
printf(%d
,ans*200);
}
int main(){
int n;
while(scanf(%d,&n) && n){
for(int i=0;i