ARC186A 题解 和 官方题解ChatGPT翻译版

题意简述

对于一个 N×N01 矩阵 A,令 Ci=j=1NAi,j,Rj=i=1NAi,j

(C1,,CN,R1,,RN) 对应相同的矩阵归到同一个等价类,对于某个等价类,集合 S 中的元素是满足对于该等价类中所有 A,都有 Ai,j 相等(i,j)

给出 N,有 Q 次询问,每次询问一个 k是否存在 |S|=k 的非空等价类,其中 N30,1QN2+1,0kN2

题解

首先,对于 01 矩阵形态无限制,可以考虑放在一个 N+N 的完全二分图上边定向,即:

  • Ai,j=1ricj 连边。
  • Ai,j=0cjri 连边。

发现此时 c,r 的入度(或者出度,总和为 N)与 C,R 的限制等价。

再考虑对于所有度数相同的图都有 Ai,j 相等的限制,对于任意两个同一等价类且不同的定向后二分图 A,B,先删除都存在的边,发现此时两者的 C,R 仍然相同,但不存在都存在的边,且剩下的边都是相反的,所以对于任意点都有出度等于入度,那么此时整个图是由多个环构成的,发现还存在的边在环内,可以通过翻转整个环使 C,R 不变。

于是得到结论:Ai,j 不固定当且仅当其在环上。再说的清楚一点,因为通过上面的过程可以发现两个 A,B 可能不同的只有在环上的边,且在环上的边可以通过翻转整个环使这条边相反。

然后可以暴力枚举强连通分量的大小来转移答案,假设左边有 x 个点,右边有 y 个点,不定的边就有 xy 条,且二分图上可以构造强连通分量的充要条件是 x,y2

那么可以 DP,考虑设 fi,j,s 为前 ir 和前 jc,强连通分量内的边数为 s,枚举新的强连通分量的大小即可,注意我们只想判断可行性,可以钦定不同强连通分量内的边之间没有交叉。

时间复杂度 O(n6),常数较小(最大的点跑了 6 ms)。

发现 DP 内记录的值为 01,可以考虑设 fi,s 为左边选了 i 个点时,要得到 s 条强连通分量内边所需的最小 j,应该可以做到 O(n5)?有时间再补。

O(n6) 代码

ChatGPT 翻译

以下是 ChatGPT 翻译内容 Update on 2024.11.1 已补

如果有谁看不懂这篇题解或者需要更详细的题解的可以 Luogu 私信我,Sky_Maths,因为我还没看,有空再补。

基于图的重新表述

对于一个元素为0或1的 N×N 矩阵 A,考虑从一个完整的二部图构建的有向图。该图的顶点由两部分组成:(R1,,RN)(C1,,CN),其边的方向如下:

  • 如果 Ai,j=1,则边从 Ri 指向 Cj
  • 如果 Ai,j=0,则边从 Ci 指向 Rj

此外,我们称两个图是相似的,如果对于每个顶点,它们的入度和出度相等。我们说图中的一条边是固定的,如果该边在所有相似图中都存在(且方向相同)。

这样的有向 KN,N 图和 N×N 的矩阵之间存在一一对应关系,矩阵中在第 i 行第 j 列的元素固定相当于 RiCj 之间的边是固定的(不论方向如何)。通过这种有向图的重新表述,我们可以对该图进行分析。

解决方案

考虑两个相似的图,检查在移除所有相同方向的边后剩下的部分。根据相似图的定义,剩下图中每个顶点的入度和出度相等。这意味着剩下的图由若干个循环组成。反过来,对于任何图,如果我们将循环中的所有边方向反转,我们就得到了一个与原图相似的图。

因此,如果一条边是循环的一部分,那么它不是固定的。我们可以使用动态规划来确定以下值的可能组合,总时间复杂度为 O(N6)(如果常数因子过大,可以预先计算所有情况并硬编码答案):

  • (R1,,RN) 中已分配到强连通分量的顶点数量
  • (C1,,CN) 中已分配到强连通分量的顶点数量
  • 包含在强连通分量中的边的数量(即,不是固定的)

请注意,由于图是二部的,在创建强连通分量时,必须至少从 (R1,,RN)(C1,,CN) 中各选择两个顶点。反之,如果两个部分各有两个或更多的顶点,则总是可以实现强连通性。**

这是我自己的内容

我的英语好差啊/ll
不敢发/ll
Excuse me, I can't use English very well, but can we solve problem A in a better time complexity?
Try to use f[i][s] as: the min R points be used when the C use i points and get s edges not on the circle, can it be solved on O(n5)?

posted @   SkyMaths  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示