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. deug的使用经验

    最基本的操作是: 1, 首先在一个java文件中设断点,然后运行,当程序走到断点处就会转到debug视图下, 2, F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6 ...

  2. 2019.02.27 bzoj4556: [Tjoi2016&Heoi2016]字符串(二分答案+sam+线段树合并)

    传送门 题意:给一个字符串SSS. 有mmm次询问,每次给四个参数a,b,c,da,b,c,da,b,c,d,问s[a...b]s[a...b]s[a...b]的所有子串和s[x...y]s[x... ...

  3. linux 基础 文件系统 用户权限

    描述Linux系统的启动过程? 1.开机自检 BIOS 2.MBR引导 3.GRUB菜单 4.加载内核 5.运行init进程 6.从/etc/inittab读取运行级别 7.根据/etc/rc.sys ...

  4. Wordpress“固定链接”页面出现404原因及解决方法

    编辑配置文件:/etc/apache2/apache2.conf(非常靠后的位置),将里面的AllowOverride选项由None设置为All. <Directory /> Option ...

  5. winform改变启动界面

    我们知道,有时做个小项目什么的,一般从登录开始,再到主页,再到其他业务,如果做到其他页面功能,调试时还要从登录页面一个个点进去,明显的降低开发进度. 这时,我们可以直接将目标界面改为启动页面即可. u ...

  6. MFC头文件

    AFX.H struct CRuntimeClass; // object type information class CObject; // the root of all objects cla ...

  7. web安全基础

    web安全备忘 主机系统安全防护:防火墙控制 Web是一个分布式系统,一个站点多个主机布置,一主机布置多个站点:并发,异步,同步 主机安全配置文件修改与强化 web站点数据验证逻辑的常用技巧:功能性代 ...

  8. git 命令(补充篇)的本质理解

    1 标签, git tag tag_name SHA 本质: 在某次commit 上打上标签tag_name ,标签在代码库中起着"锚点"的作用. 注意: commit 由 SHA ...

  9. [UWP/WPF]在应用开发中安全使用文件资源

    在WPF或者UWP应用开发中,有时候会不可避免的需要操作文件系统(创建文件/目录),这时候有几个坑是需要大家注意下的. 创建文件或目录时的非法字符检测 在Windows系统中,我们创建文件时会注意到, ...

  10. 基于DobboX的SOA服务集群搭建

    本人第一次发博客,有什么不对的地方希望各位批评指正,我就不把文章copy过来了,直接上有道笔记的链接,希望各位喜欢. 第一部分: 准备工作 第二部分: dubbox的安装和使用 第三部分: RESTf ...