题解:P13632 [NWRRC 2021] Extreme Problem
如果第一发是 cz 交的话,那我应该就是这题首 A了吧。
进入正题。
发现只有 8 种情况,直接分类讨论完事。
因为是分类讨论的,所以不同情况的思路可能会完全不一致。
No No No & No No Yes
样例给了,如果你想自己构造就自己造吧。
No Yes No
即有多个局部最小值,并且没有平台。
为了没有平台,我们以
随意构造二次函数就行了。
Yes No No
跟上一个一模一样,把二次函数开口朝下就行。
Yes No Yes & No Yes Yes
跟前两个的区别在于要有平台,那么我们直接以前一个的基础上乘上一个
这样就会在
Yes Yes Yes
什么都有。
考虑在一个矩阵里面,有两个最低点,和两个最高点,其他都为 0,所以用
这个可能不太好理解,所以可以看代码。
Yes Yes No
为了没有平台,我们以
这个可能也不太好理解。
code
#include <bits/stdc++.h>
using namespace std;
int main(){
string s1,s2,s3;
cin >>s1>>s1>>s1>>s1>>s2>>s2>>s2>>s2>>s3>>s3;
if(s1=="No"&&s2=="No"&&s3=="No") cout <<"x 3 - 4 ^ y 5 - 2 ^ +";
else if(s1=="No"&&s2=="No"&&s3=="Yes") cout <<"1";
else if(s1=="No"&&s2=="Yes"&&s3=="No") cout <<"x y - 2 ^";
else if(s1=="Yes"&&s2=="No"&&s3=="No") cout <<"0 x y - 2 ^ -";
else if(s1=="No"&&s2=="Yes"&&s3=="Yes") cout <<"x y - 2 ^ x 2 ^ *";
else if(s1=="Yes"&&s2=="No"&&s3=="Yes") cout <<"0 x y - 2 ^ x 2 ^ * -";
else if(s1=="Yes"&&s2=="Yes"&&s3=="Yes") cout <<"x 1 - y 1 - x 3 - 2 ^ y 3 - x 5 - y 5 - * * * * *";
else if(s1=="Yes"&&s2=="Yes"&&s3=="No") cout <<"x y - 1 - 2 ^ x y - 3 + 2 ^ *";
return 0;
}
Happy Ending!