poj2750 PottedFlower(线段树的环状操作)

题目:Potted Flower
大意:该你一个换环,求环上的最大连续的和(如果最大和包含所有数,要求减去最小的一个)。
思路:这道题的思路并不难,需要在线段树里维护区间的最大和,最小和(应为是环状的,所以答案有可能是总和减去最小和),然后需要用一个区间左边的最大最小,右边的最大最小来维护区间的最大和最小和。这道题的解法就是这样。

代码奉上

#include<cstdio>
#include<algorithm>
using namespace std;
#define M(i) ((t[(i)].l + t[i].r) >> 1)
const int MAXN = 1e5 + 5;
const int INF = 1e9;
struct node
{int l,r,lmx,rmx,lmn,rmn,sum,mx,mn;
}t[MAXN << 2];
int n, p[MAXN], m;
void build(int i, int l, int r)
{t[i].l = l;t[i].r = r;t[i].lmx = t[i].rmx = t[i].mx = -INF;t[i].lmn = t[i].rmn = t[i].mn = INF;if(l == r) {p[l] = i; return;}build(i<<1, l, M(i));build(i<<1|1, M(i)+1, r);
}
int max(int a,int b,int c)
{return max(a,max(b,c));
}
int min(int a,int b,int c)
{return min(a,min(b,c));
}
void upd(int pos, int v)
{int i = p[pos];t[i].lmx = t[i].rmx = t[i].sum = t[i].lmn = t[i].rmn = t[i].mx = t[i].mn = v;i >>= 1;while(i){t[i].lmx = max(t[i<<1].lmx, t[i<<1].sum + t[i<<1|1].lmx);t[i].lmn = min(t[i<<1].lmn, t[i<<1].sum + t[i<<1|1].lmn);t[i].rmx = max(t[i<<1|1].rmx, t[i<<1|1].sum + t[i<<1].rmx);t[i].rmn = min(t[i<<1|1].rmn, t[i<<1|1].sum + t[i<<1].rmn);t[i].sum = t[i<<1].sum + t[i<<1|1].sum;t[i].mx = max(t[i<<1].mx,t[i<<1].rmx+t[i<<1|1].lmx,t[i<<1|1].mx);t[i].mn = min(t[i<<1].mn,t[i<<1].rmn+t[i<<1|1].lmn,t[i<<1|1].mn);i >>= 1;}
}
int main()
{int t1, t2;scanf("%d", &n);build(1, 1, n);for(int i = 1; i <= n; i++){scanf("%d", &t1);upd(i, t1);}scanf("%d", &m);for(int i = 1; i <= m; i++){scanf("%d%d", &t1, &t2);upd(t1, t2);if(t[1].mx == t[1].sum && t[1].sum > 0)printf("%d\n",t[1].sum - t[1].mn);elseprintf("%d\n",max(t[1].mx,t[1].sum - t[1].mn));}return 0;
}

转载于:https://www.cnblogs.com/geng4512/p/5296950.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android代码导入有错误,android新项目导入后进行编译出现cmake错误

问题描述使用as加载并且gradle sync 提示&#xff1a;SIMPLE:error configure同时使用make project提示问题出现的环境背景及自己尝试过哪些方法已经尝试更换过ndk 调整target brinary 然后完全clean project等操作相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)使用g…

简单排序算法设计(Java)

总共有八种排序算法&#xff0c;还是慢慢看吧 1、简单排序算法 简单排序算法就是设置标兵&#xff0c;逐个比较数&#xff0c;然后查找插入位置&#xff0c;插入 public static void p(int[] a){for(int i0;i<a.length;i){System.out.print(a[i]" ");}}public sta…

cocos2d-x坐标系

在cocos2d-x在&#xff0c;有几种不同的坐标系。因为有好几个坐标系着一定的差异&#xff0c;他们需要明白&#xff0c;能力更精确的绘制各种图形画面上。 1.屏幕坐标系 只windows通过绘制图形上基本都知道。相应的坐标系统&#xff1a;原点在左上角。向右是x轴正方向&#xff…

android收入管理系统,毕业设计(论文)-基于Android系统的家庭理财通软件的设计——收入管理模块.docx...

PAGE河北农业大学信息学院本科毕业论文题 目&#xff1a;基于Android系统的家庭理财通软件的设计——收入管理模块学 院&#xff1a; 信息科学与技术学院专业班级&#xff1a; 计算机科学与技术0902班学 号&#xff1a;二O一三 年 五 月 二十八 日摘 要基于安卓系统的家庭理财通…

BZOJ1652 [Usaco2006 Feb]Treats for the Cows

蒟蒻许久没做题了&#xff0c;然后连动规方程都写不出了。 参照iwtwiioi大神&#xff0c;这样表示区间貌似更方便。 令f[i, j]表示i到j还没卖出去&#xff0c;则 f[i, j] max(f[i 1, j] v[i] * T, f[i, j - 1] v[j] * T) &#xff08;←这样用推的方式更好想一点。。&#…

android系统提供了url通信,Android两种HTTP通信,HttpURLConnection和HttpClient

Android系统中主要提供了两种方式来进行HTTP通信&#xff0c;HttpURLConnection和HttpClient&#xff0c;几乎在任何项目的代码中我们都能看到这两个类的身影&#xff0c;使用率非常高。不过HttpURLConnection和HttpClient的用法还是稍微有些复杂的&#xff0c;如果不进行适当封…

ECSHOP 订单状态 记录

记录订单状态 order_status /* 订单状态 */ define(‘OS_UNCONFIRMED’, 0); // 未确认 define(‘OS_CONFIRMED’, 1); // 已确认 define(‘OS_CANCELED’, 2); // 已取消 define(‘OS_INVALID’, 3); // 无效 define(‘…

git+jekyll部署备忘

github&#xff0c;会自动帮忙编译jekyll编写的文件&#xff0c;只要将文件放到gh-pages分支 (或者使用官方教程的二级域名方式&#xff0c;项目名字&#xff0c;可以随便起&#xff0c;官网的例子是 用户名.github.com 作为项目名字&#xff0c;可以使用 用户名.github.com …

buidulbs android.jar,在将AS项目迁移到IDEA时,无法将com.android.bui...

我需要从Android Studio迁移到IntelliJ IDEA,因为我需要在Java中进行其他一些非Android的工作.我从git克隆了我的项目,并将其导入到IDEA中.但是,我在此过程中遇到了Gradle错误.我已经搜索过,但是找不到解决我的错误的答案.这是事件日志03:39:42 PM All files are up-to-date03:…

[华为机试练习题]60.水仙花数

题目 描述: 水仙花数又称阿姆斯特朗数。 水仙花数是指一个n 位数( n≥3 )&#xff0c;它的每个位上的数字的n 次幂之和等于它本身。&#xff08;例如&#xff1a;1^3 5^3 3^3 153&#xff09; 求输入的数字是否为水仙花数练习阶段: 初级 代码 /*-------------------------…

fscanf的返回值未成功输入的元素个数 .xml

test.txt 中保存的为&#xff1a;12345程序int i,j,k; FILE *fpfopen("e://test.txt","r"); if (fpNULL) { //return FALSE; } while (!feof(fp)) { jfscanf(fp,"%d%d",&i,&k); cout<<i<</t<<k<</t<…

Chrome英文版离线安装包下载

在原来在线安装地址后面加上 ?standalone1 即可 https://www.google.com/intl/en/chrome/browser/desktop/index.html?standalone1

搜索 由浅入深 之一 水题

搜索很重要&#xff0c;是很难学的算法&#xff0c;能看懂很简单&#xff0c;但是要想真正做出题来就比较困难了&#xff0c;那么&#xff0c;我们现在就水题开始研究搜索。 水题之&#xff1a; 1024: [SCOI2009]生日快乐 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 830 …

android studio创建文件,如何在Android Studio中创建File Templates

标签&#xff1a; File Template Android Studio我发现一个可以让写程序变得简单的方法&#xff0c;那就是自定义文件模板(Custom File Templates).那么什么是File Templates呢&#xff1f;说白了&#xff0c;就是一个已经包含一部分代码的源文件如何创建File Templates首先&am…

odoo 中多币种处理(外币处理)

2019独角兽企业重金招聘Python工程师标准>>> 1. odoo多币种处理 http://www.cnblogs.com/godzone/archive/2012/11/05/2754436.html 2. OpenERP的价格表&#xff08;Pricelist&#xff09;机制: http://www.chinamaker.net/html/2011/study_1123/78.html 3. odoo …

android handler、looper、message、messageQueue、

一&#xff1a;handler&#xff0c;looper&#xff0c;message&#xff0c;messagequeue&#xff0c;thread handler: 消息处理着&#xff0c;负责Message消息的发送&#xff08;handler.sendMessage(....)&#xff09;以及处理消息&#xff0c;对于handler处理消息则需要实现h…

h5 android数字键盘,【笔记】移动端H5数字键盘input type=number的处理(IOS和Android)...

在Vue中的项目&#xff0c;基于VUX-UI开发&#xff0c;一个常见的需求&#xff1a;1、金额输入框2、弹出数字键盘3、仅支持输入两位小数&#xff0c;限制最大11位数&#xff0c;不允许0开头第一&#xff0c;首先想到额就是在VUX-UI中制定typenumber。--不可行VUX中的文档和代码…

Sybase数据库应用系统调优的五大领域

Sybase数据库应用系统调优的五大领域 2011/3/14/13:49来源&#xff1a;慧聪it网本 文以“某大型商业银行的网上银行系统”这一很具有典型意义的企业级大型Sybase数据库应用系统为例&#xff0c;涉及了数据库应用系统调优的五大领域&#xff1a;压力测试、 应用端调优、服务器端…

JQGrid 参数、属性API

JQGrid是一个在jquery基础上做的一个表格控件&#xff0c;以ajax的方式和服务器端通信。 JQGrid Demo 是一个在线的演示项目。在这里&#xff0c;可以知道jqgrid可以做什么事情。下面是转自其他人blog的一个学习资料&#xff0c;与其说是学习资料&#xff0c;说成查询帮助文档更…

android 6.0 ios9谁快,没安卓6.0流畅?iOS 9突飞猛进终于不卡

今天早些时候&#xff0c;iOS 9.1正式发布&#xff0c;改进系统Bug&#xff0c;添加新功能等&#xff0c;但还有不少反应系统流畅了。不知道是否是心里作用的关系&#xff0c;之前不少果粉吐槽iOS 9过于卡顿&#xff0c;苹果也是在一个版本一个版本的改进&#xff0c;这次的iOS…