题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1678
题意简述:给定一行长度为2<=n<=10000的序列,两个人(p1和p2)分别去取其中的数,p1先取(设xi为p1所取的数),x1的范围为[a,b],且a,b的范围是(0,100],然后p2取数(设yi为p2所取的数),且y1-x1的范围为[a,b]…如此一直交叉取下去,直到不恩哪个再取为止,假设两人都是用最优的方法取数,求sum(xi)-sum(yi)的最大值。
解题思路:x(1),…,x(n)是可以选择的数,注意到两个选手选出来的数都是递增的,所以我们现将X从小到大排序。我们假设第一个人选取一个x(k) (暂时还不需要要求x(k)属于[a,b])之后,以后每个人选的数都与前面那个数相差在a和b之间,最后交替差能保证的最大值为dk。当第一个选手选定第一个数y1=x(k)属于[a,b]之后,问题转化为第二个选手选择一个y2=x(m)属于[a+y1,b+y1],其中y2的选取是使得从y2开始,所得交替和能保证的最大值为dm,所以 dk=x(k)-max(di)
最后要求的并不是d0,而是 max(d[i]) 且d[i]的范围是[a,b]。
代码: