AT_wn2017_1_a Satellite data compression
题目描述
美国大陆的某一地区被每隔 $5$ 分钟观测一次,共有 $4$ 次观测数据。由于数据按光的波长划分为 $16$ 个通道,因此总共有 $64$ 个卫星数据文件。
请编写一个程序,实现数据的压缩和解压,并且程序源代码需要同时支持这两种功能。
输入格式
输入由连续两个阶段组成:压缩阶段和解压阶段。
在压缩阶段,输入格式如下:
> encode $UserEncodingFileName$ $DirectoryName$ $N$ $file_1$ $fileSize_1$ $file_2$ $fileSize_2$ : $file_N$ $fileSize_N$
在解压阶段,输入格式如下:
> decode $UserEncodingFileName$ $UnzipDirectoryName$
输出格式
在压缩阶段,输出一个以给定文件名命名的压缩文件。如果生成了其他名称的文件,尽管会被评判,但会在之后的手动检查中删除。
如果不慎生成了错误文件,请通过比赛的问答页面与我们联系。
在解压阶段,请将所有数据解压到指定的目录中。
说明/提示
- 所给文件总数 $N = 64$
- `encode` 和 `decode` 两个字符串用于区分压缩和解压阶段
- $UserEncodingFileName$ 是输出压缩文件的绝对路径,由字母和斜杠构成,不超过 $50$ 个字符。
- $DirectoryName$ 是待压缩目录的绝对路径,由字母和斜杠构成,不超过 $50$ 个字符。
- $file_i$ 是待压缩文件的名称,由字母、数字、连字符、下划线或点构成,不超过 $100$ 个字符。
- $fileSize_i \leq 120,000,000$,所有 $fileSize_i$ 的总和不超过 $1,200,000,000$。
- $UnzipDirectoryName$ 是解压目录的绝对路径,由字母和斜杠构成,不超过 $50$ 个字符。
### 得分计算方法
如果程序能正确压缩和解压,得分将是压缩率乘以 $1,000,000$,否则得分为 $0$。
### 补充说明
压缩率使用以下公式计算:
\[
1 - \frac{\text{参赛者算法压缩后的数据大小}}{\text{bz2压缩后的数据大小}}
\]
- 其中 bz2 压缩指的是使用 `-9` 选项时的压缩大小,对于评分数据来说,压缩后的大小是 $507,803,245$ 字节。
- 奖金由提交的压缩率决定:若高于 bz2 压缩,奖金为 $300,000$ 日元,每提高 $1\%$ 增加 $10,000$ 日元,最多可达 $1,000,000$ 日元。
- 比赛不鼓励简单使用现有的压缩库。尽管系统可能会显示通过,但结束后评委会对代码进行审核。
### 卫星数据背景介绍
GOES(静止气象卫星)由美国国家海洋和大气管理局操作,东、西各布置一颗。GOES-16 是作为东边的卫星计划于 2017 年 12 月开始运行。通过 ABI(高级基准成像仪)进行观测,按波长划分为 $16$ 个频段,每个频段的分辨率不同,具体信息如下表。
| 频段 | 波长 (μm) | 中心波长 | 分辨率 (km) | 像素数 (x * y) |
| --- | --- | --- | --- | --- |
| 1 | 0.45-0.49 | 0.47 | 1 | 5000 * 3000 |
| 2 | 0.59-0.69 | 0.64 | 0.5 | 10000 * 6000 |
| 3 | 0.846-0.885 | 0.865 | 1 | 5000 * 3000 |
| 4 | 1.371-1.386 | 1.378 | 2 | 2500 * 1500 |
| 5 | 1.58-1.64 | 1.61 | 1 | 5000 * 3000 |
| 6 | 2.225-2.275 | 2.25 | 2 | 2500 * 1500 |
| 7 | 3.80-4.00 | 3.90 | 2 | 2500 * 1500 |
| 8 | 5.77-6.6 | 6.19 | 2 | 2500 * 1500 |
| 9 | 6.75-7.15 | 6.95 | 2 | 2500 * 1500 |
| 10 | 7.24-7.44 | 7.34 | 2 | 2500 * 1500 |
| 11 | 8.3-8.7 | 8.5 | 2 | 2500 * 1500 |
| 12 | 9.42-9.8 | 9.61 | 2 | 2500 * 1500 |
| 13 | 10.1-10.6 | 10.35 | 2 | 2500 * 1500 |
| 14 | 10.8-11.6 | 11.2 | 2 | 2500 * 1500 |
| 15 | 11.8-12.8 | 12.3 | 2 | 2500 * 1500 |
| 16 | 13.0-13.6 | 13.3 | 2 | 2500 * 1500 |
本次比赛使用的 CONUS 数据是覆盖美国大陆 5000 公里 * 3000 公里的区域,每隔 5 分钟观测一次,持续 15 分钟。
### 参考信息
- [GOES-R 文档](http://www.goes-r.gov/resources/docs.html)
- [不含头部的卫星数据(用于评分的二进制数据)](https://s3-ap-northeast-1.amazonaws.com/wni-pgcontest/ContestData/bin_4obs.tar.bz2)
- [含头部的卫星数据(netCDF 格式)](https://s3-ap-northeast-1.amazonaws.com/wni-pgcontest/ContestData/original.tar.bz2)
- [netCDF 数据查看器](https://www.giss.nasa.gov/tools/panoply/)
### 示例解释
- 示例 1:在压缩阶段,输入为 `/AtCoder/Dir/fileA`, `/AtCoder/Dir/fileB`, `/AtCoder/Dir/fileC` ,请压缩为 `/AtCoder/ZipFile` 。
- 示例 2:在解压阶段,解压 `/AtCoder/ZipFile` 中的文件,输出至 `/AtCoder/UnzipDir/` 目录下对应文件。
**本翻译由 AI 自动生成**