题目描述
n个技能,第i个技能造成w[i]点伤害,需要c[i]点能量值,可以使用l[i]次。现有q次询问,每次询问在不使用技能cj时,有cc点能量,最多造成几点伤害。
数据范围
n,cc<=1000,l<=100,q<=300000.
题目解析
背包
首先处理出f[i][j]表示前i个技能总共j个能量造成伤害最大值,g[i][j]表示i——n这些技能总共j个能量造成伤害最大值。
询问时查询f[cj-1][k]+g[cj+1][cc-k]的最大值。
但是发现时间复杂度O(cc*q) 3e8,如果被卡可能过不到。
使用三分法分出一个<=250的范围再在该范围内枚举即可降到低于1e8.正确性较高,可以水过。
原文:https://www.cnblogs.com/betablewaloot/p/12127879.html