首页 > 其他分享 >CDQ 分治学习笔记

CDQ 分治学习笔记

时间:2024-10-24 18:35:18浏览次数:7  
标签:right 分治 mid 笔记 solve CDQ left

鲜花

开新坑。
早该卷卷了。

集训队论文自认为写的很清晰。
感觉对于一道自己进集训队时的国赛题能发明一种新做法很牛啊!

简述

CDQ 分治是一种离线分治做法。
CDQ 分治并没有很固定的模板,这是一种分治思想的延伸。

对于一道带修的数据结构问题,我们可以将每个查询视作其之前修改对其造成影响的结果。
因此我们可以用一个数据结构进行初始化和所有修改后再进行查询其结果。

假设一个数据结构问题中有修改和查询的操作共 \(m\) 个。
solve(l,r) 函数为解决对于任意在操作 \(l\) 至 \(r\) 中的任意查询 \(i\),计算 \(\left[l,i\right)\) 对其造成的影响。
因此 solve(1,m) 即为我们的此题的目标。
solve(l,r) 中,令 \(mid=\left\lfloor\dfrac{l+r}{2}\right\rfloor\),先执行 solve(l,mid)solve(mid+1,r),之后再考虑 \(\left[l,mid\right]\) 中的修改对 \(\left[mid+1,r\right]\) 中查询的影响。
以上即为 CDQ 分治的大体思路。
\(\left[l,mid\right]\) 中的修改对 \(\left[mid+1,r\right]\) 中查询的影响是解题的一个关键,有时也会运用 solve(l,mid)solve(mid+1,r) 中的计算进行合并(如集训队论文中的 Cash 中的归并排序)。

例题

在写了。

标签:right,分治,mid,笔记,solve,CDQ,left
From: https://www.cnblogs.com/LiJoQiao/p/18500168

相关文章

  • vue3 学习笔记(不断更新中...)
    组合式APIsetup()11响应式APIrefref用于创建响应式数据(通常用来定义基本类型数据)在JavaScript代码中,需要使用.value来操作数据letcount=ref(1)console.log(count.value)//1count.value++console.log(count.value)//2在Template模板中不需要<scriptse......
  • 2024/10/24日 日志 --》关于Mybatis的学习笔记整理 - 环境与性质
    步入了Mybatis的学习之中,以下为其相关内容的细化笔记整理点击查看代码--MyBatis--·MyBatis是一款优秀的持久层框架,用于简化JDBC开发--·官网:https://mybatis.net.cn/ --持久层:--·负责将数据保存到数据库的那一层代码--JavaEE三层架构:表现层、业务层、持久层分......
  • 学习笔记(二):声明式UI描述
    一、创建组件1、无参数组件:组件的接口定义没有包含必选构造参数,则组件后面的“()”不需要配置任何内容Divider()2、有参数组件如果组件的接口定义包含构造参数,则在组件后面的“()”配置相应参数Image('https://xyz/test.jpg')示例:Text组件的几种创建方式1、固定字符......
  • 大二上 数据结构与算法笔记 20241024
    一.inline在C和C++编程语言中,inline关键字是一种函数修饰符,用于建议编译器在编译时将函数的代码直接插入到每个函数调用的地方,而不是进行常规的函数调用。这样做的目的是减少函数调用的开销,尤其是在函数体较小且调用频繁的情况下。作用和优点:减少函数调用开销:通过将函数......
  • AlexNet (经典ML流水线→端到端思想的突破) + 代码实现 ——笔记2.11《动手学深度学习
    目录0.前言1.学习表征1.1缺少的成分:数据1.2缺少的成分:硬件2.AlexNet(代码实现)2.1模型设计2.2激活函数2.3容量控制和预处理2.4读取数据集2.5 训练AlexNet3. AlexNet复杂度对比LeNet小结0.前言课程全部代码(pytorch版)已上传到附件本章节为原书......
  • 2024年韩顺平老师Python教程保姆级笔记
    代码获取:https://github.com/qingxuly/hsp_python_coursePython语言描述Python转义字符Python常用的转义字符转义字符说明\t制表符,实现对齐的功能\n换行符,\\一个\\"一个"\'一个'\r一个回车代码演示#\t制表符print("jack\t20")​#\n换行print("Hello,jack......
  • 两棵树问题的一种点分治做法
    简述题面:你有两棵树,\(T_1\),\(T_2\),然后你需要对于每个点求出\(\min_{j\not=i}(dist(T_1,i,j)+dist(T_2,i,j))\)要求时间复杂度\(O(n\log^2n)\)或更优做法:考虑点分治,假如在\(T_1\)固定\(i,j\)一定要经过某个\(x\),然后把\(x\)作为分治点,那么实际上\(val[i,j]=......
  • 学习笔记(一):创建页面
    方法一:打开“entry>src>main>ets”,右键点击“pages”文件夹,选择“New>ArkTSFile”,命名新的页面。可以看到文件目录结构如下:注意:此种方法还需要手动配置页面路径:打开“entry>src>main>resources>base>profile”,在main_pages.json文件中的“src”下配置第二......
  • OpenTK的试用笔记
    安装:Install-PackageOpenTKhttps://opentk.net/learn/chapter1/1-creating-a-window.html?tabs=baseclass-opentk4%2Cgamewindow-ctor-opentk4%2Cgamewindow-run-opentk4%2Ckeypress-opentk4usingOpenTK.Graphics.OpenGL4;usingOpenTK.Windowing.Common;usingOpenTK.......
  • redis学习笔记整理
    安装redis6.2.6一件安装脚本#!/bin/bash#修改系统参数echo'net.core.somaxconn=1024'>>/etc/sysctl.confecho'vm.overcommit_memory=1'>>/etc/sysctl.conf#以上两个系统参数不调整,在redis启动时将会有两条WARNING提示:#WARNING:TheTCPbacklogsettingof511......