- 题解
Day3 4 6思路
- @ 2025-7-17 19:01:26
T4
核心思想:通过二分答案将问题转化为判定性问题,利用二维前缀和优化判断过程。
步骤如下:
-
二分中位数:
中位数的取值范围在矩阵的最小值到最大值之间。通过二分法猜测一个中位数 x,判断是否存在至少一个 的子矩阵,其中位数不超过 x 。 -
转化为01矩阵:
对于猜测的 ( x ),将原矩阵转换为01矩阵 ( b ):- 如果 ( a_{i,j} > x ),则 ( b_{i,j} = 1 );
- 否则 ( b_{i,j} = 0 )。
-
计算二维前缀和:
对矩阵 ( b ) 计算二维前缀和,以便快速查询任意子矩阵中 ( 1 ) 的个数(即大于 ( x ) 的元素数量)。 -
判断可行性:
遍历所有 ( k \times k ) 的子矩阵,检查是否存在至少一个子矩阵,其中 ( 1 ) 的个数 ( \leq \left\lfloor \frac{k^2}{2} \right\rfloor )。如果存在,说明 ( x ) 可能是中位数,尝试更小的值;否则尝试更大的值。
时间复杂度:
- 二分次数为 ( O(\log (\text{max_val})) )。
- 每次检查的时间复杂度为 ( O(n^2) )(计算前缀和和遍历子矩阵)。
- 总复杂度为 ( O(n^2 \log (\text{max_val})) ),可以通过 ( n = 800 ) 的数据。
T6
关键思路
1. 连通块独立性
首先观察到每个连通块是独立的,整个图的方案数是各连通块方案数的乘积。因此我们可以分别处理每个连通块,最后将结果相乘。
2. 必要条件分析
对于一个连通块,要满足每个点恰好一个出边的条件,必须满足:
- 边数等于点数(即每个点贡献一条出边)
- 该连通块必须是一个基环树(即恰好包含一个环的图)
3. 方案数计算
对于满足条件的连通块(边数=点数),有2种可能的方案:
- 环上的边全部顺时针方向,其他边指向环
- 环上的边全部逆时针方向,其他边指向环
实现方法
1. 并查集处理连通块
可以使用并查集来统计每个连通块的点数和边数:
- 初始化时每个点的父节点是自己,集合大小为1
- 处理每条边时合并两个端点所在的集合
- 统计每个集合的边数(可以用哈希表记录)
2. 验证条件
对于每个连通块检查:
- 点数 == 边数 如果不满足,则整个方案数为0
3. 计算最终答案
如果所有连通块都满足条件,则总方案数为2^连通块个数(每个连通块有2种选择)
1 条评论
-
何昱辰 LV 4 @ 2025-7-17 20:31:57已修改哪一步错了?
$~~~~~1+1\\=~2\\=~4-2\\=~4+\boxed{0}-2\\=\boxed{4-\tfrac{9}{2}}+\frac{9}{2}-2\\=~\sqrt{\boxed{(4-\tfrac{9}{2})^2}}+\frac{9}{2}-2\\=~\sqrt{4^2-\boxed{2}\times4\times\boxed{\tfrac{9}{2}}+(\tfrac{9}{2})^2}+\frac{9}{2}-2\\=~\sqrt{\boxed{4^2}-\boxed{4\times9}+(\frac{9}{2})^2}+\frac{9}{2}-2\\=~\sqrt{\boxed{16-36}+(\frac{9}{2})^2}+\frac{9}{2}-2\\=~\sqrt{\boxed{-20}+(\frac{9}{2})^2}+\frac{9}{2}-2\\=~\sqrt{\boxed{25}-\boxed{45}+(\frac{9}{2})^2}+\frac{9}{2}-2\\=~\sqrt{\boxed{5^2-2\times5\times\tfrac{9}{2}+(\tfrac{9}{2})^2}}+\frac{9}{2}-2\\=~\cancel{\sqrt{(5-\frac{9}{2})^2}}+\frac{9}{2}-2\\=~5-\cancel{\frac{9}{2}+\frac{9}{2}}-2\\=~5-2\\=~\!\!\boxed{3}←???????$
- 1