一些乱搞集锦

题目描述

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.正确性较高,可以水过。

猜你喜欢

转载自www.cnblogs.com/betablewaloot/p/12127879.html
今日推荐