首页 > 其他分享 >浅谈一类边权带指数的图论问题

浅谈一类边权带指数的图论问题

时间:2023-12-13 20:55:06浏览次数:23  
标签:二分 图论 浅谈 二进制 边权 路径 维护 主席

偶然看到了 这道题,求的是边权为 \(n^w\) 次方时树上的第 \(k\) 小路径,觉得这类题目很有意思,就研究了一下。

1.CF464E The Classic Problem

题意:给一个无向图,每条边的边权是 \(2^{w_i}\),求 \(s\) 到 \(t\) 的最短路。

思路:首先,我们可以把距离看成一个二进制数,那么我们需要能支持快速比较两个二进制数,二进制数在某一位 +1,把一个二进制数赋成另一个二进制数的数据结构。

因为有最后一个操作,好像只有可持久化的数据结构支持这一点,于是考虑用主席树来维护。

对于第一个操作,需要维护每个区间的哈希值,比较时找出两个二进制数的 lcp 就可以比较大小。

对于第二个操作,需要能查一个位置后面第一个是 0 的位置和区间清零,前者可以用主席树上二分,后者可以直接把一个空的主席树复制过来。

接下来的部分就比较简单了。直接用 dijkstra,每个点维护一棵主席树,松弛边 \((u,v,w)\) 的时候就是新建一棵主席树表示 \(dis_u+2^w\),然后判断和 \(dis_v\) 的大小关系即可。

2.[PA2019] Podatki drogowe

题意:有一棵树,每条边的边权为 \(n^{w_i}\) 次方时树上的第 \(k\) 小路径。

思路:因为边权是 \(n^z\),而一条路径最多只有 \(n-1\) 条边,因此不用考虑进位的问题,只用考虑每个 \(n^i\) 的系数。

首先,肯定要二分答案,但是值域太大不好直接二分,但是一共只有 \(\dfrac{n(n-1)}{2}\) 条路径,可以考虑直接二分路径,同时采用随机二分。

然后就是怎么判断一条路径在路径集合中的排名。

处理树上路径一般采用点/边分治,这道题用边分治更好处理,于是可以先用边分治处理处所有一半的路径,然后排序,二分判段时双指针计算答案即可。

如何维护每条路径的系数和比较大小呢?和上一题一样,可以把边权看成一个 \(n\) 进制数,然后使用主席树。主席树上叶子节点维护 \(n_i\) 的系数,每个节点都维护当前区间表示的数的哈希值,就可以支持维护路径的系数和比较大小了。

其实这类问题思维量算是紫题的水平,但是困难点就在于代码实现,比如第二题代码长度达到了 6.6k。

标签:二分,图论,浅谈,二进制,边权,路径,维护,主席
From: https://www.cnblogs.com/Xttttr/p/17899900.html

相关文章

  • 浅谈设计模式-工厂模式的设计思想以及细节问题(上篇)
    1什么是工厂模式?工厂模式,顾名思义,就是把将对象的实例化过程封装在工厂类中的方式。工厂负责生产相应的对象实例。一般分为两种工厂模式:简单工厂;抽象工厂优点:用户不需要解决具体的细节问题,利用工厂类进行生产产品细节;可以将对象的创建与使用代码分离,提供一种统一的接口来创建不同类......
  • 【教程】浅谈ios混淆和加固加密
    ​混淆:针对项目代码,代码混淆通常将代码中的各种元素(变量、函数、类名等)改为无意义的名字,使得阅读的人无法通过名称猜测其用途,增大反编译者的理解难度。虽然代码混淆可以提高反编译的门槛,但是对开发者本身也增大了调试除错的难度。开发人员通常需要保留原始未混淆代码用于调试。......
  • 浅谈SQL优化小技巧
    回顾MySQL的执行过程,帮助介绍如何进行sql优化。(1)客户端发送一条查询语句到服务器;(2)服务器先查询缓存,如果命中缓存,则立即返回存储在缓存中的数据;(3)未命中缓存后,MySQL通过关键字将SQL语句进行解析,并生成一颗对应的解析树,MySQL解析器将使用MySQL语法进行验证和解析。​例如,验证是......
  • 浅谈性能测试
    背景这两年除了基础的功能测试,越来越多的企业也开始关注专项测试,例如性能测试我再我们年初和年终的领导改进建议中都提到,加强自动化和性能的学习和工作输出,今天浅聊下~1.性能测试概念(来自百度)性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项......
  • 浅谈WPF之控件拖拽与拖动
    使用过office的visio软件画图的小伙伴都知道,画图软件分为两部分,左侧图形库,存放各种图标,右侧是一个画布,将左侧图形库的图标控件拖拽到右侧画布,就会生成一个新的控件,并且可以自由拖动。那如何在WPF程序中,实现类似的功能呢?今天就以一个简单的小例子,简述如何在WPF中实现控件的拖拽和拖......
  • 浅谈clickhouse的Mutation机制(附源码分析)
    最近研究了一点ch的代码。发现一个很有意思的词,mutation。google这个词有突变的意思,但更多的相关文章翻译这个为"订正"。上一篇文章分析了background_pool_size参数。这个参数和后台异步工作线程池merge工作有关。ClickHouse内核中异步merge、mutation工作由统一的工作线程池来完成......
  • 浅谈数据可视化免费化所带来的利与弊
    作为一名在数据可视化行业从业多年的设计人,近年来数据可视化的免费化也越来越明显,今天就来和大家分析一下,数据可视化工具免费化所带来的利与弊。先从好处入手,最明显的就是免费化可以让数据可视化工具得到更广泛的使用。免费数据可视化工具使得更多人可以轻松接触和使用这些工具......
  • 浅谈深浅拷贝
    【一】深浅拷贝深拷贝(deepcopy)和浅拷贝(shallowcopy)是在Python中用于复制对象的两种方式。它们的作用如下:1.浅拷贝:浅拷贝创建一个新的对象,但是该新对象的元素是对原始对象的引用。换句话说,浅拷贝只复制了对象的引用,而不是对象本身。当原始对象中的元素发生变化时,浅拷贝的对象也......
  • 图论做题记录1
    图论做题记录前言:大概是记录本人打比赛或者做题碰到的图论的部分题。所有题目均已省以下宏://QwQ#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>usingnamespacestd;#definefifirst#definesesecondtypedefpair<int,int>PII;typed......
  • 浅谈如何防止sql注入
    ✨前言✨本篇文章主要在于了解SQL注入攻击原理及防御策略......