问题描述
有T1和T2两队在打一场比赛。两队都有N个队员。T1队员的力量用一个数组表示,T2队员也一样。
游戏规则如下:
1.只有N次战斗。
2.任何球队的球员都不能打两次
3.对于从 (P1 + P2)%N 生成的每场战斗得分,P1 代表 T1 的力量。类似 P2
T2 知道 T1 的顺序发送他们的玩家去玩 T2 想要在每场比赛中获得最低分数的游戏。
您的任务是确定 T2 发送玩家的顺序,以便他们在每场比赛中获得最低分数
您需要打印每轮和 T2 其他玩家的得分。
N=3
T1=[1,2,3]
T2=[2,1]
Output:[0,0]
N=4
T1=[0,1,1]
T2=[3,1]
output:[1,2]
解释案例 1 N=3: [(1+2)%3,(2+1)%3,(3+0)%3]
这个问题的最佳解决方案是什么?
一种方法是与 T1 一一检查功率。
解决方法
这不是一个完整的答案,但这是我的想法。有更多有趣的例子可以帮助发展这个想法。
对数组进行排序,一个降序,一个升序:
N=4
T1=[0,1,2,1]
T2=[3,1]
0 1 1 2
3 2 1 1
现在使用指针来“移动”对齐方式,同时为当前的升序目标余数维护一个变量。
Target remainder 0
0 1 1 2
3 2 1 1
^
useless,shift pointer right
0 1 1 2
3 2 1 1
^
useless,shift pointer right
0 1 1 2
3 2 1 1