Description

n个点排成一排,点有点权,要求支持两种操作:

  1. 修改某个点的点权
  2. 询问取出任意多且不相邻的点的点权和最大值

Solution

跟最大子段和一样,可以用分治做,用线段树记录一下左右端点选没选就行了。

然而并想不到

Code

#include<cstdio>
#include<cctype>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 40005
typedef long long ll;
using std::min;
using std::max;
using std::swap;
#define ls cur<<1
#define rs cur<<1|1 int n,m,val[N];
int mx[N<<2][4];//0 not not 1 not yes 2 yes not 3 yes yes
//0->0+2 1+0 0+0
//1->0+3 0+1 1+1
//2->3+0 2+0 2+2
//3->2+1 3+1 2+3 void pushup(int cur){
mx[cur][0]=max(mx[ls][0]+mx[rs][2],max(mx[ls][1]+mx[rs][0],mx[ls][0]+mx[rs][0]));
mx[cur][1]=max(mx[ls][0]+mx[rs][3],max(mx[ls][0]+mx[rs][1],mx[ls][1]+mx[rs][1]));
mx[cur][2]=max(mx[ls][3]+mx[rs][0],max(mx[ls][2]+mx[rs][0],mx[ls][2]+mx[rs][2]));
mx[cur][3]=max(mx[ls][2]+mx[rs][1],max(mx[ls][3]+mx[rs][1],mx[ls][2]+mx[rs][3]));
} inline int getint(){
int X=0;int w=0;char ch=0;
while(!isdigit(ch))w|=ch=='-',ch=getchar();
while( isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
return w?-X:X;
} void build(int cur,int l,int r){
if(l==r){
mx[cur][0]=mx[cur][1]=mx[cur][2]=0;
mx[cur][3]=val[l];
return;
}
int mid=l+r>>1;
build(cur<<1,l,mid);build(cur<<1|1,mid+1,r);
pushup(cur);
} void modify(int cur,int l,int r,int ql,int c){
if(l==r){
mx[cur][3]=c;
return;
}
int mid=l+r>>1;
if(ql<=mid) modify(cur<<1,l,mid,ql,c);
else modify(cur<<1|1,mid+1,r,ql,c);
pushup(cur);
} signed main(){
// freopen("in.txt","r",stdin);
n=getint();m=getint();
for(int i=1;i<=n;i++)
val[i]=getint();
build(1,1,n);
ll ans=0;
while(m--){
int x=getint(),y=getint();
modify(1,1,n,x,y);
ans+=(ll)max(mx[1][0],max(mx[1][2],max(mx[1][3],mx[1][1])));
} printf("%lld\n",ans);
return 0;
}

[USACO13DEC] Optimal Milking的更多相关文章

  1. P3097 [USACO13DEC]最优挤奶Optimal Milking

    P3097 [USACO13DEC]最优挤奶Optimal Milking 题意简述:给定n个点排成一排,每个点有一个点权,多次改变某个点的点权并将最大点独立集计入答案,输出最终的答案 感谢@zht4 ...

  2. 洛谷P3097 - [USACO13DEC]最优挤奶Optimal Milking

    Portal Description 给出一个\(n(n\leq4\times10^4)\)个数的数列\(\{a_n\}(a_i\geq1)\).一个数列的最大贡献定义为其中若干个不相邻的数的和的最大 ...

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

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

  4. POJ2112 Optimal Milking (网络流)(Dinic)

                                             Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K T ...

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

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

  6. poj Optimal Milking

    Optimal Milking 题目: 有K个机器.C仅仅牛.要求求出最全部牛到各个产奶机的最短距离.给出一个C+K的矩阵,表示各种标号间的距离. 而每一个地方最多有M仅仅牛. 算法分析: 二分+最短 ...

  7. POJ 2112 Optimal Milking (二分 + floyd + 网络流)

    POJ 2112 Optimal Milking 链接:http://poj.org/problem?id=2112 题意:农场主John 将他的K(1≤K≤30)个挤奶器运到牧场,在那里有C(1≤C ...

  8. 题解 最优的挤奶方案(Optimal Milking)

    最优的挤奶方案(Optimal Milking) 时间限制: 1 Sec  内存限制: 128 MB 题目描述 农场主 John 将他的 K(1≤K≤30)个挤奶器运到牧场,在那里有 C(1≤C≤20 ...

  9. POJ 2112 Optimal Milking (Dinic + Floyd + 二分)

    Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 19456   Accepted: 6947 ...

随机推荐

  1. 为docker配置HTTP代理服务器

    背景: node1不能访问外网, node2可以访问外网,node1通过node2的代理服务来访问外网. 1. node1不能访问外网 vim /etc/resolv.conf 注释掉DNS配置文件 ...

  2. 实现一个jsp同时提交两个form到两个Servlet

    <%@ page contentType="text/html;charset=GBK" language="java"%> <html> ...

  3. python 安装第三方包时 read timed out

    记录下安装python第三方包超时报错,解决方法:(以安装numpy为例) pip install numpy 报错:raise ReadTimeoutError(self._pool, None, ...

  4. CDH版本的hadoop下载

    http://archive.cloudera.com/cdh5/cdh/5/加要下载的cdh版本插件 例如: http://archive.cloudera.com/cdh5/cdh/5/zooke ...

  5. using五大用法

    1.命名空间 using namespace 命名空间;//这样每次使用命名空间中的变量时就不用指定命名空间了 注意:头文件中不应有using命名空间的声明 2.类型别名(C++11) using a ...

  6. C# 从后台代码同步或异步注册Javascript到页面之RegisterStartupScript和RegisterClientScriptBlock的区别

    下面来讲讲同步注册JS和异步注册JS的区别 同步注册JS:RegisterClientScriptBlock,相当于在 form开始处(紧接 <form runat="server&q ...

  7. HashSet源码

    public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java. ...

  8. 使用Lucene-Spatial实现集成地理位置的全文检索

    Lucene通过Spatial包提供了对基于地理位置的全文检索的支持,最典型的应用场景就是:“搜索中关村附近1公里内的火锅店,并按远近排序”.使用Lucene-Spatial添加对地理位置的支持,和之 ...

  9. [译]ElasticSearch vs. Solr

    在Gen2产品的早期阶段, 我们事实上是失败的, 这促使我们重新审视我们现有的技术栈. 我们仔细分析系统中的每个独立的组件,并记录下来, 当然其中也包括构成我们核心功能的搜索引擎技术. 在我们的通用日 ...

  10. django rest framework通用view

    官方文档:http://www.django-rest-framework.org/ drf为我们提供强大的通用view的功能,本博客对这些view进行简要的总结分析. 首先,我们看一下主要的几种vi ...