首页 > 其他分享 >P4366 [Code+#4]最短路

P4366 [Code+#4]最短路

时间:2023-03-26 16:13:07浏览次数:49  
标签:+# Code 短路 P4366 le oplus

P4366 [Code+#4]最短路

一个图有两层:

  • 一层完全图,每对 \(u\),\(v\) 间都有一条边权为 \(u \oplus v\) 的边。
  • 一层给定图,边信息完全给定。这层图的边数 \(m \le 5 \times 10^5\)。

求单源最短路。\(n \le 10^5\)。


暴力建边 \(n^2\) 不可取,所以优化建图。

第一层是完全图,第二层是直接给定边的图。对第一层优化,然后再加第二层。

想到把 \((u, v, u \oplus v)\) 拆成 \(u \rightsquigarrow v\) 路径的形式,使得路径权值和 \(w\) 满足 \(w \le u \oplus v\)。

可以猜想上面这个其实就是 \(w = u \oplus v\)。

然后发现可以把 \(u \oplus v\) 二进制拆位,于是可以只保留从每个点开始,边权为 \(2^k\) 的边。

端点范围细节:https://www.luogu.com.cn/discuss/585050

标签:+#,Code,短路,P4366,le,oplus
From: https://www.cnblogs.com/crab-in-the-northeast/p/luogu-p4366.html

相关文章

  • 【LeetCode动态规划#05】背包问题的理论分析(基于代码随想录的个人理解,多图)
    背包问题问题描述背包问题是一系列问题的统称,具体包括:01背包、完全背包、多重背包、分组背包等(仅需掌握前两种,后面的为竞赛级题目)下面来研究01背包实际上即使是最经典......
  • LeetCode 142.环形链表II
    力扣LeetCode142.环形链表II题目跳转链接解题思路:代码随想录:142.环形链表II从头结点出发一个指针,从相遇节点也出发一个指针,这两个指针每次只走一个节点,那么当这......
  • Go06-文件操作+单元测试+goroutine+channel+反射
    Go06-文件操作+单元测试+goroutine+channel+反射1.打开和关闭文件funcmain(){ //1打开文件。 //file可以称为file对象、file指针、file文件句柄。 file,err:=......
  • AtCoder Beginner Contest 248 F(连通性状压dp)
    F连通性状压dp思路看了dls的讲解后才明白一点点。状态\(dp[i][j][k]\)表示到表示到i列,删除了j条边,点i和n-1+i是否联通,对于下一列点,若当前i和n-1+i连通,则多出来的三条......
  • LeetCode|1574. 删除最短的子数组使剩余数组有序
    题目链接:1574.删除最短的子数组使剩余数组有序给你一个整数数组arr,请你删除一个子数组(可以为空),使得arr中剩下的元素是非递减的。一个子数组指的是原数组中连续......
  • LeetCode|1032. 字符流
    题目链接:1032.字符流设计一个算法:接收一个字符流,并检查这些字符的后缀是否是字符串数组words中的一个字符串。例如,words=["abc","xyz"]且字符流中逐个依次加入......
  • abp(net core)+easyui+efcore实现仓储管理系统——ABP升级7.3(五十八)
    Abp(netcore)+easyui+efcore实现仓储管理系统目录abp(netcore)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)abp(netcore)+easyui+efcore实现仓储管理系统——解......
  • HelloWorld之Java调用C++(JNI)
    JNI(JavaNativeInterface),通过使用Java本地接口书写程序,可以确保代码在不同的平台上方便移植。1、java新建类HelloWorld,并声明native方法,引入hello的dllpublicclassHel......
  • HelloWorld之Java调用C++(JNI)
    JNI(JavaNativeInterface),通过使用Java本地接口书写程序,可以确保代码在不同的平台上方便移植。1、java新建类HelloWorld,并声明native方法,引入hello的dllpublicclassHel......
  • C++指针
    1指针的概念#include<iostream>usingnamespacestd;/*间接引用指针时,可获得该指针指向的变量内容本部分参考内容:C++程序设计教程钱能清华大学出版社*/void......