1 条题解
-
0
「PA 2019 Final」Pionki 题解
核心思路
1. 移动方向约束分析
棋子只能从 移动到 、 或 ,这意味着:
- 移动是有向的,从坐标小的位置流向坐标大的位置
- 构成一个三维网格 DAG(有向无环图)
2. 流量守恒建模
定义每个单元格的净需求量:
- 如果 :该格需要流出棋子
- 如果 :该格需要流入棋子
- 如果 :该格棋子数正好
3. 前缀和条件
对于任意 ,定义三维前缀和:
$$S(x,y,z) = \sum_{i=1}^x \sum_{j=1}^y \sum_{k=1}^z d_{i,j,k} $$关键性质:状态可达的充要条件是:
- (题目已保证)
- 对所有 ,有
4. 直观解释
- 表示从 到 这个子长方体中,初始比目标多出的棋子数
- 由于棋子只能向坐标增大的方向移动,多出的棋子可以送到后面,但缺少的棋子无法从后面补充
- 因此任何前缀区域都不能缺棋子(即 )
算法实现
1. 三维前缀和计算
按 字典序递增计算:
$$S(i,j,k) = S(i-1,j,k) + S(i,j-1,k) + S(i,j,k-1) - S(i-1,j-1,k) - S(i-1,j,k-1) - S(i,j-1,k-1) + S(i-1,j-1,k-1) + d_{i,j,k} $$2. 可行性检查
遍历所有 ,检查 是否成立。
3. 复杂度分析
- 每个测试点:
- 由于 ,且 ,总复杂度可接受
- 1
信息
- ID
- 4267
- 时间
- 6000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 1
- 上传者