正负消除问题
题意:
有一个 大小的正方形,每个位置放着 + 或 -,每次可以选取一个排列 ,将 改变状态。
证明:一定可以使得最后 - 不超过 个。
思路:
这个操作比较复杂,我们先考虑简化。
不难想到用两次操作一起来抵消某些操作,经过观察,我们发现两次操作可以使得的一个矩形的四个角颜色反转。
借助这个观察,我们可以通过消除除了最后一行最后一列之外的 - 使得只有最后一行最后一列有 -,其它都是 +。
这样就小于等于 。
继续简化。
我们考虑主对角线,不难发现,如果最后一行的某个 - 列编号和最后一列某个 - 行编号相同,我们可以通过底角和主对角线构造矩形,消去这两个 -。
这样我们把原图剖分成 个 r 字形和一个底角,每个 r 字形都最多一个 -,答案已经小于等于 了。
考虑如何消去底角的 -。
如果最后一行最后一列同时有,可以组成一个矩形使得三个角都是 -,可以减少到 。
否则,我们不妨设只有最后一列和主对角线有,显然每一行恰好一个。
我们运用一次最根本的操作,消去主对角线,这时候就是若干行有 2 个,若干行没有。
这时候只用选取两行便能完成一次消除。
考虑到最差情况消去主对角线后还剩 个,消去以此减少 2 个,刚好是 个。
很有意思的一道题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!