题目描述
桶哥的桶没有送完,他还有n个桶。他决定把这些桶吃掉。他的每一个桶两个属性:种类ai?和美味值bi。若下标为x, y, z(下标从1开始)的三个桶满足:
x<z切x+y=z-2y且ax=az 那么他们构成一个套餐,会产生(x+z)*(bx-bz)的价值
问:一共会产生多少价值
首先来讲暴力打法:
最暴力的显然就是n^3的三层循环枚举了——20分
再来说一下小小的优化:
我们发现每个套餐所产生的价值和y没有任何关系,而且题目中x+y=z-2y的条件等价于z-x=3y,也就是说只要z-x是3的倍数就可以,所以我们可以不一个个枚举,只需要枚举(z-x)%3==0的情况就好了——40分
接着,继续从条件入手:我们发现x和z的桶的种类是一样的,也就是说我们可以开一个vector数组来存储相同种类的桶,这样就可以进一步加快——60分
原文:https://www.cnblogs.com/lcezych/p/10939826.html