P8266 [USACO22OPEN] Photoshoot B
以为动态规划,实际贪心。其实这个后来也发现是贪心了。
个人的思路:如果在1~2n中,更赛牛位于奇数的位置更多,那么就调换。
调换1~2n时,奇数的位置变偶数,偶数的位置变奇数。
但是考虑每个 G 的变化十分麻烦,所以要进行转化。
摘自题解:
根据翻转的特性,不妨每两位作为一个整体进行考虑,不难发现,如果连续两个位置是相同的,那么翻转不会对它产生影响,所以可以忽略这种情况。还剩下两种情况,因为要让 G 尽可能在偶数位,可以假设 HG 是 1 ,而 GH 是 0 。那么原串可以转换成一个 01 串,同时原串的一次前缀翻转对应到新串变成了一次前缀的翻转加 01 变换,目标就是让新串的 1 尽可能多。
此时问题就变得很简单了,新串由很多 01 段组成,我们可以不断的对第一段进行操作,这样翻转不会对第一段产生影响,但第一段会 01 互换,然后与第二段合并到一起,不断这样操作,最终就可以让串变成全 1 ,这个答案是最优的。
嘶你说这思路咋想到的。
d利用操作只作用于偶数长度前缀这一特性,将奶牛两两分组。每组的两个位置(奇偶)是固定的,操作会反转组的顺序并交换组内两头奶牛的位置。
这可能是吧。明天再打一遍。

浙公网安备 33010602011771号