首页 > 其他分享 >2023.8.4

2023.8.4

时间:2023-08-05 18:56:31浏览次数:42  
标签:p1 子段 ml psi ms 区间 2023.8

P4513 小白逛公园

求区间的最大子段和。一眼线段树题。那么我们考虑对于线段树的每个节点应该怎么维护:

对于每个节点,额外设几个变量:sum, ml, mr, ms, 分别表示区间和、包含左端点的最大子段和,包含右端点的最大子段和,最大子段和。
我们用p1, p2来表示左儿子和右儿子。

ms的维护:

  1. 当最大子段和只在左边的区间时,ms = p1.ms;

  2. 当最大子段和只在右边的区间时,ms = p2.ms;

  3. 当最大子段和为中间的一段连续区间时: ms = p1.mr + p2.ml;

三者取最大值即可。

ml的维护:

  1. ml只在左边区间时: ml = p1.ml;

  2. ml的范围延续到了右边区间: ml = p1.sum + p2.ml;

两者取最大值。

mr的维护同理。

然后码就完了。(于是就码了一个多小时)

P7706 「Wdsr-2.7」文文的摄影布置

同样一眼线段树题。首先我们肯定能迅速求出 \(\min_{i < j < k} \left \{ B_j \right \}\) 。我们要想办法求出 \(\psi(i, k)\) 了。 \(\psi(i, k) = A_i + A_k - min(B_j)\) 。我们自然是不能直接暴力枚举 \(i, j, k\) 的,肯定会T到飞起。那么可以怎么做呢?作为一个线段树题,我们肯定会先考虑对于线段树节点 \(p\) , 维护 \(\psi (p)\) 。记节点 \(p\) 的左儿子为 \(p1\) , 右儿子为 \(p2\) 。

我们试着考虑 \(i, k\) 的位置。

  • 首先,若 \(i, k\) 均在左儿子或右儿子区间中,这种情况非常简单,直接就是 $\psi (p) = max(\psi(p1) , \psi(p2)) $

  • 其次,便是稍微困难的 \(i\) 在左儿子区间, \(k\) 在右儿子区间中了。我们对 \(j\) 的位置分类讨论一下: 当 \(j\) 在左边时, 我们可以发现, \(A_k\) 必然取右边区间的最大值。这时,我们只需要求左边的 \(max(A_i - B_j)\) 了。于是将这2个加入维护的值中。分别记为 \(P\) , \(Q\) , 之后就非常简单了。

标签:p1,子段,ml,psi,ms,区间,2023.8
From: https://www.cnblogs.com/yduck/p/17608405.html

相关文章

  • 2023.8.5 周六:DDL--操作表
    1#查询当前数据库的所有表2showtables;34#查询表的结构5descfunc(表的名称);67#创建表注:最后一行不加逗号8creattable表名9(10字段名1,数据类型1,11字段名2,数据类型2,12...13...14字段名n,数据类型n15);1617例,要创......
  • 2023.7.31-2023.8.6暑假第四周博客
     2023.7.31一键启动脚本启动:$HADOOP_HOME/sbin/start-yarn.sh• 从 yarn-site.xml 中读取配置,确定 ResourceManager 所在机器,并启动它• 读取 workers 文件,确定机器,启动全部的 NodeManager• 在当前机器启动 ProxyServer (代理服务器)关闭$HADOOP_HOME/sbin/stop-yar......
  • 2023.8.4
    学习java中的类面向对象与面向过程面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象:强调具备了功能的对象,以类/对象为最小单位类与对象的关系类:对一类事物的描述,是抽象的、概念上的定义对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)面向对象......
  • 2023.8.5
    学习java中的类面向对象与面向过程面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象:强调具备了功能的对象,以类/对象为最小单位类与对象的关系类:对一类事物的描述,是抽象的、概念上的定义对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)面向对象......
  • 2023.8.4 杂题
    1.P5344【XR-1】逛森林先用并查集维护连通性。考虑如何建立传送门:如果使用树剖,强行线段树优化建图,那么空间开销过大,已经有2只\(\log\)。考虑使用倍增优化建图,对于一个点向上\(2^k\)的祖先的形成链都建一个点,模仿LCA的过程建边,空间是1只\(\log\).如果我们模仿ST......
  • 暑假集训D11 2023.8.4 补题
    题意给定一个数组\(a\).询问区间\([l,r]\)是否可以分成\(k\)段,每一段的和都是\(2\)的倍数(偶数)考虑前缀和\(sum\),如果\(sum[i]-sum[j-1]\)是偶数,那么\([j,i]\)一定是\(1\)个合法的区间.因此对于询问\(l,r\),可以统计前缀和的值为偶数的个数,......
  • 2023.8.2
    考完科三临时决定去海边啦十二点半睡四点半起来!!但是居然起得来在学校上课肯定是起不来的但是为了玩是肯定起得来的哈哈哈准备玩两天,第一天先去了白沙湾赶海,但是只抓住了很多寄居蟹和小螃蟹晚上的日落很好看!......
  • 2023.8.4 周五:MySQL相关命令
    1#展示数据库2showdatabases;34#创建数据库5creatdatabase+db1(数据库名称);67#如果创建同样名字的数据库,会报错,可以选择另一条判断语句;8creatdatabaseifnotexistsdb1;910#删除数据库11dropdatabasedb1(数据库名称);1213#如果删......
  • 暑假集训D10 2023.8.3 补题
    D.DnDDice给出分别有不同个数的\(4,6,8,12,20\)面骰子,\(k\)面骰子的每个面的点数分别是\(1~k\).问用上所有骰子能组合出来的情况的概率从大到小排序,如果有相同的可能性的情况,按任意顺序即可.\(\operatorname{Solution}\)可以将骰子两两合并,合并后的骰子大小为\([m......
  • 2023.8.3
    早上起来买了17号的火车票18号早上就能到学校,时间过去好快啊不到两个星期就回去了,明天打算回去老家再玩玩,这边太无聊了,下午看了看新出的动漫,技术炸裂,真的是国产之光,晚上一如既往地写了会儿pta看了会儿java就睡了。......