洛谷P5304 [GXOI/GZOI2019] 旅行者(二进制分类技巧)

news/2025/10/7 21:23:58/文章来源:https://www.cnblogs.com/xdhking/p/19128907

假设我们把特殊点分成 A,B 两个集合,新建 s 连 A 集合的所有点,边权 0 ,新建 t 连接 B 集合里的所有点,边权 0 ,那么 s 到 t 的最短路就是 A,B 集合点之间的最短路的最小值。

那么对于 k 个特殊点,我们枚举二进制里的第 i 位,把二进制第 i 位是 0 的点放在 A , 1 的点放在 B ,用以上方法跑一个最短路。

然后跑 log n 次最短路之后,所有最短路的最小值就是最终答案。

原理是,假设 k 个特殊点里最近的是 x 和 y ,那么 x 和 y 一定有一个二进制位不一样,那么他们肯定在那次分组的时候被放进了不同的集合,从而肯定被算进了最后的答案之中最短路。

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long LL;
typedef pair<LL,LL> PLL;
const int N=1e5+10,M=5e5+10;
int a[N];
int n,m,k,s,t;
LL dist[N];
vector<vector<PLL>> edges;
vector<vector<PLL>> nw;
LL dijkstra(){memset(dist,0x3f,sizeof(dist));auto cmp=[](PLL& x,PLL& y){return x.second>y.second;};priority_queue<PLL,vector<PLL>,decltype(cmp)> heap(cmp);heap.push({s,0});dist[s]=0;while(heap.size()){auto tmp=heap.top();int u=tmp.first;LL d=tmp.second;heap.pop();if(d>dist[u])continue;for(auto &[v,w]:nw[u]){if(dist[v]>dist[u]+w){dist[v]=dist[u]+w;heap.push({v,dist[v]});}}}return dist[t];
}
void solve(){cin>>n>>m>>k;edges=vector<vector<PLL>>(n+5,vector<PLL>(0));for(int i=1;i<=m;i++){LL x,y,z;cin>>x>>y>>z;edges[x].push_back({y,z});}for(int i=1;i<=k;i++){cin>>a[i];}s=n+1;t=n+2;LL ans=~0ull>>1;for(int i=0;(1<<i)<=k;i++){nw=edges;for(int j=1;j<=k;j++){if((j>>i)&1)nw[s].push_back({a[j],0});elsenw[a[j]].push_back({t,0});}ans=min(ans,dijkstra());nw=edges;for(int j=1;j<=k;j++){if((j>>i)&1)nw[a[j]].push_back({t,0});elsenw[s].push_back({a[j],0});}ans=min(ans,dijkstra());}cout<<ans<<endl;
}
int main(){cin.tie(nullptr)->sync_with_stdio(false);int T;cin>>T;while(T--){solve();}return 0;
}

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

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

相关文章

【C++】AVL树的概念及完成(万字图文超详解)

【C++】AVL树的概念及完成(万字图文超详解)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

打造自主学习的AI Agent:强化学习+LangGraph代码示例

在充满不确定性的现实世界里,AI的价值不在于预设规则,而在于持续学习和适应AI Agent这个概念最近被炒得很热,从管理日程的语音助手到仓库里跑来跑去的机器人,大家都在谈论Agent的"自主性"。但是真正让Ag…

宁波网站优化技术免费推广渠道有哪些

源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明&#xff1a; 访问者模式的基本想法是&#xff0c;软件系统中拥有一个由许多对象构成的、比较稳定的对象结构&#xff0c;这些对象的类都拥有一个 accept 方法用来接受访问者对象的访问。访问者是一个接口&am…

NKOJ全TJ计划——NP11721

前言 我的做法也是成功的拿到了最优解,开一瓶可乐(其实只喝得起免费的学校饮用水)庆祝。顺便说一句,INTP男叫柯乐。但这显然并不是重点。 只是一个简单的小优化,大家可以看到,只有2行(显然不是章鱼的核聚变,不…

印度全球能力中心2030年展望与技术基建规划

印度工业联合会发布政策框架,建议各邦建立审批促进机构、设计财政激励措施,并投资高性能计算集群和数据中心等数字基础设施,预计到2030年全球能力中心可为印度经济贡献2000亿美元。印度全球能力中心2030年有望贡献2…

NOI Linux 食用教程

一、前置工作:安装虚拟机软件 + 下载 NOI Linux 镜像 1.安装 VMware(如果已经安装跳过即可) VWware,毫无疑问应该是目前最好用的免费虚拟机软件。 官方网站,官方最新版本,需要注册账号并登录 下载完就按照提示安…

营销运营主要做什么seo推广教学

七大原则网站地址&#xff1a;设计模式7大原则&#xff0b;类图关系-CSDN博客 创建型设计模式&#xff1a;创建型设计模式合集-CSDN博客 七大结构型设计模式&#xff1a;7大结构型设计模式-CSDN博客 11种行为型设计模式&#xff1a; 11种行为型模式&#xff08;上&#xff0…

详细介绍:基于 Android 和 JBox2D 的简单小游戏

详细介绍:基于 Android 和 JBox2D 的简单小游戏pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

CF2152H2 Victorious Coloring (Hard Version) 题解

Description 给定一棵有 \(n\) 个顶点的树,每个顶点编号为 \(1\) 到 \(n\)。每条边都被赋予一个正整数权值 \(w_1, w_2, \ldots, w_{n-1}\)。 一种“胜利染色”指的是将所有顶点染成红色或黄色两种颜色,其中必须至少…

题解:P6162 [Cnoi2020] 四角链

传送门 绝大多数的计数题都可以用 dp 和容斥解决。 本题的 dp 比较好想,设 \(f_{i,j}\) 表示前 \(i\) 个位置填了 \(j\) 个数。考虑如果第 \(i\) 个位置不填,则贡献是 \(f_{i-1,j}\);否则前面 \(i-1\) 个位置一共填…

题解:P3301 [SDOI2013] 方程

传送门 首先如果没有任何限制条件,则原问题即变为简单的「求方程 \(\sum_{i=1}^nx_i=m\) 的解的个数」。此时考虑插板法,等价于将 \(m\) 个 \(1\) 分成 \(n\) 份,这时有 \(m-1\) 个空隙,要插 \(n-1\) 个板,方案数…

# 20232321 2025-2026-1 《网络与系统攻防技术》实验一实验报告

1.实验内容1.1直接修改程序机器指令,改变程序执行流程————通过直接修改可执行文件改变流程 1.2通过构造输入参数,造成BOF攻击,改变程序执行流————通过利用缓冲区溢出的漏洞,使返回的地址跳转到getshell 1.…

基于深度学习的语音识别高效的系统设计与实现

基于深度学习的语音识别高效的系统设计与实现pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

[ARC201B] Binary Knapsack 大大背包

思路 第一眼背包, 但是 \(n \leq 2e5\) 和重量 $ 2^{X}, X\in[0,60)$ 。所以不能使用背包 由于重量为 $ 2^{X}$ , 很有可能与二进制有关, 于是按位贪心 开 \(65\) 个优先队列,每个优先队列里存放对应与下标相等的 …

网站开发要什么软件济南抖音推广公司

目录 前言 1-保持小的拉取请求 2-使用拉取请求模板 3-实施响应时间 SLA 4-培训初级和中级工程师 5-设置持续集成管道 6-使用拉取请求审查应用程序 7-生成图表以可视化您的代码更改 前言 代码审查可能会很痛苦软件工程师经常抱怨审查过程缓慢&#xff0c;延迟下游任务&…

宁波做网站建设推广广推科技(北京)有限公司

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a;Java微服务 ✨特色专栏&#xff1a; 知识分享 &…

题解:CF1292E Rin and The Unknown Flower

传送门 一道有趣的思维题。 我们从最简单的情况开始考虑:如果还剩下 \(2\) 格电呢? 那么直接询问 \(\texttt{O}\) 和 \(\texttt{H}\),剩下的位置就是 \(\texttt{C}\)。 从以上的朴素做法中我们得到启发:能不能通过…

打印A3大小的PDF文件为A4幅面

Foxit 福昕打印pdf:放大150% 然后把每页旋转180度,保存,打印。方法一: 用 Acrobat Pro DC 旋转。 方法二: 用 illustrator,打开pdf,选择某页,旋转,保存

一个完整的网站建设怎么在58同城上做网站

linux服务器的字符集设置可能影响到网站页面出现 “&#xff1f;&#xff1f;&#xff1f;” 等问号乱码&#xff0c;还有可能导致文件中的汉字部分出现乱码。有两个原因 服务器没有安装 zh_CN.UTF-8 字符集&#xff0c;导致不支持中文&#xff01;服务器虽然装了 zh_CN.UTF-8…