题目描述:

bz

题解:

线段树模拟费用流。

想法和种树有点类似。

每次取区间内权值和最大的一段,然后整体乘$-1$,代表再次选中时会去掉之前的影响。

线段树维护一堆东西……

小白逛公园双倍快乐。乘$-1$时交换正反。

[滑稽]

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 100050;
template<typename T>
inline void read(T&x)
{T f = 1,c = 0;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){c=c*10+ch-'0';ch=getchar();}x = f*c;
}
int n,m;
int chg[50][2];
struct n_8
{int w,wl,wr,wu,pl,pr,pll,prr;n_8(){}n_8(int w,int wl,int wr,int wu,int pl,int pr,int pll,int prr):w(w),wl(wl),wr(wr),wu(wu),pl(pl),pr(pr),pll(pll),prr(prr){}
};
void chkmax(int&a,int&b,int c,int d,int e,int f)
{if(c>e)a=c,b=d;else a=e,b=f;
}
void chkmax(int&a,int&b,int&c,int d,int e,int f,int g,int h,int i)
{if(d>g)a=d,b=e,c=f;else a=g,b=h,c=i;
}
void chkmin(int&a,int&b,int c,int d,int e,int f)
{if(c<e)a=c,b=d;else a=e,b=f;
}
void chkmin(int&a,int&b,int&c,int d,int e,int f,int g,int h,int i)
{if(d<g)a=d,b=e,c=f;else a=g,b=h,c=i;
}
void Swap(int&a,int&b)
{swap(a,b);a=-a,b=-b;
}
n_8 operator + (n_8 a,n_8 b)
{n_8 c;c.w = a.w+b.w;chkmax(c.wl,c.pll,a.wl,a.pll,a.w+b.wl,b.pll);chkmax(c.wr,c.prr,b.wr,b.prr,b.w+a.wr,a.prr);chkmax(c.wu,c.pl,c.pr,a.wu,a.pl,a.pr,b.wu,b.pl,b.pr);chkmax(c.wu,c.pl,c.pr,c.wu,c.pl,c.pr,a.wr+b.wl,a.prr,b.pll);return c;
}
struct segtree
{int w[N<<2],wl[N<<2],wr[N<<2],wu[N<<2],pl[N<<2],pr[N<<2],pll[N<<2],prr[N<<2];int _wl[N<<2],_wr[N<<2],_wu[N<<2],_pl[N<<2],_pr[N<<2],_pll[N<<2],_prr[N<<2];bool res[N<<2];void update(int u){w[u] = w[u<<1]+w[u<<1|1];chkmax(wl[u],pll[u],wl[u<<1],pll[u<<1],w[u<<1]+wl[u<<1|1],pll[u<<1|1]);chkmax(wr[u],prr[u],wr[u<<1|1],prr[u<<1|1],w[u<<1|1]+wr[u<<1],prr[u<<1]);chkmin(_wl[u],_pll[u],_wl[u<<1],_pll[u<<1],w[u<<1]+_wl[u<<1|1],_pll[u<<1|1]);chkmin(_wr[u],_prr[u],_wr[u<<1|1],_prr[u<<1|1],w[u<<1|1]+_wr[u<<1],_prr[u<<1]);chkmax(wu[u],pl[u],pr[u],wu[u<<1],pl[u<<1],pr[u<<1],wu[u<<1|1],pl[u<<1|1],pr[u<<1|1]);chkmax(wu[u],pl[u],pr[u],wu[u],pl[u],pr[u],wr[u<<1]+wl[u<<1|1],prr[u<<1],pll[u<<1|1]);chkmin(_wu[u],_pl[u],_pr[u],_wu[u<<1],_pl[u<<1],_pr[u<<1],_wu[u<<1|1],_pl[u<<1|1],_pr[u<<1|1]);chkmin(_wu[u],_pl[u],_pr[u],_wu[u],_pl[u],_pr[u],_wr[u<<1]+_wl[u<<1|1],_prr[u<<1],_pll[u<<1|1]);}void reser(int u){res[u]^=1;w[u] = -w[u];Swap(wl[u],_wl[u]);Swap(wr[u],_wr[u]);Swap(wu[u],_wu[u]);swap(pl[u],_pl[u]);swap(pr[u],_pr[u]);swap(pll[u],_pll[u]);swap(prr[u],_prr[u]);}void pushdown(int u){if(res[u]){reser(u<<1);reser(u<<1|1);res[u] = 0;}}void build(int l,int r,int u){if(l==r){int x;read(x);w[u] = wu[u] = _wu[u] = wl[u] = _wl[u] = wr[u] = _wr[u] = x;pl[u]=pr[u]=pll[u]=prr[u]=_pl[u]=_pr[u]=_pll[u]=_prr[u]=l;return ;}int mid = (l+r)>>1;build(l,mid,u<<1);build(mid+1,r,u<<1|1);update(u);}void insert(int l,int r,int u,int qx,int d){if(l==r){w[u] = wu[u] = _wu[u] = wl[u] = _wl[u] = wr[u] = _wr[u] = d;return ;}pushdown(u);int mid = (l+r)>>1;if(qx<=mid)insert(l,mid,u<<1,qx,d);else insert(mid+1,r,u<<1|1,qx,d);update(u);}void erase(int l,int r,int u,int ql,int qr){if(l==ql&&r==qr){reser(u);return ;}pushdown(u);int mid = (l+r)>>1;if(qr<=mid)erase(l,mid,u<<1,ql,qr);else if(ql>mid)erase(mid+1,r,u<<1|1,ql,qr);else erase(l,mid,u<<1,ql,mid),erase(mid+1,r,u<<1|1,mid+1,qr);update(u);}n_8 query(int l,int r,int u,int ql,int qr){if(l==ql&&r==qr)return n_8(w[u],wl[u],wr[u],wu[u],pl[u],pr[u],pll[u],prr[u]);pushdown(u);int mid = (l+r)>>1;if(qr<=mid)return query(l,mid,u<<1,ql,qr);else if(ql>mid)return query(mid+1,r,u<<1|1,ql,qr);else return query(l,mid,u<<1,ql,mid)+query(mid+1,r,u<<1|1,mid+1,qr);}
}tr;
int main()
{read(n);tr.build(1,n,1);read(m);int op,x,y,w;for(int i=1;i<=m;i++){read(op),read(x),read(y);if(!op)tr.insert(1,n,1,x,y);else{read(w);n_8 tmp = tr.query(1,n,1,x,y);int ans = 0;for(int j=1;j<=w;j++){if(tmp.wu>0){ans+=tmp.wu;chg[j][0]=tmp.pl,chg[j][1]=tmp.pr;tr.erase(1,n,1,tmp.pl,tmp.pr);tmp = tr.query(1,n,1,x,y);}else{w = j-1;break;}}printf("%d\n",ans);for(int j=1;j<=w;j++)tr.erase(1,n,1,chg[j][0],chg[j][1]);}}return 0;
}

View Code

压行大法好。

转载于:https://www.cnblogs.com/LiGuanlin1124/p/10763172.html

bzoj3272 Zgg吃东西相关推荐

  1. 连你的免疫系统都拒绝996:半夜吃东西更容易拉肚子 | Cell

    博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 晚上了,又到了各种食物诱惑力plus的时候. 但是肠道处的免疫细胞却表示:加班达咩. 而此时的我be like: 结果第二天,半夜吃的夜宵就 ...

  2. 拉肚子,不能吃东西的痛苦

    昨晚临睡前穿着睡衣就上网,一上网就忘了时间,然后就着凉了. 今天起床就开始拉肚子,拉的人都软掉了,还不能乱吃东西. 妈妈禁止我吃所有的零食.水果,三餐都是吃那些没油水的咚咚,哭啊~~~ 一天人都没力气 ...

  3. 健身前到底该不该吃东西

    空腹健身或致猝死 空腹健身轻则会在运动时头晕目眩,重则会导致血液中的游离脂肪酸明显增高,脂肪酸如果过量的话,就会出现损害心肌的"毒物",引起心律异常,甚至可能导致猝死.有科学研究表 ...

  4. 激烈运动后吃东西不会胖

    激烈运动后吃东西不会胖 (2013-11-06 14:53:01) 转载▼ 标签: 杂谈   激烈运动(无氧或有氧)后的30分钟内是补充碳水和蛋白质的黄金窗口.运动后因为肌肉纤维被破坏,身体内储存的m ...

  5. 吃东西前最好先念3遍解毒神咒

    经常看到有关食品不安全的报道,我想大家是不是要养成吃东西前念解毒咒的习惯呢?而且很简单,念三遍,吹口气在食物上就可以了. 解毒神咒:"三拔辣,茄多." 这个咒,个人以为尤其给小孩子 ...

  6. 修·蓝博士:吃东西前一定要这样清理

    你有没有发现,我们对吃进嘴里的东西也存在各式各样的记忆? 比如汉堡披萨是垃圾食品,蔬果是好东西要多吃,米面糖分高要少吃-- 其实食物是中性的,同样的食物对不同个体有不一样的作用.一起来看看修·蓝博士吃 ...

  7. 时间管理体会:1.不能中午大热天跑出去,消耗大、导致疲惫后,不易恢复 2. 小睡,比吃东西还管用

    中午1:30~3点,到华强北取修好的手机,因为来回都是自行车,所以相当于中午强行军.. 回来做事还好,没赶紧很累,自然放凉的滇红下肚,很好味.很舒服.. 4点左右疲惫,回家办事+休息到4点40左右, ...

  8. 在办公室吃东西的同事,长点心吧!

    有很多上班族会因为各种原因在办公室吃东西.解饿.解闷.解乏.解困--那你会在办公室吃东西吗?你介意同事在办公室吃东西吗?近日,前程无忧围绕这一主题收集了几位网友的看法,来看一下吧. 吃就吃了,麻烦考虑 ...

  9. 吃东西时出汗多是病吗?

    吃东西时出汗多是病吗?                                                       人民健康网 问:我一吃东西,特别是辣的.刺激性的东西,额头部就会出很 ...

最新文章

  1. C语言playsoundw函数,使用inline hook实现修改PC微信通知铃声-哥哥微信来了
  2. 注释符、快捷键、变量及其命名规则
  3. Java运行时动态加载类之ClassLoader加载class及其依赖jar包
  4. gravity与Layout_gravity的区别
  5. html 自动滚动到底部,Javascript实现DIV滚动自动滚动到底部的代码
  6. SiriKit 描述
  7. Ngrok让你的本地Web应用暴露在公网上
  8. 2022电工杯数学建模A题目思路总结分享
  9. android地图旋转监听,ArcGIS for Android示例解析之地图旋转-----MapRotation
  10. 计算机光驱启动设置,光驱启动怎么设置
  11. 轻松调整C盘分区大小
  12. 3万一5万新能源电动汽车,3万内的新能源电动轿车
  13. 小工具:批量替换文件夹下所有文件内容中的指定词
  14. android 多个aar合并,Android多模块构建合并aar解决方案
  15. 2022河南萌新联赛第(二)场:河南理工大学 C - 斩龙
  16. wsl无网络连接(转载)
  17. 考研英语 - word-list-16
  18. win10 x64中inlineHook SSDT里面的函数
  19. 淘宝联盟代码html无法显示,阿里妈妈的iconfont的引用问题
  20. R语言笔记-R语言数据挖掘方法及应用--1

热门文章

  1. WPS表格如何根据数据的不同显示不同的背景色
  2. vue组件销毁重置详解
  3. 武汉Scratch青少儿趣味编程公开课,强势来袭!
  4. No suitable driver
  5. arachni安装注意
  6. pycharm 导入python环境
  7. 测试工程师面试(1)
  8. 江西事业单位计算机专业知识真题,2015年江西事业单位考试计算机每日练习题(1月27日)...
  9. 搞懂回归和分类模型的评价指标的计算:混淆矩阵,ROC,AUC,KS,SSE,R-square,Adjusted R-Square
  10. Docker推送镜像到阿里云镜像仓库