• 可持久化动态图上树状数组维护01背包(牛客网的一道傻逼题)


    题目

    哈哈哈……题面已经告诉你做法了

    这场比赛前无数名两三分钟就过了这道A题……当时看到题的时候笑抽我了……

    维护尼玛的背包,直接贪心啊……

    如果序列都是正数的话,每个数的删除代价中的$i$为$1$当然是最优的。又因为要求删除所有的数,所以这可以做到,每次删除序列的第一个数就完了。

    然后下意识地看了看数据,$n$没问题,但是序列有负数……

    我们知道,负数的删除代价中的$i$越大越好,所以一开始先把序列中所有负数从后往前删除,然后把剩下的正数从前往后删除。

    $0$没有贡献,怎么算都行。

    再确认一下数据,发现答案是$(-2^{64},2^{64})$区间内的,而$long long$的范围是$(-2^{63},2^{63})$,会爆掉。

    所以开一个$unsignedspace long long$,单开个$bool$记它的正负号。

    恭喜你解锁成就:完成一道可持久化动态图上树状数组维护01背包难题!

  • 相关阅读:
    学习subprocess模块...
    【排列组合】
    【约瑟夫问题】
    【craps赌博游戏】
    【洗扑克牌(乱数排列)】
    【最大访客数】
    【后序式的运算】
    【中序式转后序式】
    【python基础】之元组 集合 字典
    【费式数列(Fibonacci数列)】
  • 原文地址:https://www.cnblogs.com/scx2015noip-as-php/p/9818375.html
Copyright © 2020-2023  润新知