#P9165. 「INOH」Round 1 - 意外
「INOH」Round 1 - 意外
题目背景
这是一道通信题。
由于一些原因,本题有特殊的时空限制,且只有三个测试点。
您的得分是三个测试点得分的最小值。
请选手注意不要用 C++14 (GCC 9)
提交。
题目描述
通信中的意外是不可避免的。
A 程序从交互程序获得一个长度为 的数组,其元素值域为 ,A 程序对其进行编码,即 Encode
操作,生成一个长度任意,元素值域为 的数组,然后将其返回给交互程序。
交互程序会对编码生成的数组进行如下操作:
- 对于每一个元素,有 概率,将其赋成在 内的一个随机的数,有 概率不变。
之后 B 程序会从交互程序获得操作后的数组,B 程序需要对其进行解码,即 Decode
操作,根据数组信息还原出最初 A 程序从交互程序获得的数组。
实现细节
由于无法实现通信,本题以交互的形式运行。
你不需要,也不应该实现主函数,你只需要实现下面两个函数
vector <int> Encode ( vector <int> vec );
- 该函数传入一个长度为 的
vector
,返回一个任意长度的vector
。
vector <int> Decode ( vector <int> vec );
- 该函数传入一个任意长度的
vector
,返回一个长度为 的vector
。
交互库会调用 Encode
不超过 次,调用 Decode
不超过 次。
下发的交互库的实现是固定的测试数据组数,随机一个数组,并立即对其 Encode
和 Decode
,即仅用于简单检验程序。
使用时,你可以直接将实现好的 Encode
和 Decode
函数放到交互库代码里,编译运行即可。
如果交互库输出 Illegaled operation
,你将获得 分。可能的原因包括未还原原数组、返回的数组不合法。
否则交互库会输出一个整数,表示你的分数。
评测交互库不一定在 Encode
后立即 Decode
,即可能会先对若干个数组进行编码,再逐一解码。
所有的数应均在 范围内。
评分方式
设您 Encode
返回的最大长度为 ,则得分为 $ \min( 100, \lfloor \frac{1500}{ \lceil \frac{Len}{50} \rceil } \rfloor ) $。
输入格式
无
输出格式
无