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 自动生成**