#P13632. [NWRRC 2021] Extreme Problem
[NWRRC 2021] Extreme Problem
Description
许多编程竞赛中的题目在某些方面都非常极端。例如:
- 有些题目需要你在纸上进行大量复杂的数学运算,然后输出一个众所周知的数字,并按输入文件给定的位数进行四舍五入;
- 有些题目长达四页以上,需要你编写一个模拟系统,跟踪多个特工的多项技能,并为每次任务选择最佳的特工组合;
- 还有些题目已被证明根本不存在正确解法,但依然被拿来作为比赛题目。
这一次,你将遇到一个同样极端的题目,因为它只有八组可能的测试数据。当然,这个题目也与“极端”有关。
我们考虑定义在 方格上的两个整数变量的函数。这意味着你只能对 进行调用,其中 和 必须是整数,且 。如果函数 在点 满足以下所有条件,则称其在该点有一个“局部极小值”:
- ;
- ;
- ;
- 。
“局部极大值”的定义类似,只是将不等号方向反过来。如果函数 在点 满足下列至少一个条件,则称其在该点有一个“平台”:
- ;
- ;
- ;
- 。
注意,上述所有函数调用都必须发生在函数定义域内,即 的方格上。特别地,这意味着边界上的点是局部极大值或局部极小值,但仍然可以是平台。
你需要构造一个函数,使其满足输入中指定的以下性质(有或没有,取决于输入):
- 多个局部极大值;
- 多个局部极小值;
- 存在平台。
注意,“多个”指的是“至少两个”。另外,你的函数必须按照特定的方式定义,详见输出部分。
Input Format
输入包含三行。
- 第一行以 开头,以 或 结尾,表示你的函数是否应当有多个局部极大值。
- 第二行以 开头,以 或 结尾,表示你的函数是否应当有多个局部极小值。
- 第三行以 开头,以 或 结尾,表示你的函数是否应当有平台。
Output Format
输出应为一行,用来定义你的函数。
如果不存在符合要求的函数,输出 。
否则,请使用逆波兰表示法(Reverse Polish Notation, RPN)描述你的函数。逆波兰表示法是一种用栈式机器描述函数的方法:它是一系列操作的序列,其中有些操作将数值压入栈中,有些操作从栈顶取出若干数值,进行运算后将结果压回栈中。
你的函数最多包含 1000 个以单个空格分隔的记号,每个记号可以是以下之一:
- 一个整数常数,范围为 到 。这会将对应的数字压入栈中。
- 一个变量, 或 。这会将该变量的值压入栈中。
- 一个操作符,可以是 、、 或 。星号表示乘法, 表示幂运算。每个操作符会从栈中取出两个数,执行相应运算,并将结果压回栈中。运算顺序为 计算结果为 4, 计算结果为 。特殊情况 规定为 。
注意,若发生以下任一情况:
- 某个操作试图从空栈中取数;
- 操作试图对负指数求幂;
- 运算结果超出 32 位有符号整数范围;
- 运算结束后栈中元素数量不为 1——
你在该测试点会被判为 Wrong Answer。
Multiple local maxima: No
Multiple local minima: No
Plateaus: No
x 3 - 4 ^ y -5 + 2 ^ +
Multiple local maxima: No
Multiple local minima: No
Plateaus: Yes
1
Hint
第一个测试点的示例答案编码了函数 。注意它没有局部极大值,没有平台,且只有一个局部极小值。
由 ChatGPT 4.1 翻译
京公网安备 11011102002149号