题目:Optimal Milking

思路:

线段树的单点修改区间查询。

每个节点维护4个值,及左右端点选或不选的最大和,用二进制存储,更新时分类讨论。

注意:使用long long类型。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <cstring>
#include <map>
using namespace std;#define maxn 40000
#define inf (1<<29)
#define ll long longstruct Node {ll v[5];Node (ll x=0,ll y=0,ll z=0,ll u=0) {v[0]=x,v[1]=y,v[2]=z,v[3]=u;}
};int n,m;
int c[maxn+5];Node a[maxn*4+5];
int p,q;ll Max(ll x1=-inf,ll x2=-inf,ll x3=-inf,ll x4=-inf) {return max(max(x1,x2),max(x3,x4));
}ll gt(int o,int x,int y) {int lc=o*2,rc=o*2+1;return a[lc].v[x]+a[rc].v[y];
}void st(int o) {a[o].v[0]=Max(gt(o,0,0),gt(o,0,2),gt(o,1,0));a[o].v[1]=Max(gt(o,0,1),gt(o,0,3),gt(o,1,1));a[o].v[2]=Max(gt(o,2,2),gt(o,2,0),gt(o,3,0));a[o].v[3]=Max(gt(o,2,1),gt(o,2,3),gt(o,3,1));
}void make_tree(int o,int l,int r) {if(l==r) {a[o]=Node(0,-inf,-inf,c[l]);return ;}int lc=o*2,rc=o*2+1,mid=l+(r-l)/2;make_tree(lc,l,mid),make_tree(rc,mid+1,r);st(o);
}void update(int o,int l,int r) {if(l>p||r<p) return ;if(l==r) {a[o]=Node(0,-inf,-inf,q);return ;}int lc=o*2,rc=o*2+1,mid=l+(r-l)/2;update(lc,l,mid),update(rc,mid+1,r);st(o);
}int main() {scanf("%d%d",&n,&m);for(int i=1; i<=n; i++) scanf("%d",&c[i]);make_tree(1,1,n);ll ans=0;for(int i=1; i<=m; i++) {scanf("%d%d",&p,&q);update(1,1,n);ans+=Max(a[1].v[0],a[1].v[1],a[1].v[2],a[1].v[3]);}printf("%lld",ans);return 0;
}

洛谷 3097 USACO13DEC 最优挤奶 Optimal Milking相关推荐

  1. 深入理解 操作系统 LRU算法(以洛谷P1540题为例)

    LRU算法 LeastRecentlyUsedLeast Recently UsedLeastRecentlyUsed 算法,意为"最近最少使用",这是操作系统内存管理部分重要的一 ...

  2. 洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)

    题面 传送门(loj) 传送门(洛谷) 题解 我们对于每一个与宫殿相连的点,分别计算它会作为多少个点的最短路的起点 若该点为\(u\),对于某个点\(p\)来说,如果\(d=|p-u|\),且在\([ ...

  3. 洛谷P3688/uoj#291. [ZJOI2017]树状数组

    传送门(uoj) 传送门(洛谷) 这里是题解以及我的卡常数历程 话说后面那几组数据莫不是lxl出的这么毒 首先不难发现这个东西把查询前缀和变成了查询后缀和,结果就是查了\([l-1,r-1]\)的区间 ...

  4. 洛谷P2766-最长递增子序列问题

    chunlvxiong的博客 题目描述: 给定正整数序列x1,...,xn (1≤n≤500). 1.计算其最长递增子序列的长度s. 2.计算从给定的序列中最多可取出多少个长度为s的递增子序列. 3. ...

  5. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  6. 【杂题总汇】NOIP2013(洛谷P1967) 货车运输

    [洛谷P1967] 货车运输 重做NOIP提高组ing... +传送门-洛谷P1967+ ◇ 题目(copy from 洛谷) 题目描述 A国有n座城市,编号从1到n,城市之间有m条双向道路.每一条道 ...

  7. 洛谷 P1019 单词接龙 (DFS)

    题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分, ...

  8. 洛谷P1003 铺地毯 noip2011提高组day1T1

    洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...

  9. DP【洛谷P2134】 百日旅行

    [洛谷P2134] 百日旅行 题目背景 重要的不是去哪里,而是和你在一起.--小红 对小明和小红来说,2014年7月29日是一个美好的日子.这一天是他们相识100天的纪念日. (小明:小红,感谢你2场 ...

  10. 【洛谷4005】小Y和地铁(搜索)

    [洛谷4005]小Y和地铁(搜索) 题面 洛谷 有点长. 题解 首先对于需要被链接的两个点,样例中间基本上把所有的情况都给出来了. 但是还缺了一种从下面绕道左边在从整个上面跨过去在从右边绕到下面来的情 ...

最新文章

  1. Boost:bind绑定的回归测试
  2. S4HANA里至关重要的建模方式CDS view架构介绍
  3. 用栈实现后缀表达式求解问题
  4. CSS属性值之百分数
  5. 大数据_Hbase-API访问_Java操作Hbase_MR-数据迁移-代码测试---Hbase工作笔记0017
  6. k8s核心技术-Controller(Deployment)控制器对pod的管理实现_升级回滚和弹性伸缩---K8S_Google工作笔记0030
  7. java中普通变量、静态变量、静态代码块初始化的顺序辨析
  8. 河北古村落版画展开幕 河北这些古村落你值得去看看
  9. 新概念英语一 : 语法整理 unit1 1-18
  10. 四大全球卫星导航系统都能提供什么服务?
  11. Redis~集群(分布理论、一致性哈希分区、虚拟槽分区、节点握手、集群通信、集群伸缩、请求路由、故障转移、集群维护)
  12. 今时不同往日:VS2010十大绝技让VS6叹“.NET研究”服
  13. Linux系统搭建多用户多目录不同权限访问的FTP服务器
  14. BEN的IT英语训练营第22天 - IT ABC 20
  15. JS如何手写new(一看就懂)
  16. 二.MUI框架 开始体验MUI
  17. 不得不说,还是这款开源工作流表单设计器较合心意!
  18. python中如何比较日期大小_python 日期大小比较
  19. ExcelVBA之传递函数
  20. Cisco 3560交换机限速配置

热门文章

  1. discuz手机版常见问题
  2. 排序(三)之快速排序 填坑法
  3. html5页面分享到微信qq,HTML 分享页面到QQ/微信、微博等平台
  4. 【JAVA SE基础篇】29.初识数组
  5. 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
  6. HI3518EV200初体验
  7. ThinkPHP V5.0.5漏洞_谷歌浏览器 v80.0.3987.100 正式版——墨涩网
  8. 域名申请:一定要进行实名认证吗?
  9. 苹果电脑自动重启怎么回事
  10. Hive exited with status 1