2024TJUACM 3.4-3.10第一周记录

本周概要总结

比赛训练:

算法分享:_反悔贪心

RM-1 Bitwise Operation Wizard

题目信息

这是一个交互问题

有一个秘密序列 ,它是 的排列组合。

你需要找到任意两个索引 使 最大化,其中 表示异或运算。

为此,您可以提出查询。每个查询的形式如下:选取任意索引 )。接下来,评测机计算 ,其中 表示或运算。最后,你会得到 的比较结果。换句话说,你会被告知是 还是

请找出任意两个索引 ( ),使得 在所有这样的索引对中最大,最多使用 个查询。如果有多对索引满足条件,您可以输出其中任何一个。

互动

每个测试用例的第一行都包含一个整数 ( )。此时,选择的是排列组合 。这项任务中的交互器是非自适应的。换句话说,序列 在每个测试用例中都是固定的,在交互过程中不会改变。

要进行查询,您需要选择四个索引 ),并打印出查询结果。

打印以下格式的行:

  • "? a b c d"

然后,您将收到

  • "<" if
  • "=" if
  • ">" if

您最多可以进行 次这种形式的查询。

接下来,如果你的程序找到了一对索引 ( ),使得 最大化,那么请打印以下形式的一行:

  • "! i j"

请注意,这一行不被视为查询,在计算查询次数时也不被考虑在内。

之后,进入下一个测试用例。

如果您在交互过程中提出的查询次数超过 ,您的程序必须立即终止,否则将得到

打印查询或测试用例的答案后,不要忘记输出行尾并刷新输出。否则,您将得到的结果。为此,请使用

  • fflush(stdout) 或 C++ 中的 cout.flush();
  • Java 中的 System.out.flush();
  • Pascal 中的 flush(output);
  • Python 中的 stdout.flush();
  • 请参见其他语言的文档。

保证所有测试用例中 的总和不超过

题目解析

AC代码

RM-2 Too Min Too Max

题目信息

给定由 个元素组成的数组 ,求表达式的最大值:

其中, 是数组 的四个不同的索引,其中

这里的 表示 的绝对值。

题目解析

RM-3 Yet Another Coin Problem

题目信息

你有 种不同的硬币,每种硬币的价值都等于前 个三角形数字中的一个:这些硬币种类非常多。你的目标是找出所需的最少数量的这些硬币,使它们的总价值相加正好是

题目解析

RM-4 Find A Mine

问题描述

这是一个互动问题。

给你一个行数为 列数为 的网格。坐标 代表网格上的单元格,其中 ( ) 是从上往下数的行号, ( ) 是从左往右数的列号。( )是从左数起的列数。网格中保证有 颗地雷位于个不同的单元,分别表示为 。允许向交互器提出的查询次数不超过 次,在这些查询之后,您需要提供其中个地雷的位置。

在每次查询中,您可以选择任意网格单元 ,作为回报,您将得到从两个地雷到所选单元的最小曼哈顿距离,即您将得到值

您的任务是在进行查询后确定其中一个地雷的位置。

互动

对于每个测试用例,交互从阅读 开始。

然后,您最多可以按以下方式进行 次查询:

"? x y" ( )

每次查询后,您都应该读取一个等于 的整数

找到任何一个地雷的位置后,打印一行"!x y"(不带引号),表示其中一个地雷的行和列。输出答案不算查询。

打印答案后,程序必须继续解决剩余的测试用例,如果所有测试用例都已解决,则退出程序。

这个问题的交互器不是自适应的:在进行任何查询之前,地雷的单元格都是固定的。

打印查询后,不要忘记输出行尾并刷新输出。否则会出现 "超过闲置限制 "的提示。为此,请使用

  • 在 C++ 中使用 fflush(stdout) 或 cout.flush();
  • Java 中的 System.out.flush();
  • Pascal 中的 flush(output);
  • Python 中的 stdout.flush();
  • 请参见其他语言的文档。

题目解析

AC代码

RM-5 XOR Break — Solo Version(Hard)

题目信息

给定一个初始值为 的整数变量 。一次断点续传操作包括以下步骤:

  • 选择一个值 ,使得 .
  • 通过设置 或设置 来更新

判断是否可以使用最多 次的断裂操作将 转换为 。如果可以,请提供实现 所需的操作序列。

不需要尽量减少操作次数。

这里的 ​ 表示 bitwise XOR 运算

数据范围达到

题目解析

AC 代码

RM-6 Informatics in MAC

题目信息

在硕士援助中心,Nyam-Nyam 接受了一项信息学方面的家庭作业。

有一个长度为 的数组 ,你想把它分成 个子段 ,使每个子段上的 都等于相同的整数。

请帮助 Nyam-Nyam 找到合适的分块方法,或者确定不存在合适的解。

注释:

将数组划分为 个子数段的定义是 对整数 ,使得 和每个 ,以及 ​ 。这些对表示子段本身。

数组中的 是不属于该数组的最小非负整数。

例如

  • 数组 ,因为 不属于该数组。
  • 数组 中的 ,因为 属于数组,而 不属于数组。
  • 数组 中的 ,因为 属于数组,而 不属于数组。

题目解析

AC代码

RM-S-1 Messenger In MAC

题目信息

凯夫特梅鲁姆硕士生援助中心的短信平台计划进行更新,开发人员希望在更新中优化显示给用户的信息集。目前共有 条信息。每条信息由两个整数 表示。读取数字为 ,所有 都是不同的)的信息所花费的时间由公式计算得出:

请注意,读取1个编号为 的报文组成的报文集所需的时间等于 。此外,读取一组空信息所需的时间为

用户可以确定他愿意在信使中花费的时间 。信使必须告知用户信息集的最大可能大小,其阅读时间不超过 。请注意,信息集的最大大小可以等于

短信的开发人员未能实现这一功能,因此他们要求您解决这一问题。

输入

每个测试由多个测试用例组成。第一行包含一个整数 ( ) - 测试用例的个数。测试用例说明如下。

每个测试用例的第一行包含两个整数 )--信息数量和用户愿意在信使中花费的时间。

接下来 行,第 行包含两个整数 。( )--第 行信息的特征。

保证所有测试用例的 之和不超过 ,要求时间不超过2s

题目解析

AC代码

RM-S-2 Exam In MAC

题目信息

硕士生援助中心公布了入学考试,考试内容如下。

给考生一个大小为 的集合 和一个奇怪的整数 。对于这个集合,需要计算出使 的整数 对的个数。

你的朋友想进入中心工作。请帮助他通过考试!

输入

每个测试由多个测试用例组成。第一行包含一个整数 ( ) - 测试用例的个数。测试用例说明如下。

每个测试用例的第一行包含两个整数 )--集合的大小和奇异整数。

每个测试用例的第二行包含 个整数 )--集合的元素

保证所有测试用例中 的总和不超过 ​ 。

题目解析

AC代码

RM-S-3 String Bags

题目描述

最初有一个空字符串 ,此外,还有袋子 ,每个袋子都包含一些字符串。

包含 个字符串

重复以下步骤:

  • 选择并执行以下两个操作之一:
    • 支付 日元,从袋子 中选择一个字符串,并将其连接到 的末尾。
    • 不做任何操作。

给定字符串,求使最后的等于所需的最小金额。

如果无法使最后的 等于 ,则输出

限制因素

  • 是由小写英文字母组成的字符串,长度在 之间(含)。
  • 是介于 之间的整数,包含在内。
  • 是介于之间的整数,包括
  • 是由小写英文字母组成的字符串,长度在之间(包括)。

题目解析

AC代码

RM-S-4 Insert or Erase

题目描述

给你一个长度为 的序列 中的元素是不同的。

请按照给出的顺序处理 个查询。每个查询属于以下两种类型之一:

  • 1 x y:在 中元素 后面紧接着插入 。当给出此查询时,保证 存在于 中。
  • 2 x:从 中删除元素 。当给出此查询时,保证存在于中。

保证在处理完每一个查询后,都不是空的,并且其元素都是不同的。

处理完所有查询后,打印 ​。

查询强度

题目分析

本题为 逃课题,不排除数据强度问题引发

对于list< T >::iterator的一些探讨

类型的迭代器更像是一个固定的映射关系,插入和删除操作均不改变迭代器本身的值以及所映射的对象,所以它是删除和插入稳定的,不像的插入删除会自动调整顺序改变迭代器的映射对象。

<>& 函数会在当前迭代器的位置 前面 插入一个新的结点并赋值,然后返回的迭代器,自动适配迭代器指针运算++指向性。

这意味着,只要插入链表时用保存了迭代器记录,那么直接通过可以永久的​的查询未被删除的这个元素。

RM-S-5 Plant Trees

题目描述

给定长度为的一个序列,从中选择不超过个数使得其结果和最大。

要求选择了之后就不能选择

数据保证

题目分析

AC代码

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 栾博越
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信