zoukankan      html  css  js  c++  java
  • 思路

    题目描述

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

    遇到某些无根树上的题目可以尝试使用一些特殊点作为根dfs可以发现一些性质。

    遇到位运算题尝试使用trie树建图。

    树上路径上很多点之间信息可以尝试将他们按dfn排序后相邻者计算lca来维护。

    dp时遇到不好处理的数据较小内容可以直接多开一维来枚举。

    注意式子中常数以int计算,要先强制long long

    树形dp中,转化为线性考虑dfs序和先后序遍历。

  • 相关阅读:
    面向 部分
    并发 编程
    数据库 部分
    匿名函数
    Linux 30岁,这些年经历了什么?
    漫谈 HTTP 连接
    华为交换机命令基础入门学习,小白也能看得懂!
    一文讲透APaaS平台是什么
    什么是边缘CDN和虚拟CDN (vCDN)?
    systemd进程管理工具实战教程
  • 原文地址:https://www.cnblogs.com/betablewaloot/p/12127879.html
Copyright © 2011-2022 走看看