luogu#P11481. [NordicOI 2017] IP over Avian Carriers(通信题无法评测)
[NordicOI 2017] IP over Avian Carriers(通信题无法评测)
题目背景
译自 Nordic Olympiad in Informatics 2017 IP over Avian Carriers。
本题为通信题,目前无法评测。
题目描述
如果你住在芬兰的树林深处,远离所有城市,互联网连接的质量可能会非常不稳定。这对参与在线的程序设计竞赛来说显然是不利的,尤其是大多数竞赛都在线上进行。
为了提高互联网连接的可靠性,互联网工程任务组于 1990 年 4 月 1 日发布了一个名为 "IP over Avian Carriers" 的标准。这个标准描述了如何使用鸟类来传递互联网流量。鸟类不会因为电缆断裂或停电等问题而中断连接,因此可以作为标准互联网连接的有效备用选项。然而,鸟类也有其他问题。当发送多只带有数据的鸟时,数据可能不会按顺序到达,并且某些鸟在途中可能丢失。
你的任务是实现两个程序,为这种鸟类传输协议添加一些冗余:一个编码器和一个解码器。编码器会接收一个由 个比特组成的字符串 (即由 和 组成的数字,且 ),并生成一个 个元素的向量 ,其中每个 是一个长度为 的字符串。
之后,解码器会接收从该向量中选取的 个元素的子集。然后它应输出原始的比特串 。
编码器
你的编码器需要实现函数 vector<string> encode(int C, int K, int N, string X)
。它会接收任务描述中的整数 、、 和比特串 。
的长度为 ,并且仅包含字符 和 。
编码器应输出一个包含 个字符串的向量。每个字符串的长度应为 ,并且仅包含字符 和 。
解码器
解码器需要实现函数 string decode(int C, int K, int N, vector<string> Y, vector<int> I)
。它会接收任务描述中的整数 、、,以及由编码器输出的字符串 中选取的子集 。
向量 和 的长度均为 。 包含编码器输出的字符串的零基索引,使得 是 的值(即 )。
解码器应输出长度为 的原始比特串 。
实现
你可以使用 C++、Java、Python 或 C# 实现你的解决方案。所需实现的模板可以从提供的链接中下载。注意,你只需提交以下文件之一:avian.cpp、avian.java、avian.py 或 avian.cs。
注意:
- 在此任务中,你不应使用标准输入或标准输出(即通过终端读取或写入)。否则可能会导致混乱的错误。
- 此外,在运行解码器之前,程序会被重启。因此,任何全局状态都会被清除。
输入格式
包含的示例评测程序会读取以下格式的输入:
第 行:
第 行:
第 行:
输出格式
示例评测程序会输出 decode
函数的返回值。
提示
你的解决方案将在一组子任务上进行评分。每个子任务包含多个测试用例。要获得子任务的分数,你的解决方案必须通过子任务中的所有测试用例。
子任务 | 分数 | 限制条件 |
---|---|---|
,, | ||
,,, 为偶数 | ||
,, | ||
,, |