首页 > 其他分享 >CF226E Noble Knight's Path

CF226E Noble Knight's Path

时间:2023-11-11 19:56:08浏览次数:42  
标签:Noble 染成 个点 这条 text texttt CF226E Path 时刻

重链剖分真可爱,数据结构真可爱。

tags:

  • \(\text{data structures}\)

  • \(\text{trees}\)

  • $\color{red}{*2900} $

洛谷 CF

  • 给出一棵 \(n\) 个点的树,初始所有点为白色。还有 \(q\) 次操作,第 \(i\) 个操作发生在第 \(i\) 个时刻,初始状态时刻为 \(0\)。每次操作为:

    • \(1\texttt{ }u\),将 \(u\) 变成黑色。保证每个点只会发生一次 \(1\) 操作。

    • \(2\texttt{ }a\texttt{ }b\texttt{ }k\texttt{ }y\),查询从 \(a\) 走到 \(b\) 的有向路径上,第 \(k\) 个没有在 \([y+1,i]\) 中的时刻被染成黑色的点编号。有向路径不含 \(\boldsymbol{a,b}\)

  • \(n,q\le 10^5\)。

  • \(4.00\text{ s}\, /\, 250.00\text{ MB}\)。

考虑重剖套主席树维护 \(dfn\) 区间内在 \([0,i]\) 时刻有多少个点被染成黑色。\(1\) 操作在之前版本上修改,\(2\) 操作直接继承上一版本。

对于查询,找到并按顺序存放 \(a,b\) 路径上(不含 \(a,b\))的重链 \(dfn\) 区间。考虑确定第 \(k\) 个点在第几条重链上。

可以通过主席树 \([0,i]\) 版本和 \([0,y]\) 作差得出这条链内 \([y+1,i]\) 时刻有多少个点被染成黑色,然后再用链的长度减去这个值就可以得到这条链这个时刻区间内没被染成黑色点的个数。

枚举一条链时,若当前所有链的满足条件的点个数总和 \(cnt\) 不足 \(k\),则跳到下一条链,否则就是查询这条链上第 \(k-cnt\) 个满足条件的点。

这个点一定满足,这条链上以其为结尾的前缀的满足条件的点的个数 \(\ge k-cnt\),且这个前缀长度最小。容易发现答案具有单调性,二分 + 主席树即可。

注意前缀是对于这条链在路径上的子串而言的,要注意这条链的方向。

时间复杂度为 \(\mathcal{O}(q\log^2 n)\),空间复杂度为 \(\mathcal{O}(q\log n)\)。离线做法可以做到空间 \(\mathcal{O}(n+q)\)。

提交记录(\(\color{limegreen} \bf{Accepted}\) \(\,780\text{ ms}\,/\,63.43\text{ MB}\),含代码)

标签:Noble,染成,个点,这条,text,texttt,CF226E,Path,时刻
From: https://www.cnblogs.com/MnZnOIerLzy/p/17826240.html

相关文章

  • classpath和classpath*区别
    classpath:和classpath*:的含义classpath:表示从类路径中加载资源,classpath:和classpath:/是等价的,都是相对于类的根路径。资源文件库标准的在文件系统中,也可以在JAR或ZIP的类包中。classpath*:假设多个JAR包或文件系统类路径都有一个相同的配置文件,classpath:只会在第一个......
  • [题解] CF938G Shortest Path Queries
    ShortestPathQueries给你一张无向连通图,支持三种操作:插入一条边\((u,v,w)\)。删除一条边。求\((u,v)\)之间的异或最短路。\(n,m,1<2^{30}\)。先考虑异或最短路怎么求,这部分和最大XOR和路径是一样的。就是把图上的环都扔到一个线性基里,每次查询就是线性基......
  • getContextPath、getServletPath、getRequestURI的区别
    假定你的webapplication名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果: 1、System.out.println(request.getContextPath());//可返回站点的根路径。也就是项目的名字 打印结果:/news   2......
  • selenium等待元素加载,元素操作,执行js,切换选项卡,前进后退,异常处理,登录cnblogs,抽
    1selenium等待元素加载......
  • 获取小程序appid和path教程详细版
    打开你需要获取appid的小程序,这里以“饿了么”小程序为例,然后点击右上角的图标以下为小程序path获取方法登录你的小程序的微信公众平台https://mp.weixin.qq.com点击右上角的工具,进入后是下面的页面然后用你输入的微信号微信浏览“饿了么”小程序,浏览到你要获取path的页面,点......
  • KEGG PATHWAY
     KEGGPATHWAYDatabaseKEGGPATHWAY数据库是一个手工画的代谢通路的集合,包含以下几方面的分子间相互作用和反应网络:1.新陈代谢2.遗传信息加工3.环境信息加工4.细胞过程5.生物体系统6.人类疾病7.药物开发PATHWAY的五种类型仅仅第一种参考通路(referencepathway)图是手动画出来的......
  • 一个Python爬虫案例,带你掌握xpath数据解析方法!
    xpath基本概念xpath解析:最常用且最便捷高效的一种解析方式。通用性强。xpath解析原理1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中2.调用etree对象中的xpath方法结合xpath表达式实现标签的定位和内容的捕获。环境安装pipinstalllxml如何实例化一个etree对......
  • java基础学习:path,java_home环境变量配置
    1.path变量: 装jdk后会自动配置java和javac的path路径 2.JAVA_HOME环境变量:   ......
  • uni.uploadFile和this.$refs.signatureRef.canvasToTempFilePath
    canvasToTempFilePath生成的图片是临时h5路径可用于临时回显,如果图片的路径要上传接口,需要使用uni.uploadFile来将图片上传到服务器//我用uniapp做app签名时写的代码片段,上传完服务器之后的路径就可以传到后端给的接口啦,然后在查询的时候就可以通过订单返回的图片路径进行回显t......
  • 【图形学笔记】Lecture12-Path Tracing-路径追踪
    Lecture12-PathTracing-路径追踪目录Lecture12-PathTracing-路径追踪RayCasting光线追踪Ray-surfaceintersection射线-表面判交光线和平面光线和三角形判交——MöllerTrumbore算法RayIntersectionWithSphereRayIntersectionWithImplicitSurfaceBoundingVolumes......