【洛谷 P6014】 斗牛
看到这道题的时候,其实我第一反应是“天哪,这道题这么难,这么大,不是 dp 就是记忆化吧”(蒟蒻之言,大佬勿喷 QAQ)
然后再仔细读了一下题,发现几件事情:
-
不管有多大,始终会有两张牌不被选。
-
因为被选上的张牌是的倍数,因此个位为,所以剩下张牌的个位和这个数之和的个位是一样的。
-
牌的值仅为至。
于是,我突然想到,既然正着算这个数不容易,那就反过来算剩下的两个数呗!
所以,最后我的办法是,算出个数的和,桶排每种数值的个数,暴力枚举出两个数,这两个数的和的个位等于所有数总和的个位。
有一个问题,有可能存在多个不同的个数的组合,比如:这组数,既可以选出,又可以选出,怎么办呢?
其实仔细想一下,不管怎么选,其答案是唯一的,因为所有数的和是唯一的,其个位也是唯一的,所以点数也是唯一的。
还是证明一下吧(蒟蒻用不来数学公式,只能语言描述 QAQ):
令 s1=n 个数的总和,s2=符合要求的 n-2 个数的和,s3=剩下 2 个数的和
综上所述,要求的 2 个数之和的个位与 n 个数之和的个位相同,所以点数是唯一的
代码
1 |
|
其实这两重循环还可以再优化,但我觉得没有太大的必要了,毕竟这也只循环了次而已。
蒟蒻求赞 qwq
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Aesrium の树洞!
评论