P13632 [NWRRC 2021] Extreme Problem

题目描述

许多编程竞赛中的题目在某些方面都非常极端。例如: - 有些题目需要你在纸上进行大量复杂的数学运算,然后输出一个众所周知的数字,并按输入文件给定的位数进行四舍五入; - 有些题目长达四页以上,需要你编写一个模拟系统,跟踪多个特工的多项技能,并为每次任务选择最佳的特工组合; - 还有些题目已被证明根本不存在正确解法,但依然被拿来作为比赛题目。 这一次,你将遇到一个同样极端的题目,因为它只有八组可能的测试数据。当然,这个题目也与“极端”有关。 我们考虑定义在 $[-10;10] \times [-10;10]$ 方格上的两个整数变量的函数。这意味着你只能对 $f(x, y)$ 进行调用,其中 $x$ 和 $y$ 必须是整数,且 $-10 \le x, y \le 10$。如果函数 $f$ 在点 $(x, y)$ 满足以下所有条件,则称其在该点有一个“局部极小值”: - $f(x, y) < f(x-1, y)$; - $f(x, y) < f(x+1, y)$; - $f(x, y) < f(x, y-1)$; - $f(x, y) < f(x, y+1)$。 “局部极大值”的定义类似,只是将不等号方向反过来。如果函数 $f$ 在点 $(x, y)$ 满足下列至少一个条件,则称其在该点有一个“平台”: - $f(x, y) = f(x-1, y)$; - $f(x, y) = f(x+1, y)$; - $f(x, y) = f(x, y-1)$; - $f(x, y) = f(x, y+1)$。 注意,上述所有函数调用都必须发生在函数定义域内,即 $[-10;10] \times [-10;10]$ 的方格上。特别地,这意味着边界上的点$\textbf{不能}$是局部极大值或局部极小值,但仍然可以是平台。 你需要构造一个函数,使其满足输入中指定的以下性质(有或没有,取决于输入): - 多个局部极大值; - 多个局部极小值; - 存在平台。 注意,“多个”指的是“至少两个”。另外,你的函数必须按照特定的方式定义,详见输出部分。

输入格式

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

输出格式

输出应为一行,用来定义你的函数。 如果不存在符合要求的函数,输出 $\texttt{No solution}$。 否则,请使用逆波兰表示法(Reverse Polish Notation, RPN)描述你的函数。逆波兰表示法是一种用栈式机器描述函数的方法:它是一系列操作的序列,其中有些操作将数值压入栈中,有些操作从栈顶取出若干数值,进行运算后将结果压回栈中。 你的函数最多包含 1000 个以单个空格分隔的记号,每个记号可以是以下之一: - 一个整数常数,范围为 $-9$ 到 $+9$。这会将对应的数字压入栈中。 - 一个变量,$\texttt{x}$ 或 $\texttt{y}$。这会将该变量的值压入栈中。 - 一个操作符,可以是 $\texttt{+}$、$\texttt{-}$、$\texttt{*}$ 或 $\texttt{\textasciicircum}$。星号表示乘法,$\texttt{\textasciicircum}$ 表示幂运算。每个操作符会从栈中取出两个数,执行相应运算,并将结果压回栈中。运算顺序为 $\texttt{9 5 -}$ 计算结果为 4,$\texttt{x 2 \textasciicircum}$ 计算结果为 $x^2$。特殊情况 $0^0$ 规定为 $1$。 注意,若发生以下任一情况: - 某个操作试图从空栈中取数; - $\texttt{\textasciicircum}$ 操作试图对负指数求幂; - 运算结果超出 32 位有符号整数范围; - 运算结束后栈中元素数量不为 1—— 你在该测试点会被判为 Wrong Answer。

说明/提示

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