logo AlgoBeat OnlineJudge
登录 注册

#214616. 「1&0OI R1」三月雨

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

这是一道函数式交互题。请使用合适版本的 C++ 提交,建议不要使用 C++14 (GCC 9)。

 

过往的场景渐渐在某些方面模糊,在另一些方面却回响得愈发清晰。

即使相处的一切在日复一日的孤独中逐渐碎散,却仍未习惯身边失落的曾经存在的温度。

当试图吟哼镌刻着良辰美景的旧曲时,才发现太久的离别已使珍惜的记念闪烁不定。

不……不能忘却……

潸然的泪织成了细密的网,隔绝着窗外静谧的春夜。


常常追忆过去。

她现在正在试图想起 为她弹奏的那首曲子。曲子可以被看做一个由 个音符组成的序列 索引从 开始,其中的每个音符 可以用一个非负整数来代表。

不幸的是,由于缺乏绝对音感加之离别日久,她已经忘却了每个 具体是什么,这给她的追忆旅程带来极大挑战。

然而,她仍留存着某『感觉』。感觉是一个数值,与乐段内每一个音符有关。对于一个从乐曲第 个音符开始到第 个音符结束的乐段 ,她有两种感觉:

  • 一种感觉是这个乐段每对不同音符的按位与的和,即

  • 一种感觉是这个乐段每对不同音符的按位异或的和,即

这里,“每对”为无序对。 分别表示按位与运算和按位异或运算。

由于 曾经非常多次以不同的开始和结尾向 演奏曲子,所以 确信对于任意的 ,她都还记得乐段 的两种感觉。注意这个乐段的长度至少为

因为过度悲伤, 的 OI 水平急剧下降,无法推算还原出曲子的模样,请你帮助她!你可以向她咨询她对于一些乐段的感觉,并最后告诉她原曲每个音符是什么。

形式化地,有一个长为 未知序列 ,定义 。你可以进行若干次操作,每次操作为给定 并查询 。你最后需要确定 的值并返回序列


【交互格式】

你不需要也不应该实现 main 函数。

你需要实现以下函数:

  • std :: vector<int> sanyueyu(int n);
    • 参数 表示乐曲的长度;
    • 其应该返回一个持有 int 类型的 vector,长度为 ,且该 vector 的第 个元素为

你可以调用如下函数:

  • long long ask_and(int l, int r);
  • long long ask_xor(int l, int r);
    • 参数 均表示询问乐段的左右端点。

    • 分别返回乐段 的第一种『感觉』和第二种『感觉』的值,即

由于洛谷的交互机制,你应该将这些函数的原型声明在文件开头:

std :: vector<int> sanyueyu(int n);
long long ask_and(int l, int r);
long long ask_xor(int l, int r);

以下是一个您的程序可能的结构:

// 这里引入你需要的头文件
 
/* 
这里放置你要声明的全局变量 
*/ 

std :: vector<int> sanyueyu(int n);
long long ask_and(int l, int r);
long long ask_xor(int l, int r);

std :: vector<int> sanyueyu(int n){
	std :: vector<int> ans;
	/*
	这里放置你的解题代码
	*/
	return ans; 
}

输入格式

以下为交互库的输入格式,你的程序不需要,也不应该从标准输入读入任何数据。

第一行输入两个整数 含义如题所述, 与你的测试点的得分有关,具体含义见【评分标准】。

第二行输入 个整数,依次代表

输出格式

交互库会与 Special Judge 部分进行交互,以使 Special Judge 返回特定的分数和错误信息。

你的程序不需要,也不应该向标准输出输出任何数据。

数据范围与提示

【评分标准】

对于每个测试点,你的程序若满足以下任意一条条件,将获得 分:

  1. 你的程序 CE/RE/TLE/MLE/UKE 了。
  2. 你某一次调用 ask_andask_xor 时传入的 不满足
  3. 你返回的 vector 长度不为
  4. 对于你返回的 vector,存在一个 ,使得你的 vector 项不为

对于情况 2~4,测试点将显示为 WA,并且尽管比赛中不会显示, 仍然会告诉你错误信息,分别为 Error:2Error:3Error:4,优先级递减。

否则,你将在该测试点获得分数。对于每个测试点,有一个特定的参数 。设你的程序在该测试点调用 ask_andask_xor 的总次数为

  • 如果 ,那么你将获得该测试点 的分数。
  • 否则,你将获得 的分数,测试点将显示为 WA,并返回 Error:1(比赛时同样不可见)。

【数据范围】

对于所有测试点,有:

  • ;

每个测试点的具体数据范围见下表。

::cute-table{tuack}

测试点编号
^
^
^ ^
^
^

【checker 与交互库】

为方便选手调试,本题提供了一个 checker,在附件中。它的输入格式与上文【输入格式】部分的格式相同。

使用时,你可以将你的代码粘贴到 checker 开头,或以任意合理的方式嵌入你的代码,然后运行 checker 并输入自造数据。

如果你的程序通过了该组自造数据,checker 的输出信息将以 Accept! 打头;否则将会以 Error:1~Error:4 打头,这些前缀的含义同【评分标准】。

checker 还会给出一些其他有利于调试的信息,请自行阅读这些信息以理解其含义。

请注意,交互库的实现与 checker 完全不同,你的代码不应依赖 checker 的具体实现。

作为参考,交互库调用一次 ask_andask_xor 的时间复杂度均为 。如果你的程序时间复杂度正确,交互库应该能在规定的时间内完成对你的程序的判定。