可持久化动态图上树状数组维护01背包

可持久化动态图上树状数组维护01背包

https://ac.nowcoder.com/acm/problem/19838

题目

有一个长度为 序列 (序列下标从 1 开始),每次可以从任意位置 花费 的代价来把 删除。
注意,删除后 后面的数会依次向前补上(下标 -1 ) 。
求把整个序列删完的最小代价。

解题思路

是正数时,在下标 1 的位置删除代价最小,即
是负数时,在其当前所在下标的位置删除代价最小,即 ,因为下标不能更大了。

C++代码

#include<cstdio>
using namespace std;

int main(){
    int n;
    scanf("%d", &n);
    long long ans = 0;
    int a;
    for(int i=0; i<n; ++i){
        scanf("%d", &a);
        if(a<0)
            ans += 1LL*a*(i+1);
        else
            ans += a;
    }
    printf("%lld", ans);
    return 0;
}
全部评论

相关推荐

专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
昨天 22:41
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务