链接:https://ac.nowcoder.com/acm/contest/3003/F
来源:牛客网
题目描述
牛牛和 牛可乐 面前有 n 个物品,这些物品编号为 1,2,…,n,每个物品有两个属性 ai,bi 。
牛牛与 牛可乐会轮流从剩下物品中任意拿走一个, 牛牛先选取。
设 牛牛选取的物品编号集合为 H,牛可乐选取的物品编号的集合为 T,取完之后,牛牛 得分为 ∑i∈Hai;而 牛可乐得分为 ∑i∈Tbi。
牛牛和 牛可乐都希望自己的得分尽量比对方大(即最大化自己与对方得分的差)。
你需要求出两人都使用最优策略的情况下,最终分别会选择哪些物品,若有多种答案或输出顺序,输出任意一种。
输入描述:
第一行,一个正整数 n,表示物品个数。
第二行,n 个整数 a1,a2,…,an,表示 n 个物品的 A 属性。
第三行,n 个整数 b1,b2,…,bn,表示 n 个物品的 B 属性。
保证 2≤n≤2×105,0≤ai,bi≤109。
输出描述:
输出两行,分别表示在最优策略下 牛牛和 牛可乐各选择了哪些物品,输 出物品编号。
输入
3 8 7 6 5 4 2
输出
1 3 2
说明
3 12也会被判定为正确
假设物品已经被选完,此时牛牛选择的物品 A 属性的价值和是 N , 牛可乐选择的物品 B 属性价值和是 M 。
如果 牛牛的 (a1,b1)物品与 牛可乐的 (a2,b2)交换,则 N′=N−a1+a2,M′=M+b1−b2,对于牛牛(目标是最大化 N−M )来说会变得更优仅当 a1+b1<a2+b2