专栏文章

Div2 1023 F1

CF2107F1题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mipe565t
此快照首次捕获于
2025/12/03 10:31
3 个月前
此快照最后确认于
2025/12/03 10:31
3 个月前
查看原文
类似 CSP-S2023 的 T2 ,都是短小精悍的 DP。
首先观察到,操作只有两种,一是直接超过,代价为 aia_i,二是通过超能力,将 aia_iaja_j 调换,代价为 ji(j>i)j-i(j > i)
我们发现,想到达一个目的地,可以将前面较小的数字换过来,之后一直把这个1小数字换到前面再超过,如下:
第一步4,2,5,7,me第二步4,5,7,2,me第三步4,5,7,me,2第四步4,5,2,me,7第五步4,5,me,2,7第一步 \\ 4,2,5,7,me \\第二步\\4,5,7,2,me\\第三步\\4,5,7,me,2\\第四步\\4,5,2,me,7\\第五步\\4,5,me,2,7
以此类推,每回把 22 提过去超越,再调回来,再超越,直到终点。
假设我们目前在位置 xx,被调换的数字在位置 yy,目的地是 pp,显然,代价为 xy1x-y-1 (把 axa_x 换到你所在位置的前一个),加上 (xp)×ay(x-p)\times a_y (超越 aya_y 所花费的),加上 xp1x-p-1 (把 aya_y 向前换,跟着我们走的花费)
总代价整理得 (xp)×ay+x+xyp2(x-p)\times a_y + x+x-y-p-2
可以证明,要前往位置 pp,我们所选的应该是 [p,x][p,x]aya_y 最小的值 (值相同的越靠右越优)
证明:不妨设 ay1<ay2(y1,y2[p,x])a_{y1} < a_{y2} (y1 ,y2\in [p,x])
{(xp)×ay1+x+xy1p2(xp)×ay2+x+xy2p2\begin{cases} (x-p)\times a_{y1} +x+x- y1-p-2\\ (x-p)\times a_{y2} +x+x- y2-p-2 \end{cases}
上下式子相减得
y2y1+(ay1ay2)×(xp)y2-y1+(a_{y1}-a_{y2})\times (x-p)
可以证明,因为 y1,y2[p,x]y1,y2 \in [p,x],所以 y1y2<xpy1-y2 < x-p ,又因为 (ay1ay2)1(a_{y1}-a_{y2}) \ge 1,所以上述式子小于 00
故选择 aya_y 最小的最优
转移很显然,设 dpidp_i 表示目前我在位置 ii,抵达 11 所需的最小代价,则按式子
dpj=min(dpj,dpi+(ij)×mi+i+ijpos2)dp_j=\min(dp_j,dp_i+(i-j)\times mi + i+i-j-pos-2)
转移即可
其中,pos[j,i1]pos \in [j,i-1],指最小值的下标 , mimi 指其中最小值
时间复杂度 O(n2)O(n^2)

评论

0 条评论,欢迎与作者交流。

正在加载评论...