#P13632. [NWRRC 2021] Extreme Problem

[NWRRC 2021] Extreme Problem

Description

许多编程竞赛中的题目在某些方面都非常极端。例如:

  • 有些题目需要你在纸上进行大量复杂的数学运算,然后输出一个众所周知的数字,并按输入文件给定的位数进行四舍五入;
  • 有些题目长达四页以上,需要你编写一个模拟系统,跟踪多个特工的多项技能,并为每次任务选择最佳的特工组合;
  • 还有些题目已被证明根本不存在正确解法,但依然被拿来作为比赛题目。

这一次,你将遇到一个同样极端的题目,因为它只有八组可能的测试数据。当然,这个题目也与“极端”有关。

我们考虑定义在 [10;10]×[10;10][-10;10] \times [-10;10] 方格上的两个整数变量的函数。这意味着你只能对 f(x,y)f(x, y) 进行调用,其中 xxyy 必须是整数,且 10x,y10-10 \le x, y \le 10。如果函数 ff 在点 (x,y)(x, y) 满足以下所有条件,则称其在该点有一个“局部极小值”:

  • f(x,y)<f(x1,y)f(x, y) < f(x-1, y)
  • f(x,y)<f(x+1,y)f(x, y) < f(x+1, y)
  • f(x,y)<f(x,y1)f(x, y) < f(x, y-1)
  • f(x,y)<f(x,y+1)f(x, y) < f(x, y+1)

“局部极大值”的定义类似,只是将不等号方向反过来。如果函数 ff 在点 (x,y)(x, y) 满足下列至少一个条件,则称其在该点有一个“平台”:

  • f(x,y)=f(x1,y)f(x, y) = f(x-1, y)
  • f(x,y)=f(x+1,y)f(x, y) = f(x+1, y)
  • f(x,y)=f(x,y1)f(x, y) = f(x, y-1)
  • f(x,y)=f(x,y+1)f(x, y) = f(x, y+1)

注意,上述所有函数调用都必须发生在函数定义域内,即 [10;10]×[10;10][-10;10] \times [-10;10] 的方格上。特别地,这意味着边界上的点不能\textbf{不能}是局部极大值或局部极小值,但仍然可以是平台。

你需要构造一个函数,使其满足输入中指定的以下性质(有或没有,取决于输入):

  • 多个局部极大值;
  • 多个局部极小值;
  • 存在平台。

注意,“多个”指的是“至少两个”。另外,你的函数必须按照特定的方式定义,详见输出部分。

Input Format

输入包含三行。

  • 第一行以 Multiple local maxima: \texttt{Multiple local maxima:~} 开头,以 Yes\texttt{Yes}No\texttt{No} 结尾,表示你的函数是否应当有多个局部极大值。
  • 第二行以 Multiple local minima: \texttt{Multiple local minima:~} 开头,以 Yes\texttt{Yes}No\texttt{No} 结尾,表示你的函数是否应当有多个局部极小值。
  • 第三行以 Plateaus: \texttt{Plateaus:~} 开头,以 Yes\texttt{Yes}No\texttt{No} 结尾,表示你的函数是否应当有平台。

Output Format

输出应为一行,用来定义你的函数。

如果不存在符合要求的函数,输出 No solution\texttt{No solution}

否则,请使用逆波兰表示法(Reverse Polish Notation, RPN)描述你的函数。逆波兰表示法是一种用栈式机器描述函数的方法:它是一系列操作的序列,其中有些操作将数值压入栈中,有些操作从栈顶取出若干数值,进行运算后将结果压回栈中。

你的函数最多包含 1000 个以单个空格分隔的记号,每个记号可以是以下之一:

  • 一个整数常数,范围为 9-9+9+9。这会将对应的数字压入栈中。
  • 一个变量,x\texttt{x}y\texttt{y}。这会将该变量的值压入栈中。
  • 一个操作符,可以是 +\texttt{+}-\texttt{-}*\texttt{*}^\texttt{\textasciicircum}。星号表示乘法,^\texttt{\textasciicircum} 表示幂运算。每个操作符会从栈中取出两个数,执行相应运算,并将结果压回栈中。运算顺序为 9 5 -\texttt{9 5 -} 计算结果为 4,x 2 ^\texttt{x 2 \textasciicircum} 计算结果为 x2x^2。特殊情况 000^0 规定为 11

注意,若发生以下任一情况:

  • 某个操作试图从空栈中取数;
  • ^\texttt{\textasciicircum} 操作试图对负指数求幂;
  • 运算结果超出 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

第一个测试点的示例答案编码了函数 (x3)4+(y+(5))2(x-3)^4 + (y + (-5))^2。注意它没有局部极大值,没有平台,且只有一个局部极小值。

由 ChatGPT 4.1 翻译