思路很巧妙的一道贪心题目,总体原则是赢不了你我就尽量拖你的好马下水。
题目地址:点击打开链接
#include <cstdio> #include <algorithm> #include <iostream> using namespace std ; int tj[1005],king[1005] ; int n ; //马匹数目 int main() { while(scanf("%d",&n)!=EOF) { for(int i = 0 ; i <n ;i++) { scanf("%d",&tj[i]) ; } for(int j = 0 ; j<n ;j++) { scanf("%d",&king[j]) ; } sort(tj,tj+n) ; sort(king,king+n) ; int res = 0 ; int cnt = 0 ; int tj_min,king_min,tj_max,king_max ; tj_min = king_min = 0 ; tj_max = king_max = n-1 ; while((cnt++)<n) { if(tj[tj_max]>king[king_max]) { res+=200 ; tj_max-- ; king_max-- ; } else if(tj[tj_max]<king[king_max]) { res-=200 ; tj_min++ ; king_max-- ; } else { if(tj[tj_min]>king[king_min]) { res+=200 ; tj_min++ ; king_min++ ; } else { if(tj[tj_min]<king[king_max]) res-=200 ; tj_min++ ; king_max-- ; } } } printf("%d\n",res) ; } return 0 ; }
原文地址:http://blog.csdn.net/u012566693/article/details/44275269