luogu#P9165. 「INOH」Round 1 - 意外

「INOH」Round 1 - 意外

题目背景

这是一道通信题。

由于一些原因,本题有特殊的时空限制,且只有三个测试点。

您的得分是三个测试点得分的最小值。

请选手注意不要用 C++14 (GCC 9) 提交。

题目描述

通信中的意外是不可避免的。

A 程序从交互程序获得一个长度为 10210^2 的数组,其元素值域为 [0,998244353) \lbrack 0, 998244353 ) ,A 程序对其进行编码,即 Encode 操作,生成一个长度任意,元素值域为 [0,998244353)\lbrack 0, 998244353 ) 的数组,然后将其返回给交互程序。

交互程序会对编码生成的数组进行如下操作:

  • 对于每一个元素,有 50%50\% 概率,将其赋成在 [0,998244353) \lbrack 0, 998244353 ) 内的一个随机的数,有 50%50\% 概率不变。

之后 B 程序会从交互程序获得操作后的数组,B 程序需要对其进行解码,即 Decode 操作,根据数组信息还原出最初 A 程序从交互程序获得的数组。

实现细节

由于无法实现通信,本题以交互的形式运行。

你不需要,也不应该实现主函数,你只需要实现下面两个函数

  1. vector <int> Encode ( vector <int> vec );
  • 该函数传入一个长度为 10210^2vector,返回一个任意长度的 vector
  1. vector <int> Decode ( vector <int> vec );
  • 该函数传入一个任意长度的 vector,返回一个长度为 10210^2vector

交互库会调用 Encode 不超过 3×1043 \times 10^4 次,调用 Decode 不超过 1×1041 \times 10^4 次。

下发的交互库的实现是固定的测试数据组数,随机一个数组,并立即对其 EncodeDecode,即仅用于简单检验程序。

使用时,你可以直接将实现好的 EncodeDecode 函数放到交互库代码里,编译运行即可。

如果交互库输出 Illegaled operation,你将获得 00 分。可能的原因包括未还原原数组、返回的数组不合法。

否则交互库会输出一个整数,表示你的分数。

评测交互库不一定在 Encode 后立即 Decode,即可能会先对若干个数组进行编码,再逐一解码。

所有的数应均在 [0,998244353) \lbrack 0, 998244353 ) 范围内。

评分方式

设您 Encode 返回的最大长度为 LenLen,则得分为 $ \min( 100, \lfloor \frac{1500}{ \lceil \frac{Len}{50} \rceil } \rfloor ) $。

输入格式

输出格式