洛谷-P5280

题目

有点复杂放个 链接。

分析

容易看出这个复制是假的,本质上就是操作序列的所有子集,于是考虑每加入一次操作所带来的贡献。
不妨记第 \(p\)\(MODIFY\) 区间为 \([L,R]\)\(f_u\)\(u\) 结点的所有情况 \(tag\) 之和。
做题的时候突然发现这个 \(MODIFY\) 和我日常写的不一样因此还想错了一会。。。。

  • 若结点 \(u\) 未被遍历到,此次操作对结点本身没有影响,因此有 \(f_u\leftarrow f_u\times 2\)
  • 若结点 \(u\) 被遍历到且被修改,此次操作对结点 \(tag\) 直接赋值为 \(1\),因此有 \(f_u\leftarrow f_{u}+2^{p-1}\)
  • 若结点 \(u\) 被遍历到且进行了 \(PUSHDOWN\) 操作,显然有 \(f_u\leftarrow f_u\)
  • 若一个结点被遍历到且 \([l_u,r_u]\bigcap [L,R]=\emptyset\),此时结点 \(tag\) 取决于结点 \(u\) 到根节点 1 是否有 \(tag=1\),本题难点就在于此,接下来会进行细致讨论。

不妨记 \(g_u\) 为结点 \(u\) 到根节点 1 有 \(tag=1\) 的方案数,具体和上述一样也要进行讨论:

  • 若结点 \(u\) 未被遍历到且 \([l_u,r_u]\bigcap[L,R]=\emptyset\) 此次操作对结点本身没有影响,因此有 \(g_u\leftarrow g_u\times 2\)
  • 若结点 \(u\) 未被遍历到且 \([l_u,r_u]\bigcap[L,R]=[l_u,r_u]\),此时结点 \(u\) 到根节点 1 有被修改的结点,因此有 \(g_u\leftarrow g_u+2^{p-1}\)
  • 若结点 \(u\) 被遍历到且被修改,此次操作对结点 \(tag\) 直接赋值为 \(1\),因此有 \(g_u\leftarrow g_{u}+2^{p-1}\)
  • 若结点 \(u\) 被遍历到且进行了 \(PUSHDOWN\) 操作,显然有 \(g_u\leftarrow g_u\)
  • 若一个结点被遍历到且 \([l_u,r_u]\bigcap [L,R]=\emptyset\),一路 \(PUSHDOWN\) 下来结果不变,因此有 \(g_u\leftarrow g_u\times 2\)

因此接下来可以直接用线段树维护即可,只有一个地方需要用到懒标记写起来十分简单啊。
代码简单不放了。

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

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

相关文章

常见的7种排序算法(转载)

本文介绍了七种常见的排序算法:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序和堆排序。每种算法通过具体步骤和代码实现进行详细讲解,包括时间复杂度分析。文中提供了丰富的示例代码和图解,帮助读者更好地理解各排序算法的工作原理及应用场景。【版权声明】…

【MySQL】MySQL为什么 不用 Docker部署?

MySQL为什么不推荐使用Docker部署 docker可以从远程仓库拉取镜像然后通过镜像快速的部署应用,非常的方便快捷, 但是 , 为什么 一般公司的 Mysql 不用docker部署,而是部署在 物理机器上呢? 一、DB有状态,不方便扩容1.1 Docker容器的两大类型: 有状态 、无状态的区分1.2 My…

RocketMQ实战—1.订单系统面临的技术挑战

大纲 1.一个订单系统的整体架构、业务流程及负载情况 2.订单系统面临的技术问题一:下订单的同时还要发券、发红包、Push推送等导致性能太差 3.订单系统面临的技术问题二:订单退款时经常流程失败导致无法完成退款 4.订单系统面临的技术问题三:第三方客户系统的对接耦合性太高…

【docker】自建 docker 镜像加速

1. 背景 由于神秘原因,国内用户逐渐无法访问 Docker Hub 仓库。这对于开发者来说是个不小的难题。而这个解决方案是通过赛博菩萨 cloudflare(简称 CF)中转请求,解决访问限制并加速访问。刚好之前分享了如何获取免费域名,今天就来分享一下如何用免费域名在CF部署自己的 doc…

hive--MySQL8错误--ERROR 1410 (42000): You are not allowed to create a user with GRANT

错误展示:解决办法: create user hadoopguide@localhost identified by hadoopguide; grant all privileges on hadoopguide.* to hadoopguide@localhost with grant option; 效果图:错误原因: MySQL 8.0 及以上版本不允许在授予权限时隐式创建用户。所以显式创建用户后再授…

【Linux】Linux一键切换镜像源,告别慢速下载,国内镜像让你飞起来!

简介 本文教你如何通过一键切换 Linux 镜像源,快速提高系统软件包的下载速度,告别“慢”的困扰,轻松提升体验。 项目地址:https://github.com/SuperManito/LinuxMirrors 官方文档:https://linuxmirrors.cn/开头 Linux 系统在安装和更新软件时,经常会遇到速度慢的问题,尤…

day05-面向对象编程:基础语法

Java面向对象:类的基础语法[ 任务列表 ] 1.面向对象快速入门 2.什么是面向对象 3.类的基础语法——构造器 4.类的基础语法——this关键字 5.类的基础语法——封装 6.类的基础语法——javabean 7.类的基础语法——static 8.其他———————————————————————…

【docker】通过Docker一键部署群晖NAS!支持自定义内存和CPU、多磁盘挂载、KVM加速!

声明 文中所涉及的技术、思路和工具仅供以学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担。如有需要,请购买正版软件。今天给大家介绍一个开源项目,让你能够在Linux或者Window11上通过Docker部署群晖NAS,支持多磁盘挂载、KVM加速等等,让你享受…

渗透测试速成

123123321渗透测试速成 主动信息收集 MSF渗透 python反弹一个交互式shell MySQL基础:登录,增删改查.. 框架识别利用:whatweb 信息收集速通 直接arp-scan -l,快速找到IP地址 然后,nmap -A ip+子网掩码,进行全面扫描 探测目标IP地址: 探测主机:arp-scan -l(推荐) 探测当…

Spring AI 提交 PR 实战指南:避免常见坑

今天,我们将简单地了解如何向 Spring AI 提交 PR(Pull Request)。在这个过程中,有一些常见的坑需要大家注意和避免,特别是在 Git 操作方面。我们会重点关注提交信息的规范,如何进行一次合并提交,以及其他在代码质量和结构上需要遵守的要求。 最后,我们会快速回顾一下与…

第一个java程序,HelloWorld

第一个java程序,HelloWorld创建一个java程序后缀名为java编写代码 public class Hello {public static void main (String[] args) {System.out.println("HelloWorld");} }编译 javac java文件 ,会生成一个class文件运行Java文件,java class文件

[Jest] 整合 webpack 综合练习

这一小节,我们来做一个综合的练习,该练习会整合:typescript webpack jest准备工作 首先创建项目目录,通过 npm init -y 进行初始化。 整个项目我们打算使用 typescript 进行开发,因此需要安装 typescript npm i typescript -D然后通过 npx tsc --init 创建 ts 的配置文件,…