1. 程式人生 > >可持久化動態圖上樹狀陣列維護01揹包(牛客網的一道傻逼題)

可持久化動態圖上樹狀陣列維護01揹包(牛客網的一道傻逼題)

題目

哈哈哈……題面已經告訴你做法了

這場比賽前無數名兩三分鐘就過了這道A題……當時看到題的時候笑抽我了……

維護尼瑪的揹包,直接貪心啊……

如果序列都是正數的話,每個數的刪除代價中的$i$為$1$當然是最優的。又因為要求刪除所有的數,所以這可以做到,每次刪除序列的第一個數就完了。

然後下意識地看了看資料,$n$沒問題,但是序列有負數……

我們知道,負數的刪除代價中的$i$越大越好,所以一開始先把序列中所有負數從後往前刪除,然後把剩下的正數從前往後刪除。

$0$沒有貢獻,怎麼算都行。

再確認一下資料,發現答案是$(-2^{64},2^{64})$區間內的,而$long long$的範圍是$(-2^{63},2^{63})$,會爆掉。

所以開一個$unsigned\space long long$,單開個$bool$記它的正負號。

恭喜你解鎖成就:完成一道可持久化動態圖上樹狀陣列維護01揹包難題!