当前位置: 首页 > 编程日记 > 正文

bzoj1251: 序列终结者 (splay)

splay可以用于维护序列,比如noi的维修序列,比如这道

发现当时splay没写总结,也没题解

然后重新写splay竟然耗了一个晚上

结果是因为max【0】没有附最小值!!血一样的教训

最后祭出inline大法才过,我的splay真的慢到吐血

{$inline on}
{$M 1000000000,0,maxlongint}
const//mm=maxlongint>>2;maxn=60000;varsize,left,right,mark,fa,value,max:array[0..maxn]of longint;rev:array[0..maxn]of boolean;root,i,j,k,l,n,m,tot,x:longint;function new:longint;inline;
begininc(tot);exit(tot);
end;function mmax(x,y:longint):longint;inline;
beginif x<y then exit(y);exit(x)
end;procedure swap(var x,y:longint);inline;
vari:longint;
begini:=x;x:=y;y:=i;
end;procedure pushdown(x:longint);inline;
beginif x=0 then exit;if rev[x] then beginswap(left[x],right[x]);rev[left[x]]:=rev[left[x]] xor true;rev[right[x]]:=rev[right[x]] xor true;rev[x]:=false;end;if mark[x]<>0 then beginvalue[x]:=value[x]+mark[x];max[x]:=max[x]+mark[x];inc(mark[left[x]],mark[x]);inc(mark[right[x]],mark[x]);mark[x]:=0;end;
end;procedure update(x:longint);inline;
beginpushdown(x);pushdown(left[x]);pushdown(right[x]);size[x]:=size[left[x]]+size[right[x]]+1;max[x]:=mmax(value[x],mmax(max[left[x]],max[right[x]]));
end;procedure lt(x:longint);inline;
varu,k:longint;flag:boolean;
beginpushdown(x);pushdown(right[x]);k:=right[x];u:=fa[x];if left[u]=x then flag:=true else flag:=false;right[x]:=left[k];fa[right[x]]:=x;left[k]:=x;fa[x]:=k;update(x);update(k);fa[k]:=u;if flag then left[u]:=k else right[u]:=k;
end;procedure rt(x:longint);inline;
varu,k:longint;flag:boolean;
beginpushdown(x);pushdown(left[x]);k:=left[x];u:=fa[x];if left[u]=x then flag:=true else flag:=false;left[x]:=right[k];fa[left[x]]:=x;right[k]:=x;fa[x]:=k;update(x);update(k);fa[k]:=u;if flag then left[u]:=k else right[u]:=k;
end;procedure splay(x,u:longint);inline;
beginwhile fa[x]<>u do beginif fa[fa[x]]=u then beginif left[fa[x]]=x then rt(fa[x])else lt(fa[x]);exit;end;if left[fa[x]]=x then beginif left[fa[fa[x]]]=fa[x] then rt(fa[fa[x]]);rt(fa[x]);endelse beginif right[fa[fa[x]]]=fa[x] then lt(fa[fa[x]]);lt(fa[x]);end;end;
end;function find(x,y:longint):longint;inline;
beginpushdown(x);if size[left[x]]=y-1 then exit(x);if y<=size[left[x]] then exit(find(left[x],y))else exit(find(right[x],y-1-size[left[x]]));
end;function change(j,k:longint):longint;inline;
varnow:longint;
beginnow:=find(root,j);splay(now,0);root:=now;now:=find(root,k+2);splay(now,root);exit(now);
end;function build(l,r:longint):longint;inline;
varmid,x:longint;
beginmid:=(l+r)>>1;x:=new;value[x]:=0;size[x]:=r-l+1;rev[x]:=false;mark[x]:=0;left[x]:=0;right[x]:=0;if l=r then beginif (l=0) or (l=n+1) then value[x]:=-maxlongint>>1;max[x]:=value[x];exit(x);end;if l<mid then beginleft[x]:=build(l,mid-1);fa[left[x]]:=x;end;if mid<r then beginright[x]:=build(mid+1,r);fa[right[x]]:=x;end;update(x);exit(x);
end;beginreadln(n,m);max[0]:=-maxlongint;root:=build(0,n+1);while m>0 do begindec(m);read(j);if j=1 then beginreadln(j,k,l);x:=change(j,k);inc(mark[left[x]],l);update(x);update(root);endelseif j=2 then beginreadln(j,k);x:=change(j,k);rev[left[x]]:=rev[left[x]] xor true;update(x);update(root);endelse beginreadln(j,k);x:=change(j,k);writeln(max[left[x]]);end;end;
end.
View Code

splay还可以当普通的平衡树做?就是把旋转改为旋转为根?再找到题写吧。

转载于:https://www.cnblogs.com/Macaulish/p/4299044.html

相关文章:

模型神器组合,yyds!

作者 | 东哥起飞来源 | Python数据科学最近在kaggle上有一个调参神器非常热门&#xff0c;在top方案中频频出现&#xff0c;它就是OPTUNA。知道很多小伙伴苦恼于漫长的调参时间里&#xff0c;这次结合一些自己的经验&#xff0c;给大家带来一个LGBM模型OPTUNA调参的使用教程&am…

理解http响应头中的Date和Age

Date&#xff1a;Date头域表示消息发送的时间&#xff0c;时间的描述格式由rfc822定义。例如&#xff0c;Date: Mon, 04 Jul 2011 05:53:36 GMT。 Age&#xff1a;当代理服务器用自己缓存的实体去响应请求时&#xff0c;用该头部表明该实体从产生到现在经过多长时间了。 比如访…

linux 保留内核中sas驱动的加载导致crash问题

[rootlocalhost ~]# uname -a Linux localhost.localdomain 3.10.0-693.5.2.el7.x86_64 问题描述&#xff0c;在crash的时候&#xff0c;小内核因为分配中断号失败而触发panic&#xff0c;打印如下&#xff1a;&#xff08;备注&#xff1a;本文大内核就是指正常运行的内核&am…

四层和七层负载均衡的区别

负载均衡设备也常被称为"四到七层交换机"&#xff0c;那补充&#xff1a;所谓四层就是基于IP端口的负载均衡&#xff1b;七层就是基于URL等应用层信息的负载均衡&#xff1b;同理&#xff0c;还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。换句换说&…

关于数据库,你可能最想知道的几件事

【CSDN 编者按】随着技术不断更新&#xff0c;数据库的发展可谓全面开花&#xff0c;也吸引了越来越多人的关注&#xff0c;但大家真的都足够了解数据库吗&#xff1f;作者 | 易璜珵 责编 | 侯淼淼出品 | 《新程序员》互联网飞速发展的时代里&#xff0c;数据库、中间件和…

Visual C++ 2012/2013的内存溢出检測工具

在过去&#xff0c;每次编写C/C程序的时候&#xff0c;VLD差点儿是我的标配。有了它&#xff0c;就能够放心地敲代码&#xff0c;随时发现内存溢出。 VLD最高可支持到Visual Studio 2012。不知道以后会不会支持Visual Studio 2013&#xff0c;但反正眼下是不支持的。 相关的讨论…

.NetCore Docker

转载于:https://blog.51cto.com/linhongquan/2047736

集生态之力跨城市数字化之难题,英特尔交上了一份完美答卷

随着数字孪生、人工智能、大数据、云计算、区块链等新兴技术的发展成熟&#xff0c;社会正加大步伐向数字化时代迈进。城市&#xff0c;作为社会民生与经济发展的重要载体&#xff0c;自然站在了数字化建设历程的第一线。当然&#xff0c;数字化城市建设并不是搭建“空中楼阁”…

设置Squid Cache_mem大小

squid代理服务器一般的Unix,Linux都自带。我使用的是CentOS 5.3,Squid是自已编译的。 Squid 默认 cache_mem 100 16 256 打开/etc/squid/squid.conf 配置 $vi /etc/squid/squid.conf #http_port ,是代理的端口&#xff0c;如果没有其他的http服务占用80端口或8080&#xf…

centos iptables关于ping

配置iptables策略后&#xff0c;一般来说INPUT都是DROP然后配置需要通过的 当执行&#xff1a; iptables -P INPUT DROP 后&#xff0c;机器就不能被ping通了&#xff01; 因为icmp没有添加到规则中&#xff01; 于是我执行如下代码&#xff1a; iptables -A INPUT -p icmp -j …

禁止蒙层底部页面跟随滚动

场景概述 弹窗是一种常见的交互方式&#xff0c;而蒙层是弹窗必不可少的元素&#xff0c;用于隔断页面与弹窗区块&#xff0c;暂时阻断页面的交互。但是&#xff0c;在蒙层元素中滑动的时候&#xff0c;滑到内容的尽头时&#xff0c;再继续滑动&#xff0c;蒙层底部的页面会开始…

squid日志文件太大,怎样处理?

Squid 默认的&#xff15;天会压缩一次, 在 /etc/logrotate.d/squid中有设置。如果你修改了日志的位置, 请修改 /etc/logrotate.d/squid /home/log/squid/access.log { weekly rotate 5 copytruncate compress notifempty missingok } /home…

安卓系列七(广播机制)

2019独角兽企业重金招聘Python工程师标准>>> 一、什么是广播接收者 广播接收者&#xff08;BroadcastReceiver&#xff09;用于接收广播Intent&#xff0c;广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()来实现的。通常一个广…

第九代小冰惊喜登场,多端融合且琴棋书画样样精通

谈及智能助手&#xff0c;相信大家都不会漏过小冰这款具有划时代意义的产品。从最初的微软小冰到现在的第九代小冰&#xff0c;AI的技术在不断的演进&#xff0c;而小冰也从最初的贴心助手变成了如今琴棋书画样样精通的人工智能前沿技术载体。 北京时间2021年9月22日&#xff…

C++对象赋值的四种方式

1. 引用作为参数的方式传递. 1 GetObject(Object& obj) 2 { 3 obj.value value1; 4 } 特点: 在外部构造一个对象. 把该对象以引用的方式传递到函数中. 从而实现对该对象的改变, 该参数实质是一个[out]类型的参数, 而非[in]类型的参数. 这里的引用可以称为别名. 点评: …

金九银十,不要跳槽!

前言:又到了求职的金九银十的黄金月份&#xff0c;我相信有不少小伙伴已经摩拳擦掌的准备寻找下一份工作。就目前国内的面试模式来讲&#xff0c;在面试前积极的准备面试&#xff0c;复习整个 Java 知识体系将变得非常重要&#xff0c;可以很负责任地说一句&#xff0c;复习准备…

FreeMarker标签介绍

FreeMarker标签使用 一、FreeMarker模板文件主要有4个部分组成 1、文本&#xff0c;直接输出的部分 2、注释&#xff0c;即<#--...-->格式不会输出 3、插值&#xff08;Interpolation&#xff09;&#xff1a;即${..}或者#{..}格式的部分,将使用数据模型中的部分替代输…

让Squid 显示本地时间

Squid的Error messages 默认的时间显示的GMT时间&#xff0c;而非本地时间&#xff0c;这个有时候看着很别扭。 下面是修改方法&#xff0c;找到Squid的源文件src/errorpage.c 大概在60多行&#xff0c; { ERR_SQUID_SIGNATURE, "\n<BR clear\"all\">\n&…

linux mysql 命令 大全

linux mysql 命令 大全 1.linux下启动mysql的命令&#xff1a; mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令&#xff1a; mysqladmin restart /ect/init.d/mysql restart (前面为mysql的安装路径) 3.linux下关闭mysql的…

助力5G行业应用扬帆启航,第二届5G毫米波产业高峰论坛圆满召开

当前&#xff0c;5G发展如火如荼&#xff0c;成为引领我国高质量发展的新引擎。5G要想进一步实现向千行百业拓展&#xff0c;离不开全频段的支持&#xff0c;推动5G毫米波发展成为各国共识。为进一步推进5G毫米波产业发展&#xff0c;释放5G全部潜能&#xff0c;助力5G行业应用…

Bootstrap3.x - 源代码分析

参照http://v3.bootcss.com/css/ 文档与源代码colors 比较全面定义总结有意义的颜色。所有uI要用的颜色&#xff0c;都先从已定义的读&#xff0c;这样保证样式的同一性&#xff0c;而且方便以后开发主题库。(建议想自己写css模块的&#xff0c;可以参考一下bootstrap里颜色定义…

清除Squid缓存的小工具

[ 2007-11-2 17:49 | by 张宴 ] 以前我写过一篇《清除指定squid缓存文件的脚本》&#xff0c;但在取URL时存在10%的错误率。如今找到一款老外的程序&#xff0c;可以批量清除某类URL的Squid缓存&#xff0c;支持正则表达式。下载网址&#xff1a;http://www.wa.apana.org.au/~d…

谷歌 AI 编舞师,连张艺兴最喜欢的 Krump 都不在话下

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 舞蹈一直是文化、仪式和庆祝活动的重要组成部分&#xff0c;也是一种自我表达的方式。今天&#xff0c;存在多种形式的舞蹈&#xff0c;从舞厅到迪斯科。然而&#xff0c;舞蹈是一种需要练习的艺术形…

Python 字典(Dictionary)

Python 字典(Dictionary)字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。字典的每个键值(key>value)对用冒号(:)分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号({})中 ,格式如下所示&#xff1a;d {key1 : value1, key2 : value2 …

Varnish Cache 3.0.0安装

https://www.varnish-cache.org/installation/redhat Installation on RedHat 先按需要的模块 在安装软件包之前首先看看主机上的 automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig软件包是否已经安装 如果没有那么就要首先安装&#xff…

three.js绘制过程(二)

2019独角兽企业重金招聘Python工程师标准>>> 同一个场景中可以有多个摄像机&#xff0c;同一个屏幕缓冲区可以分块绘制不同的物体。 WeblGLRender 中autoClear 设定为false之后&#xff0c; 每次绘制不会清空缓冲区&#xff1b; setSize 设定canvas的大小 setViewpo…

AI 不可以作为专利认证发明人,“因为它不是人”

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 英格兰和威尔士上诉法院本周驳回了一名男子的请求&#xff0c;该男子要求法院承认他的人工智能系统为两项专利的发明者。 总部位于美国的 Imagination Engines 的创始人 Stephen Thaler 想要给智能机器…

使用工作集(Working Set)整理项目

Eclipse鼓励将不同的功能模块划分为独立的项目存在&#xff0c;这样不但结构清晰&#xff0c;组织起来还非常灵活&#xff0c;因为我们可以用feature对这些项目进行不同的组合&#xff0c;输出后得到具有不同功能的产品。 不过这样一来Package Explorer里的项目会以更快的速度增…

深入探讨Varnish缓存命中率

也许你还在为刚才动态内容获得7336.76 reqs/s的吞吐率感到振奋&#xff0c;等等&#xff0c;理想和现实是有差距的&#xff0c;你要忍受现实的残酷&#xff0c;别忘了&#xff0c;我们压力测试中的动态内容都处于全缓存情况下&#xff0c;也就是每次请求都命中缓存&#xff0c;…

网易有道词典笔 —— 73 岁“人类高质量”奶奶梅耶马斯克的中文学习之选

继埃隆马斯克发微博称7000年后英语将不复存在后&#xff0c;他的忠实粉丝&#xff0c;同时也是他的母亲——梅耶马斯克也正式开启了学习新语言行动&#xff0c;值得注意的是&#xff0c;梅耶的语种选择是中文。近日&#xff0c;埃隆马斯克的母亲——梅耶马斯克使用有道词典笔学…