[bzoj4094][Usaco2013 Dec]Optimal Milking 线段树
4094: [Usaco2013 Dec]Optimal Milking
Time Limit: 10 Sec Memory Limit: 128 MB
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1
2
3
4
5
5 2
2 7
1 10
Sample Output
【样例解释】
第1天,最优方案为2+4=6 ( 方案1+3+2一样)
第2天,最优方案为7+4=11
第3天,最优方案为10+3+2=15
HINT
#include <bits/stdc++.h>
using namespace std;
const int N = 40000 + 5; long long ans;
int tl[N<<2],tr[N<<2],ta[N<<2],tn[N<<2],n,d,a[N];
void update( int k ){tl[k] = max( tl[k<<1] + tn[k<<1|1], max( ta[k<<1] + tn[k<<1|1], tl[k<<1] + tl[k<<1|1] ) );tr[k] = max( tn[k<<1] + tr[k<<1|1], max( tn[k<<1] + ta[k<<1|1], tr[k<<1] + tr[k<<1|1] ) );tn[k] = max( tn[k<<1] + tn[k<<1|1], max( tn[k<<1] + tl[k<<1|1], tr[k<<1] + tn[k<<1|1] ) );ta[k] = max( ta[k<<1] + tr[k<<1|1], max( tl[k<<1] + tr[k<<1|1], tl[k<<1] + ta[k<<1|1] ) );
}
void build( int k, int l, int r ){if( l == r ){ta[k] = a[l]; return;}int mid = l + r >> 1;build( k<<1, l, mid );build( k<<1|1, mid+1, r );update( k );
}
void change( int k, int l, int r, int x, int val ){if( l == r ){ ta[k] = val; return; }int mid = l + r >> 1;if( x <= mid ) change( k<<1, l, mid, x, val );if( x > mid ) change( k<<1|1, mid+1, r, x, val );update( k );
}
int main(){scanf( "%d%d", &n, &d );for( int i = 1; i <= n; i++ ) scanf( "%d", &a[i] );build( 1, 1, n );while( d-- ){int i,m;scanf( "%d%d", &i, &m );change( 1, 1, n, i, m );ans += max( max( tl[1], tr[1] ), max( tn[1], ta[1] ) );}printf( "%lld\n", ans );return 0;
}
[bzoj4094][Usaco2013 Dec]Optimal Milking 线段树相关推荐
- 【BZOJ4094】[Usaco2013 Dec]Optimal Milking 线段树
[BZOJ4094][Usaco2013 Dec]Optimal Milking Description Farmer John最近购买了N(1 <= N <= 40000)台挤奶机,编号 ...
- bzoj 4094: [Usaco2013 Dec]Optimal Milking 线段树
→题目链接← [想说的话] 再次手误... [题解] 对于每个区间维护四种最大值 1.选左端点不选右端点 2.选右端点不选左端点 3.两个端点都选 4.两个端点都不选 然后用线段树搞一搞就好了 注意下 ...
- bzoj4094[Usaco2013 Dec]Optimal Milking最优挤奶
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4094 题目大意: 约翰有N 台挤奶机器,这些机器排成了一条直线,其中第i台机器工作效率是A ...
- bzoj 4094: [Usaco2013 Dec]Optimal Milking
4094: [Usaco2013 Dec]Optimal Milking Description Farmer John最近购买了N(1 <= N <= 40000)台挤奶机,编号为1 . ...
- BZOJ 4094 USACO 2013 Dec. Optimal Milking
线段树 每个节点保存4个值,both表示左右端点都取,neither表示左右端点都不取,left表示只取左端点,right表示只取右端点. 维护的特殊姿势: $cur$的$both=max(ls.l+ ...
- 【BZOJ4094】 【Usaco2013 Dec】Optimal Milking(权限题)
Description Farmer John最近购买了N(1 <= N <= 40000)台挤奶机,编号为1 ... N,并排成一行.第i台挤奶机每天能够挤M(i)单位的牛奶 (1 &l ...
- 【BZOJ3387】[Usaco2004 Dec]Fence Obstacle Course栅栏行动 线段树
[BZOJ3387][Usaco2004 Dec]Fence Obstacle Course栅栏行动 Description 约翰建造了N(1≤N≤50000)个栅栏来与牛同乐.第i个栅栏的z坐标为[ ...
- 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 DP + 线段树 / SPFA
1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 975 Solved ...
- 【BZOJ】1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(dp/线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=1672 dp很好想,但是是n^2的..但是可以水过..(5s啊..) 按左端点排序后 f[i]表示取第 ...
最新文章
- 谷歌15个人工智能开源免费项目!开发者:懂了
- loadrunner11使用常见问题(不断整理中)
- 英国政府发人工智能深度报告,力图保持领先地位
- java循环停止_什么时候java无限循环停止?
- 【渝粤教育】21秋期末考试电算化会计10169k2
- 7-27 冒泡法排序 (20 分)
- Exchange2003反病毒
- 给MTL库添加求行列式值
- python处理数据快吗_python (七、Numpy高效数据处理)
- antv图表 根据屏幕大小响应式_做可交互的统计图表,这套图形语法不容错过
- 厦门大学考研:必知20大时间节点
- CodeForces - 3B Lorry【贪心】
- android模拟器超级root,android模拟器root,avd root,emulator root教程
- 广义相对论与狭义相对论的区别
- Anaconda 安装与 使用
- iOS中app启动闪退的原因
- 2.15 Spring Framework 5.x 之ApplicationContext附加功能
- 河马书来了!线上实验领域的“圣经”火热预售中
- VB.net实现通讯录
- 爬取去哪儿网酒店信息