Educational Codeforces Round 173 (Rated for Div. 2) E
CF2043E
题意
给定两个 的矩阵 和 (其中的整数介于 和 之间),可以对 矩阵进行如下操作,问是否能变换为矩阵 。
- :选择两个整数 和 ,并将第 行中的每个元素替换为 与该元素 运算的结果。
- :选择两个整数 和 ,并将第 列中的每个元素替换为 与该元素 运算的结果。
数据范围:,。
做法
前置知识:差分约束系统。
按位考虑。在某一位的情况下考虑问题,操作等价替换为:
1、将某一行的元素全部变为 ;
2、将某一列的元素全部变为 。
显然每一行 / 每一列均至多操作一次。
考虑给行、列操作定义执行顺序,则容易发现,若 中某元素 要从 变为 ,等价于对行 的操作一定要后于列 ,反过来也是类似。
那么, 中元素若需要修改,则等价于给两个变量确定一个大小关系。
这让我们联想到差分约束系统。
但实际上,就算 中元素不需要修改,也可能需要满足某些变量之间的大小关系,具体来说:若 在某位置上为 且不需要修改,则需要考虑若该列修改过,那么该行的操作必须后于列 ,若列 未操作,则无要求,反过来也是类似。
因此,对于是否操作过某行 / 某列打个标记,每次确定要修改某行 / 某列时也需判断该行 / 该列的其他元素是否额外增加了约束条件。
最后跑个 spfa 判断是否有负环即可。
时间复杂度:(实际上远远到不了此上限)。
评测链接。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)