线段树

每个节点保存4个值,both表示左右端点都取,neither表示左右端点都不取,left表示只取左端点,right表示只取右端点。

维护的特殊姿势:

$cur$的$both=max(ls.l+rs.r,ls.both+rs.r,ls.l+rs.both)$

$cur$的$neither=max(ls.nei+rs.nei,ls.r+rs.nei,ls.nei+rs.l)$

$cur$的$left=max(ls.l+rs.l,ls.l+rs.nei,ls.both+ls.nei)$

$cur$的$right=max(ls.r+rs.r,ls.nei+rs.r,ls.nei+rs.both)$

 #include<cstdio>
#include<algorithm>
#define LL long long
#define ls (cur<<1)
#define rs (cur<<1|1)
#define mid ((l+r)>>1)
using namespace std;
const int maxn=;
LL n,m,ans;
struct tree{
LL both,l,r,nei;
}a[maxn];
void read(LL &k){
k=; int f=; char c=getchar();
while (c<''||c>'')c=='-'&&(f=-),c=getchar();
while (''<=c&&c<='')k=k*+c-'',c=getchar();
k*=f;
}
void pushup(int cur,int l,int r){
if (l==r) return;
int t1=a[ls].both+a[rs].r,t2=a[ls].l+a[rs].both,t3=a[ls].l+a[rs].r, //both
t4=a[ls].l+a[rs].l,t5=a[ls].l+a[rs].nei,t6=a[ls].both+a[rs].nei, //left
t7=a[ls].r+a[rs].r,t8=a[ls].nei+a[rs].r,t9=a[ls].nei+a[rs].both, //right
t10=a[ls].nei+a[rs].nei,t11=a[ls].nei+a[rs].l,t12=a[ls].r+a[rs].nei; //neither
a[cur].both=max(max(t1,t2),t3);
a[cur].l=max(max(t4,t5),t6);
a[cur].r=max(max(t7,t8),t9);
a[cur].nei=max(max(t10,t11),t12);
}
void build(int cur,int l,int r){
a[cur].l=; a[cur].r=; a[cur].nei=;
if (l<r){
build(ls,l,mid);
build(rs,mid+,r);
}
else read(a[cur].both);
pushup(cur,l,r);
}
void update(int cur,int l,int r,int pos,int x){
if (l==r) a[cur].both=x;
else{
if (pos<=mid) update(ls,l,mid,pos,x);
else update(rs,mid+,r,pos,x);
}
pushup(cur,l,r);
}
int main(){
read(n); read(m);
build(,,n);
for (int i=;i<=m;i++){
LL x,y; read(x); read(y);
update(,,n,x,y);
ans+=max(max(max(a[].both,a[].nei),a[].l),a[].r);
}
printf("%lld\n",ans);
return ;
}

BZOJ 4094 USACO 2013 Dec. Optimal Milking的更多相关文章

  1. bzoj 4094: [Usaco2013 Dec]Optimal Milking

    4094: [Usaco2013 Dec]Optimal Milking Description Farmer John最近购买了N(1 <= N <= 40000)台挤奶机,编号为1 . ...

  2. USACO翻译:USACO 2013 DEC Silver三题

    USACO 2013 DEC SILVER 一.题目概览 中文题目名称 挤奶调度 农场航线 贝西洗牌 英文题目名称 msched vacation shuffle 可执行文件名 msched vaca ...

  3. 【BZOJ4094】[Usaco2013 Dec]Optimal Milking 线段树

    [BZOJ4094][Usaco2013 Dec]Optimal Milking Description Farmer John最近购买了N(1 <= N <= 40000)台挤奶机,编号 ...

  4. BZOJ 1606 USACO 2008 Dec. 购买干草

    [题意概述] 有n件物品,每件物品有体积Vi,背包容量为C,问最多可以装多少体积的物品 [题解] 显然是个无限背包嘛.. 直接做背包DP就好 注意无限背包的写法和01背包的区别 #include< ...

  5. Optimal Milking 分类: 图论 POJ 最短路 查找 2015-08-10 10:38 3人阅读 评论(0) 收藏

    Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 13968 Accepted: 5044 Case ...

  6. POJ 2112 Optimal Milking (二分+最短路径+网络流)

    POJ  2112 Optimal Milking (二分+最短路径+网络流) Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K To ...

  7. POJ2112 Optimal Milking

    Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 17811   Accepted: 6368 ...

  8. Optimal Milking POJ - 2112 (多重最优匹配+最小费用最大流+最大值最小化 + Floyd)

      Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 19347   Accepted: 690 ...

  9. POJ2112 Optimal Milking —— 二分图多重匹配/最大流 + 二分

    题目链接:https://vjudge.net/problem/POJ-2112 Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K T ...

随机推荐

  1. POJ3709 K-Anonymous Sequence 斜率优化DP

    POJ3709 题意很简单 给n个递增整数(n<=500000)和一种操作(选择任意个数 使他们减少整数值) 使得对于所有的整数 在数列中 有k个相等的数 O(n^2)的DP方程很容易得出 如下 ...

  2. COCI2012 TOY

    有m种物品,n个箱子之中装着若干物品.问取出一些箱子后,所有m种物品都被选出的方案数. m<=20,n<=106 这道题很妙啊 深刻地利用了容斥 看到n=20,我们就想到了状压和容斥. 怎 ...

  3. 私有CA和证书

    证书类型 证书授权机构的证书 服务器 用户证书 获取证书两种方法 使用证书授权机构: 生成签名请求(csr ) 将csr发送给CA 从CA处接收签名 自签名的证书: 自已签发自己的公钥 openSSL ...

  4. nrm -- NPM registry 管理工具

    https://cnodejs.org/topic/5326e78c434e04172c006826 cnpm:http://npm.taobao.org/

  5. bzoj 2957: 楼房重建【线段树】

    总之就是找前面所有点的斜率都严格小于这个点的这样的点的个数 不管是询问还是修改都非常线段树啊,而且相当眼熟是不是和hotel有点像啊,大概就是区间内记一个len一个max,分别是当前区间答案和区间最大 ...

  6. 聊聊LuaJIT

    JIT 什么是JITJIT = Just In Time即时编译,是动态编译的一种形式,是一种优化虚拟机运行的技术. 程序运行通常有两种方式,一种是静态编译,一种是动态解释,即时编译混合了这二者.Ja ...

  7. Unity WebGL请求Http接口出现的Cors跨域问题

    1.运行环境 (1)WebGL运行浏览器:Firfox Quantum 67.0(64位) (2)服务端API运行环境:IIS,.Net Core 2.1 API 2.问题:CORS 头缺少Acces ...

  8. Android内存管理(14)*使用开源库LeakCanary检查内存泄漏

    1.简介 它是一个非常简单好用的内存泄漏检测工具库.可以轻松检测Activity,Fragment的内存泄漏.如果有内存泄漏,它会产生一个通知. 2.资料 官网: https://github.com ...

  9. C# 事件与委托(转载)

    委托的定义 delegate 是 C# 中的一种类型,它实际上是一个能够持有对某个方法的引用的类.与其它的类不同,delegate 类能够拥有一个方法的签名(signature),并且它"只 ...

  10. 支持多种格式的播放器js代码

    FLV需要播放器,其它视频格式直接插入相应的代码即可. ------------------------------------- /**   *视频播放 by zhensheng@   *参数说明  ...