#P13375. [GCJ 2011 #2] Spinning Blade
[GCJ 2011 #2] Spinning Blade
Description
你对自己秘密基地设计中的陷阱感到厌倦,决定采用一种经典但总是令人愉快的装置——“旋转刀片”。你订购了一块非常重的金属板,准备从中切割出刀片;在金属板上会绘制一个均匀的 行 列的方格。你已经确定了刀片的最佳形状——你将首先切割出一个 的大正方形方格,其中 。然后,你会将该正方形的四个 的角格切掉,最终得到一个“刀片”。确定好这些后,你就开始等待金属板的到来。
当金属板到达时,你震惊地发现板材有瑕疵!你原本期望每个格子的质量都是 ,但实际上由于厚度的差异,每个格子的质量会有些许变化。这很糟糕,因为你想要在刀片的正中心插入一个轴并让其高速旋转,因此刀片的质心必须恰好位于其中心。二维物体的质心定义见下文。
给定方格和每个格子的质量,求你能切割出的最大尺寸的刀片,使得其质心恰好位于中心。
Input Format
输入的第一行是测试用例数 。接下来有 组测试数据。每组测试数据第一行为三个整数:、 和 ——方格的行数、列数以及你期望每个格子的质量。接下来的 行每行包含 个数字 ,表示实际质量与期望质量的差值。每个格子的实际质量为 ,其中 。
Output Format
对于每个测试用例,输出一行,格式为 “Case #: ”,其中 是测试用例编号(从 开始), 是你能切割出的最大刀片尺寸。如果不存在尺寸至少为 且满足条件的刀片,输出 “IMPOSSIBLE”。
2
6 7 2
1111111
1122271
1211521
1329131
1242121
1122211
3 3 7
123
234
345
Case #1: 5
Case #2: IMPOSSIBLE
Hint
样例说明
二维物体的质心正式定义为一个点 。如果你对物体中的所有点 计算 的和,结果必须为 。其中 、 和 都是二维向量。这个定义同样适用于将每个格子视为一个“点”,其全部质量集中在中心。
在现实生活中,你可以把手指放在一个平面物体的质心下方,并让物体平衡在手指上,它不会倾倒。
举例来说,在第二个样例测试中,唯一可行的刀片是 的刀片(去掉四个角),其质心位于点 ,假设金属板左下角坐标为 ,坐标分别向右和向上递增。可以通过以下等式验证:$(-1.04, 0.04) \times 9 + (-0.04, 1.04) \times 9 + (-0.04, 0.04) \times 10 + (-0.04, -0.96) \times 11 + (0.96, 0.04) \times 11 = (0, 0)$。
数据范围
- 。
- 。
- 输入文件大小不超过 625KB。
小数据范围(8 分,测试点 1 - 可见)
- 。
- 。
- 。
- 时间限制:3 秒。
大数据范围(12 分,测试点 2 - 隐藏)
- 。
- 。
- 。
- 时间限制:6 秒。
由 ChatGPT 4.1 翻译
京公网安备 11011102002149号