NKOJ 9433「LNOI2022」吃
NKOJ 9433「LNOI2022」吃
思路
-
纯暴力:用
dfs
分别尝试每一种食物选与不选,每一种食物选加号与不选加号的情况,时间复杂度为 \(O_{n!\times2^n}\) 。 -
优化一点点的暴力:分别尝试每一种食物选与不选,查找加号的临界点,时间复杂度为 \(O_{n\times n!}\)
-
贪心:
- 观察题目发现,当一个数只能乘一的时候,对总答案没有贡献,所以如果是乘一不如选择加法。
- 而选择完乘一的数用加法后,剩下的数中最多只有一个用加法,因为如果用了两次加法,那么用乘法必然会使结果更大。
实现方法
-
筛选出所有乘数为一的数,将其累加到一个求和变量中。
-
枚举每一个数,如果将其改成加的情况会不会使答案更大,只要能让答案更大就进行选择。
-
其他的数直接做乘法。
注意事项
- 检查每一个数时,需要使用
double
类型来存储结果,但结果却在和int
的比较,此时产生了极大的精度损失,因此以后必须要避免double
跟double
比较。