【贪心】 POJ 2287 - Tian Ji -- The Horse Racing
题意
田忌与王赛马,每人各有N匹马,王的马出场顺序固定,田忌赢一场为200, 平局为0, 输为-200,田忌选择一种方式,使赢的钱最多或输的钱最少
思路
贪心:
1.如果田忌最快的马比王最快的马快,用田忌最快的马和王最快的马比
2.如果田忌最快的马比王最快的马慢,用田忌最慢的马和王最快的马比
3.如果田忌最快的马与王最快的马相等
{
1.如果田忌最慢的马比王最慢的马快,用田忌最慢的马与王最慢的马比
2.如果田忌最慢的马比王最慢的马慢,用田忌最慢的马与王最快的马比
3.如果田忌最慢的马与王最慢的马相等,用田忌最慢的马与王最快的马比
}
总结
第一次写贪心,看的别人的思路 ,这个归类于什么思路呢?等晚上看完贪心再说好了,还不太清楚
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std; 6 const int maxn = 1005; 7 int n; 8 int tian[maxn], king[maxn]; 9 int main() 10 { 11 // freopen("in.txt", "r", stdin); 12 while(scanf("%d", &n) && n) { 13 memset(tian, 0, sizeof tian); 14 memset(king, 0, sizeof king); 15 for(int i = 0; i < n; i++) { 16 scanf("%d", &tian[i]); 17 } 18 for(int i = 0; i < n; i++) { 19 scanf("%d", &king[i]); 20 } 21 sort(tian, tian + n); 22 sort(king, king + n); 23 int ans = 0, cnt = 0; 24 int mat = n-1, mak = n-1, mit = 0, mik = 0; 25 while(cnt < n) { 26 if(tian[mat] > king[mak]) { 27 ans += 200; 28 mat--; 29 mak--; 30 } 31 else if(tian[mat] < king[mak]) { 32 ans -= 200; 33 mit++; 34 mak--; 35 } 36 else { 37 if(tian[mit] > king[mik]) { 38 ans += 200; 39 mit++; 40 mik++; 41 } 42 else { 43 if(tian[mit] < king[mak]) { 44 ans -= 200; 45 } 46 mit++; 47 mak--; 48 } 49 } 50 cnt++; 51 } 52 printf("%d\n", ans); 53 } 54 return 0 ; 55 }

浙公网安备 33010602011771号