首发题解,庆祝一下
大家好,我是ЭНТДЖЕЙ,今天是我2026年第十八次正式发题解!
2026年发布的题解!
能不能点个赞
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先简化题意:
* 共有 NNN 种商品,第 iii 种商品的价格为 viv_ivi ,现在有 MMM 种交换方式,第 iii 种交换方式为 将序号为 xxx 的商品换为序号为 yyy 的商品,并且你会获得(或失去)vx−vy−1v_x - v_y - 1vx −vy −1 元钱。你现在手上有商品 aaa ,你希望通过交易,用最少得钱,将 aaa 交换为 bbb 。
然后就是写代码:
* 处理输入(READ):
* 正常输入
* 核心部分(PROCESS):
* 可以直接广搜,然后输出
* 但是如果直接广搜,广搜 手上是什么序号的上商品,花了多少钱,这样会超时(好像,反正不能A)
* 那么只能优化:
* 注意到将 aaa 换成 bbb,假设换了 nnn 次后,手上的商品为 bbb,其中,换了 iii ,次后手上的商品为 sis_isi ,则总花费为:
(vs1−va−1)+(vs2−vs1−1)+⋯+(vb−vsn−1−1)(v_{s_1} - v_a - 1) + (v_{s_2} - v_{s_1} - 1) + \cdots + (v_b - v_{s_{n-1}} - 1)(vs1 −va −1)+(vs2 −vs1 −1)+⋯+(vb −vsn−1 −1)
=vs1−va−1+vs2−vs1−1+⋯+vb−vsn−1−1= v_{s_1} - v_a - 1 + v_{s_2} - v_{s_1} - 1 + \cdots + v_b - v_{s_{n-1}} - 1=vs1 −va −1+vs2 −vs1 −1+⋯+vb −vsn−1 −1
=−va+vb+(−1−1−⋯−1)⏟n个= -v_a + v_b + \underbrace{(-1 - 1 - \cdots - 1)}_{n\text{个}}=−va +vb +n个(−1−1−⋯−1)
=vb−va−n= v_b - v_a - n=vb −va −n
* 所以实际的花费只和 aaa、bbb 和 交换次数 有关
最后输出(WRITE):
* 输出结果
完整代码:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
🎉完结撒花🎉