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

题目

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

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

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

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

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

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

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

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

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

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

posted @ 2018-10-19 19:35  大本营  阅读(884)  评论(0编辑  收藏  举报