AT_pakencamp_2019_day4_h 板の重なり
题目描述
有 $N$ 块木板,编号分别为木板 1、木板 2,一直到木板 $N$。
每块木板 $i$ 的长度是 $L_i$ 厘米,在距离左侧 $j-1$ 厘米到 $j$ 厘米的区间中,被涂上了颜色 $S_{i, j}$。如果 $S_{i, j} = 0$,表示该区间是透明的;如果 $S_{i, j} = 1$,表示该区间是红色的。
你可以自由地放置并叠加这 $N$ 块木板。具体来说,对于木板 $i$,它的左端可以放在距离原点 $m_i$ 厘米的位置,其中 $m_i$ 是介于 0 和 10,000 之间的整数。
从上面观察这些叠放的木板,如果有某些区域至少有一层是红色的,此区域就呈现为红色。你的任务是找出一种放置方案,使得从上面看到的连续的红色区域长度最大化。请注意,你不需找到绝对最优的放置方案,只需提供一种合理的方案即可。
输入格式
输入从标准输入读取,格式如下:
```
N
s_{1,1} s_{1,2} s_{1,3} ... s_{1,L_1}
s_{2,1} s_{2,2} s_{2,3} ... s_{2,L_2}
s_{3,1} s_{3,2} s_{3,3} ... s_{3,L_3}
...
s_{N,1} s_{N,2} s_{N,3} ... s_{N,L_N}
```
输出格式
输出应为:
```
m_1 m_2 m_3 ... m_N
```
其中每个 $m_i$ 都是一个 0 到 10,000 之间的整数。
说明/提示
### 约束条件
- $N = 300$。
- $31 \leq L_i \leq 62$。
- $S_{i, j}$ 为 0 或 1。
### 测试用例生成方法
测试用例的生成步骤如下:
1. 在 31 到 62 之间随机选择 $L_i$。
2. 确定一个在 0.15 到 0.55 之间的随机数 $B$。
3. 对每个 $j$($1 \leq j \leq L_i$),以概率 $B$ 设 $S_{i, j} = 1$,以概率 $1-B$ 设 $S_{i, j} = 0$。
4. 如果结果是所有 $S_{i, j}$ 都为 0,则重做第 1 步。
### 得分规则
提交的得分计算方式如下:
- 只要有一个测试用例不符合要求(例如 $0 \leq m_i \leq 10,000$ 或输出格式错误),得分即为 0。
- 否则,假设第 $i$ 个测试用例的得分为 $a_i$,则总分为 $\frac{a_1 + a_2 + \ldots + a_{10}}{10}$,并向下取整。
各测试用例的得分计算如下:
- 如果 $D \leq 199$,得 5 分。
- 如果 $200 \leq D \leq 4,209$,得分为 $100 - 30 \log_2 \left( \frac{4,810 - D}{600} \right)$,并向下取整。
- 如果 $4,210 \leq D$,得分为 $100 + \frac{D - 4,210}{10}$。
### 输入输出示例
例如,考虑以下输入示例:
```
3
1101
011
10101
```
### 示例解释
对于该输出而言,从左数第 7 厘米到第 10 厘米的区间,其长度为 3 厘米的部分会显示为连续红色,这是最长的连续红色部分。因此,该输出的得分为 5 分。注意,这个输入示例不符合 $N = 300$ 和 $31 \leq L_i \leq 62$ 的要求,因此不包含在评分的测试数据中。所有用于评分的测试用例均满足这些条件。
**本翻译由 AI 自动生成**