输入包括n+1行,第一行包括一个整数n(1 ≤ n ≤ 10^5); 接下来的n行,每行两个整数x和y(1 ≤ x,y ≤ 10^9)
输出一个整数,表示新兵中战斗力值+潜力值最高的一个能达到多少。
2 1 2 2 1
4
要求:找出max(通过互相决斗之后新兵中战斗力值+潜力值). 获胜者战斗力 = (对手的潜力值 - 对手的战斗力值 )+ 自己的战斗力值 max(战斗力 + 潜力) = (对手的潜力值 - 对手的战斗力值 )+ (自己的战斗力值 + 自己的潜力值) 第一部分保证为正直,即 对手的潜力值 > 对手的战斗力值 if 本人 自己的潜力值 < 自己的战斗力值: max(战斗力 + 潜力) = max(对手的潜力值 - 对手的战斗力值 ) + (自己的战斗力值 + 自己的潜力值) 保证max(自己的战斗力值 + 自己的潜力值) else: max(战斗力 + 潜力) = max(对手的潜力值 - 对手的战斗力值 ) - (自己的潜力值 - 自己的战斗力值) + (自己的潜力值 + 自己的战斗力值) = max(对手的潜力值 - 对手的战斗力值 ) + 2 * 自己的战斗力值 保证 max(2 * 自己的战斗力值)
因此,求 max(自己的战斗力值 + 自己的潜力值),max(2 * 自己的战斗力值),max((对手的潜力值 - 对手的战斗力值 ), max1 = max(对手的潜力值 - 对手的战斗力值 ) + max(自己的战斗力值 + 自己的潜力值) max2 = max(对手的潜力值 - 对手的战斗力值 ) + max(2 * 自己的战斗力值) 最终结果:max(max1, max2)
#-*-coding:utf-8-*- n = int(raw_input())
lis = [] sum_zhan_qian = 0 max_zhan_qian = 0 max_zhan = 0 max_xin = 0 for i in xrange(0, n): temp = raw_input() [x, y] = map(int, temp.split()) lis.append([x, y]) if lis[i][0] < lis[i][1]: sum_zhan_qian = sum_zhan_qian + lis[i][1] - lis[i][0] temp = 2 * lis[i][0] if temp > max_zhan: max_zhan = temp else: temp = lis[i][0] + lis[i][1] if temp > max_zhan_qian: max_zhan_qian = temp max_xin = sum_zhan_qian + max(max_zhan_qian, max_zhan) print max_xin