Sicily 1438 Shopaholic 我的解法

summary

:

题意

购物狂去买东西,买3件付两件的钱,最便宜的那件不用付。比如买了3个item,分别为 200元,150元,400元,则只需付600元,折扣为150元。如果买超过3件,一起付钱的话, 也只是不用付最便宜那件。这样当然不划算,于是可以多次付钱,每次选3件。不够3件就没 办法了,没有折扣。要求写程序求最大折扣是多少。

我的解法

购物狂是贪心的,这里就是贪心的思想。拿价格最高的3件先去付钱,再从剩下的里面拿 价格最高的3件。最后如果剩下不够3件的,则只能直接付钱了。非常简单,直接排序, 然后根据买的商品的件数,如果刚好是3的倍数,则把下标为3的倍数减一的价钱相加。如果 余数为1和2,则分别丢掉第一件和第二件。

我的代码

::: {.code-include lexer="cpp"} ../../../sicily/1438/1438.cpp :::