NKOJ 9433「LNOI2022」吃

NKOJ 9433「LNOI2022」吃

思路

  • 纯暴力:用 dfs 分别尝试每一种食物选与不选,每一种食物选加号与不选加号的情况,时间复杂度为 \(O_{n!\times2^n}\)

  • 优化一点点的暴力:分别尝试每一种食物选与不选,查找加号的临界点,时间复杂度为 \(O_{n\times n!}\)

  • 贪心:

    • 观察题目发现,当一个数只能乘一的时候,对总答案没有贡献,所以如果是乘一不如选择加法。
    • 而选择完乘一的数用加法后,剩下的数中最多只有一个用加法,因为如果用了两次加法,那么用乘法必然会使结果更大。

实现方法

  • 筛选出所有乘数为一的数,将其累加到一个求和变量中。

  • 枚举每一个数,如果将其改成加的情况会不会使答案更大,只要能让答案更大就进行选择。

  • 其他的数直接做乘法。

注意事项

  • 检查每一个数时,需要使用 double 类型来存储结果,但结果却在和 int 的比较,此时产生了极大的精度损失,因此以后必须要避免 doubledouble 比较。
posted @ 2025-04-13 15:44  hsr_ray  阅读(14)  评论(0)    收藏  举报