希望 线段树 01背包
链接:https://ac.nowcoder.com/acm/contest/917/E
来源:牛客网
题目描述
水宝宝驾驶着毁灭号接近了勇者号舰桥。
他要使用毁灭号的等离子炮摧毁勇者号主控台。
但是操控等离子炮的程序出了点问题。等离子炮有n个操作信号,第i个操作信号的强度为b[i]。总体强度为各操作信号的强度之和。
由于有些信号太弱了了 (强度<0),水宝宝想把它们删除。但是水宝宝自己不会删除信号,所以他找来了同船的队友帮忙。
![](/assets/blank.gif)
![](/assets/blank.gif)
#include<bits/stdc++.h> using namespace std; //input by bxd #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define repp(i,a,b) for(int i=(a);i>=(b);--i) #define RI(n) scanf("%d",&(n)) #define RII(n,m) scanf("%d%d",&n,&m) #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k) #define RS(s) scanf("%s",s); #define ll long long #define pb push_back #define inf 0x3f3f3f3f #define CLR(A,v) memset(A,v,sizeof A) // const int N=1e5+5; int sum[N<<2],col[N<<2],w[N],c[N],k,m,n,dp[N],ans; #define lson l,m,pos<<1 #define rson m+1,r,pos<<1|1void up(int pos) {sum[pos]=min(sum[pos<<1],sum[pos<<1|1]); } void down(int pos) {sum[pos<<1]=min(sum[pos<<1],col[pos]);sum[pos<<1|1]=min(sum[pos<<1|1],col[pos]);col[pos<<1]=min(col[pos<<1],col[pos]);col[pos<<1|1]=min(col[pos<<1|1],col[pos]);col[pos]=inf; } void build(int l,int r,int pos) {col[pos]=inf;if(l==r){sum[pos]=inf;return ;}int m=(l+r)>>1;build(lson);build(rson);up(pos); } void update(int L,int R,int v,int l,int r,int pos) {if(L<=l&&r<=R){sum[pos]=min(sum[pos],v);col[pos]=min(col[pos],v);return ;}down(pos);int m=(l+r)>>1;if(L<=m)update(L,R,v,lson);if(R>m)update(L,R,v,rson);up(pos); } void query(int L,int R,int l,int r,int pos) {if(l==r){w[l]=sum[pos];return ;}int m=(l+r)>>1;down(pos);if(L<=m)query(L,R,lson);if(R>m)query(L,R,rson);up(pos); } int main() {RIII(n,k,m);rep(i,1,n)RI(c[i]),ans+=c[i];build(1,n,1);rep(i,1,m){int u,w,v;RIII(u,w,v);update(u,w,v,1,n,1);}query(1,n,1,n,1);rep(i,1,n)repp(j,k,0)if(j>=w[i])dp[j]=max(dp[j],dp[j-w[i]]-c[i]);cout<<ans+dp[k];return 0; }
View Code
转载于:https://www.cnblogs.com/bxd123/p/11027224.html
希望 线段树 01背包相关推荐
- 【TJOI2016】【bzoj4552】排序(二分答案+线段树01排序)
problem 给出一个1到n的全排列,现在对这个全排列序列进行m次局部排序 排序分为两种 1:(0,l,r)表示将区间[l,r]的数字升序排序 2:(1,l,r)表示将区间[l,r]的数字降序排序 ...
- 洛谷P2073 送花 [2017年6月计划 线段树01]
P2073 送花 题目背景 小明准备给小红送一束花,以表达他对小红的爱意.他在花店看中了一些花,准备用它们包成花束. 题目描述 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花 ...
- 【题解】【LibreOJ Round #6】花团 LOJ 534 时间线段树分治 背包
Prelude 题目链接:萌萌哒传送门(/≧▽≦)/ Solution 如果完全离线的话,可以直接用时间线段树分治来做,复杂度\(O(qv \log q)\). 现在在线了怎么办呢? 这其实是个假在线 ...
- 一些算法(最短路,线段树,01,完全背包,STL)的基本参考资料
bellman-ford算法 资料链接http://hi.baidu.com/kerrynit/item/f16bfbd465dc6b87270ae772 STL 资料链接http://net.pku ...
- 线段树分裂与合并 ----- P2824 [HEOI2016/TJOI2016]排序 [线段树分裂合并 OR 01序列排序+二分线段树]
题目链接 题目大意: 对一个序列,每次按照升序或者降序排序序列某一段,问你最后的序列是什么? 解法1:二分+线段树 首先我们知道对一个01序列进行排序是很快的!我们只要知道里面有多少个1和多少个0,那 ...
- 【HDU - 5649】DZY Loves Sorting(线段树,区间更新区间查询,思维,01缩数变换,线段树分割)
题干: DZY has a sequence a[1..n]a[1..n]. It is a permutation of integers 1∼n1∼n. Now he wants to perfo ...
- 小清的线段树25题日志01 线段树下你和我 欢乐多又多
前言 难度大致会按排序来 就不写总结啦 嘻嘻 适合刚学线段树的人(和我一样 练手 /*if you can't see the repayWhy not just work step by stepr ...
- 2019.01.21 bzoj2441: [中山市选2011]小W的问题(树状数组+权值线段树)
传送门 数据结构优化计数菜题. 题意简述:给nnn个点问有多少个www型. www型的定义: 由5个不同的点组成,满足x1<x2<x3<x4<x5,x3>x1>x2 ...
- 2019.01.13 bzoj4137: [FJOI2015]火星商店问题(线段树分治+可持久化01trie)
传送门 题意:序列上有nnn个商店,有两种事件会发生: sss商店上进购标价为vvv的一个物品 求编号为[l,r][l,r][l,r]之间的位置买ddd天内新进购的所有物品与一个数xxx异或值的最大值 ...
- 【算法分析】实验 4. 回溯法求解0-1背包等问题
目录 实验内容 实验目的 实验结果 步骤1:描述与分析 步骤2:策略以及数据结构 步骤3 步骤4 步骤5 步骤6 实验总结 实验内容 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述.算法设 ...
最新文章
- 107. Binary Tree Level Order Traversal II
- 一本算法刷题必读配套书(附链接)
- 每天2小时,吃透 985博士总结的这份保姆级TensorFlow + PyTorch笔记(20G高清/PPT/代码)...
- 关于linux下目录树的查看TEEE命令
- JS组件系列——Bootstrap Table 表格行拖拽
- Java并发编程(01):线程的创建方式,状态周期管理
- 【Kafka】《Kafka权威指南》入门
- 【转】去除inline-block元素的间隙
- pycharm如何修改文件名
- jQuery设置iframe的高度
- J - 免费馅饼(动态规划)数塔
- mysql字符类型_MySQL学习分享--字符类型
- vue中使用微信聊天表情
- linux mint 环境配置jimi
- Protected multilib versions XXX
- 侯捷C++视频(百度云盘)
- QQ互联第三方登录多应用用户登录打通
- 文本分词并统计出现次数最高的几个词Python
- 《炒股的智慧》文摘1
- spring-boot-starter-parent作用及测试