[题目描述]
今天你与你的挚友玩一种纸牌游戏,每一回合两人各出一张牌,如果你的牌点数大小比对方小,则你不得分,否则你的得分为两张卡牌点数差值的绝对值。
由于你有读心术,你已经知道了对方接下来要出的 n 张牌,a1,a2,a3...an。你手上也有 n 张牌 b1,b2,b3,...bn,问你如何安排这 n 张牌使你得的分数最大?
输入格式:
输入共三行。
第一行一个数字 n,代表 n 张牌。
第二行n个数字 a1,a2,a3...an,代表你的挚友的出牌的点数大小。
第三行n个数字 b1,b2,b3...bn,代表你的牌的点数大小。
输出格式:
输出你得的最大分数。
样例输入
1
1
2
样例输出
1
数据范围: 对于 100% 的数据,保证 1≤n≤2×105,1≤ai≤1018,1≤bi≤1018。
来源/分类(难度系数:三星)
贪心 枚举
完整代码展示:
n=int(input())
list_1=list(map(int,input().split()))
list_2=list(map(int,input().split()))
list_1.sort(reverse=True)
list_2.sort(reverse=False)
sum=0
for i in range(0,len(list_1)):
if list_1[i]>list_2[i]:
sum+=0
else:
sum+=abs(list_2[i]-list_1[i])
print(sum)
代码解释:
“n=int(input())
list_1=list(map(int,input().split()))
list_2=list(map(int,input().split())) ”,让用户输入回合数n。接着让用户依次输入挚友和自己各自持有的牌点数,并将其分别储存在列表list_1,list_2中。
“list_1.sort(reverse=True)
list_2.sort(reverse=False) ”,对list_1,list_2中的元素分别进行降序排序,升序排序。
“sum=0
for i in range(0,len(list_1)):
if list_1[i]>list_2[i]:
sum+=0
else:
sum+=abs(list_2[i]-list_1[i]) ”,令sum=0,遍立列表list_1中的元素,判断list_1[i]是否大于list_2[i]。如果是,则令sum+=0,否则令sum+=list_2[i]-list_1[i]的绝对值。
“print(sum) ”。打印sum的最终结果。
运行效果展示:
(声明:以上内容均为原创)