Making the Grade与数字序列

Making the Grade数字序列解题报告

感觉两道题的结论以及证明方法都有相似的地方,所以放在了一起。

upd:第一次做的时候没看出来,这俩其实本质上就是同一道题……


Making the Grade

结论:

在满足\(S\)最小化的前提下,一定存在一种构造序列\(B\)的方案,使得\(B\)中的数值都在\(A\)中出现过。

证明:
image

将结果用坐标轴的形式表示出来。其中\(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…

posted @ 2021-09-23 21:39  RapunzelOnly  阅读(113)  评论(0)    收藏  举报