可持久化动态图上树状数组维护01背包(牛客网的一道傻逼题)
哈哈哈……题面已经告诉你做法了
这场比赛前无数名两三分钟就过了这道A题……当时看到题的时候笑抽我了……
维护尼玛的背包,直接贪心啊……
如果序列都是正数的话,每个数的删除代价中的$i$为$1$当然是最优的。又因为要求删除所有的数,所以这可以做到,每次删除序列的第一个数就完了。
然后下意识地看了看数据,$n$没问题,但是序列有负数……
我们知道,负数的删除代价中的$i$越大越好,所以一开始先把序列中所有负数从后往前删除,然后把剩下的正数从前往后删除。
$0$没有贡献,怎么算都行。
再确认一下数据,发现答案是$(-2^{64},2^{64})$区间内的,而$long long$的范围是$(-2^{63},2^{63})$,会爆掉。
所以开一个$unsigned\space long long$,单开个$bool$记它的正负号。
恭喜你解锁成就:完成一道可持久化动态图上树状数组维护01背包难题!
嗯。。。