Making the Grade与数字序列
Making the Grade与数字序列解题报告
感觉两道题的结论以及证明方法都有相似的地方,所以放在了一起。
upd:第一次做的时候没看出来,这俩其实本质上就是同一道题……
Making the Grade
结论:
在满足\(S\)最小化的前提下,一定存在一种构造序列\(B\)的方案,使得\(B\)中的数值都在\(A\)中出现过。
证明:

将结果用坐标轴的形式表示出来。其中\(A_i\)表示为给出的序列,\(A_i'\)表示将给出的序列进行sort后得到的序列(\(A_1'\)是A序列中第\(1\)小的,\(A_2'\)是第二小的…),图中坐标轴\(A_i\)正上方的每个点代表构造出的一组\(B\)序列中的\(B_i\)。
现在构造出的这组\(B\)序列中的一些数是位于\(A_j'\)与\(A_{j+1}'\)之间的,也就是说\(B\)中有一些数值在\(A\)中没有出现过。那么如果证明将这些\(\ge A_j'且\le A_{j+1}'\),数中的一些移到\(A_j'\)上,另一些移到\(A_{j+1}'\)上去,可以使\(S\)更小,那么就说明一定可以构造出一种\(B\)中的数值都在\(A\)中出现过的方案,使得\(S\)最小化。
如果移动的话,应该怎么移呢?(先不加证明地给出移动方法)
1.统计出这些位于横线中间的\(B_i\)对应的\(A_i\)值中小于等于\(A_j'\)的个数\(x\),以及大于等于\(A_{j+1}'\)的个数\(y\)。
比如在这幅图中,\(B_2,B_3,B_4\)的值\(\ge A_1'\)且\(\le A_2'\),那么就需要统计出\(A_2,A_3,A_4\)中\(\le A_1'\)的个数\(x\),以及\(\ge A_2'\)的个数\(y\)
\(2\).如果\(x>y\),将这些位于横线中间\(B_i\)整体向下移,直到最靠上的一个等于\(A_{j}’\)
如果\(x >y\),将这些位于横线中间\(B_i\)整体向上移,直到最靠下的一个等于\(A_{j+1}'\)
如果\(x=y\),上移下移都一样。
\(3.\)每次移动后,对于移动后的当前状态不断重复上述的1,2操作,直至所有\(B_i\)都到线上,即所有\(B\)中的数值都在\(A\)中出现过。
那么这样移动会不会使\(S\)减少呢?
当然会。
回归2操作。
1.\(x>y\),假设下移的距离为\(d\),那么减少的距离和是\(x\times d\),增加的距离和是\(y\times d\),整体减少的就是\((x-y)\times d\),(由于\(x>y\),一定是会减少的)。
\(2.x<y\),假设上移的距离为\(d\),那么减少的距离和是\(y \times d\),增加的距离和是$ x \times d\(,整体减少的就是\)(y-x)\times d\(,(由于\)y>x$,一定是会减少的)。
\(3.\)反正\(x=y\),怎么移都一样啦~
那么既然每种存在\(B\)不在线上的状态都有一种移动到线上的方案都可以使\(S\)减少,那么将所有\(B\)的值都移动到线上(所有\(B\)的值都在\(A\)中出现过)一定使减少量最大,所以所有\(B\)的值都在\(A\)中出现过的方案一定是最小的。
注:这里证明的是在满足\(S\)最小化的前提下,一定存在一种构造序列\(B\)方案,使得\(B\)中的数值都在\(A\)中出现过。
并不能排除存在一种\(B\)中的数值有些在\(A\)没有出现过但是依然使\(S\)最小的方案。
数字序列
第一问:
运用补集转化的思想,将最少改变的转化为最多保留的。
只有\(a[j]-a[i]\ge j-i\)时,才允许同时保留两者,变式得,\(a[j]-j\ge a[i]-i\)。那么如果一个数字\(a[j]\)想要被保留,就要满足\(\forall i<j,a[i]\le a[j]\),记\(b[i]=a[i]-i\),那么最终构造出的\(b\)序列一定是单调不下降的。由于要使保留的数最多,那么就应该求最长不下降子序列。
第二问:
第一问已经证明了,若想使\(a\)序列单调上升,就要使对应\(b\)序列单调不下降。那么使\(a\)序列单调上升的代价和使\(b\)序列单调不下降的代价是一样的。
如果将第二问的问法转化为:现在有一个序列\(B\),构造出一个序列\(B'\),满足:\(B\)单调不下降且最小化\(S=\sum_{i=1}^{N}{|B_i'-B_i|}\),只需要求出最小值\(S\)即可。
这就是\(Making\ the\ Grade\)啊…
应用\(Making\ the\ Grade\)的结论,那么若使\(S\)最小,\(B'\)中的数值一定都在\(B\)中出现过。那么可以仿照\(Making\ the \ Grade\)的dp方法依次给它分配\(B\)中的每个数值,能不能过也不知道,还没试……
继续挖掘结论。
结论:对于区间 \([l,r]\),使其单调不降,则存在分界点\(k\),使\(b_i=b_l(i≤k),b_j=b_r(j>k)\)
证明:学委的证法
从增减量的角度分析,其实和\(Making\ the \ Grade\)是一样的证法。
\(code\)
to be continued…

浙公网安备 33010602011771号