Potted Flower(线段树+dp)
http://poj.org/problem?id=2750
题意:在一个圈中取若干个相邻的数,求他们的最大序列和。不能够同时取所有的数。
看了一篇解题报告写的很详细。。http://blog.csdn.net/non_cease/article/details/7437690
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <algorithm> 4 #include <string.h> 5 const int N=100010; 6 using namespace std; 7 struct node 8 { 9 int l,r,sum,minsum,maxsum; 10 int lmax,rmax,lmin,rmin; 11 } Tree[4*N]; 12 int a[N]; 13 void pushup(int rt) 14 { 15 int l = 2*rt; 16 int r = 2*rt+1; 17 Tree[rt].sum=Tree[l].sum+Tree[r].sum; 18 Tree[rt].minsum=min(min(Tree[l].minsum,Tree[r].minsum),Tree[l].rmin+Tree[r].lmin); 19 Tree[rt].maxsum=max(max(Tree[l].maxsum,Tree[r].maxsum),Tree[l].rmax+Tree[r].lmax); 20 Tree[rt].lmax=max(Tree[l].lmax,Tree[l].sum+Tree[r].lmax); 21 Tree[rt].rmax=max(Tree[r].rmax,Tree[r].sum+Tree[l].rmax); 22 Tree[rt].lmin=min(Tree[l].lmin,Tree[l].sum+Tree[r].lmin); 23 Tree[rt].rmin=min(Tree[r].rmin,Tree[r].sum+Tree[l].rmin); 24 } 25 void build(int l,int r,int rt) 26 { 27 Tree[rt].l = l; 28 Tree[rt].r = r; 29 if (l==r) 30 { 31 Tree[rt].sum=Tree[rt].minsum=Tree[rt].maxsum=a[r]; 32 Tree[rt].lmax=Tree[rt].rmax=Tree[rt].lmin=Tree[rt].rmin=a[r]; 33 return ; 34 } 35 int mid = (l+r)>>1; 36 build(l,mid,2*rt); 37 build(mid+1,r,2*rt+1); 38 pushup(rt); 39 } 40 void update(int pos,int val,int rt) 41 { 42 if (Tree[rt].l==Tree[rt].r) 43 { 44 Tree[rt].sum=Tree[rt].minsum=Tree[rt].maxsum=val; 45 Tree[rt].lmax=Tree[rt].rmax=Tree[rt].lmin=Tree[rt].rmin=val; 46 return ; 47 } 48 int mid=(Tree[rt].l+Tree[rt].r)>>1; 49 if (pos<=mid) 50 update(pos,val,2*rt); 51 else 52 update(pos,val,2*rt+1); 53 pushup(rt); 54 } 55 int main() 56 { 57 int n,m,pos,val; 58 scanf("%d",&n); 59 for (int i = 1; i <=n; i++) 60 { 61 scanf("%d",&a[i]); 62 } 63 build(1,n,1); 64 scanf("%d",&m); 65 while(m--) 66 { 67 scanf("%d%d",&pos,&val); 68 update(pos,val,1); 69 if(Tree[1].sum==Tree[1].maxsum) 70 { 71 printf("%d\n",Tree[1].sum-Tree[1].minsum); 72 } 73 else 74 { 75 printf("%d\n",max(Tree[1].maxsum,Tree[1].sum-Tree[1].minsum)); 76 } 77 } 78 return 0; 79 }
View Code
转载于:https://www.cnblogs.com/lahblogs/p/3557062.html
Potted Flower(线段树+dp)相关推荐
- POJ2750 Potted Flower (线段树+动态规划)
题目链接:传送门 题意:题目的意思是说在一个环形的盆中选取连续的子区间使得价值/吸引力最大,然后我们有一种操作即将花盆A的吸引力替换为B(单点修改),然后每次修改输出吸引力的最大价值 解题思路:把环从 ...
- P1295 [TJOI2011]书架(线段树dp)
P1295 [TJOI2011]书架(线段树dp) 我好菜 先考虑普通dp: d p i = m i n ( d p j + m a x ( h j + 1 , h j + 2 - , h i ) ) ...
- HDU 3016 Man Down (线段树+dp)
HDU 3016 Man Down (线段树+dp) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- CodeForces - 1557D Ezzat and Grid(线段树+dp)
题目链接:点击查看 题目大意:给出 nnn 个 010101 串,现在问最少需要删掉多少个串,才能使得剩下的串拼起来是连通的 规定两个 010101 串是连通的,当且仅当存在至少一列,在两个串中都为 ...
- CodeForces - 487B Strip(线段树+dp+二分)
题目链接:点击查看 题目大意:给出一个长度为 n 的序列,现在要求分成尽可能少的子段,且每个子段需要满足: 最大值与最小值的差值小于等于 s 子段长度大于等于 l 题目分析:dp[ i ] 代表的是前 ...
- Educational Codeforces Round 81 (Rated for Div. 2) E. Permutation Separation 线段树 + dp
传送门 文章目录 题意: 思路: 题意: 给你一个打乱的排列,每个位置都各有一个价值,让你选择一个分界点,分成p1,p2,...,prp_1,p_2,...,p_rp1,p2,...,pr和pr ...
- Atcoder 077E - guruguru(线段树+dp)
题目链接:http://arc077.contest.atcoder.jp/tasks/arc077_c 分析:如果某条线段包含x,显然应该先按一下到x,再从x走,反之必然是直接走过去,很容易想到用d ...
- POJ1769(线段树+DP)
飞翔 题意 : 给定一个区间长度 n ,接下来给出 m 个子区间,要求最少选出多少个区间才能使得 1~n 这个区间被所选的所有子区间覆盖 分析: 首先是动态规划,dp[i]表示把最大值从1位置搞到第i ...
- Codeforces 1398 F. Controversial Rounds —— 线段树+dp
This way 题意: 给你一个字符串,有些位置是已知的,有些是未知的,从位置1开始,如果有连续的0或者1大于等于k个,那么就算一轮游戏,然后0,1重新计数.问你当k=1~n的时候,游戏轮数最多是多 ...
最新文章
- UITableView数据的添加、删除、移动
- android防治方法被反射,通过去classLoader避免Android P反射限制后还原classLoader的方法...
- 某大学园区网规划(设想)
- 函数计算支持应用中心功能
- python输入两个正整数m和n用for循环求其最大公约数_输入两个正整数,m和n,求其最大公约数和最小公倍数。...
- django HttpResponse的用法
- python多线程框架_Python爬虫第七天:多线程爬虫|Scrapy框架
- c语言连续生成不同随机数_【转】关于C语言生成不重复的随机数
- java随机抽取数字_java 获取随机数字的三种方法
- Visio 安装后提示 Dos 共享冲突
- 使用fiddler+itunes来做到下载APP在AppStore中的历史版本 注意事项
- Ubuntu 下五笔拼音混合输入法
- 整理了上千个Python类库,简直太酷啦!
- JavaScrip 防止别人复制,剪切,查看源代码,页面另存为的操作
- 农业虫害识别相关论文——调研整理
- 学习淘淘商城第三十四课(在业务逻辑中添加缓存)
- 贝加莱PLC使用的几个注意点
- 《超新星纪元》读后感
- iframe与主框架跨域相互访问方法
- iBase4J nginx配置
热门文章
- Linux中vectormath无法通过pip安装的解决办法
- 计算机科学之美,计算机科学的美学探讨
- 10许可证即将到期_食品经营许可证延续
- ubuntu 安装搜狗输入法_超详细的ubuntu14.04安装搜狗输入法教程
- 聚类分析:1.相似性测度
- 数据统计作业0429_因子分析/FA
- SAP License:SAP项目上线的时间选择
- 特征做得好,模型没烦恼
- 项目管理系统、工作台、经营看板、质量管理、合同管理、合同审核、新建合同、分包商管理、立项审批、创建项目、项目模板、项目统计、计划管理、结项申请、审批流程、审批记录、审批状态、参数设置、axure原型
- SAS基础练习(一)