超级恶心的题面 [USACO21OPEN] Portals G

这个东西我自己也不知道怎么精简,所以直接贴原题题面了。

题意

Bessie 位于一个由 \(N\) 个编号为 \(1\dots N\) 的结点以及 \(2N\) 个编号为 \(1\cdots 2N\) 的传送门所组成的网络中。每个传送门连接两个不同的结点 \(u\)\(v\)\(u≠v\))。可能有多个传送门连接同一对结点。

每个结点 \(v\) 与四个不同的传送门相连。与 \(v\) 相连的传送门列表由 \(p_v=[p_{v,1},p_{v,2},p_{v,3},p_{v,4}]\) 给出。

你的当前位置可以用有序对(当前结点,当前传送门)表示;即一个有序对 \((v,p_{v,i})\)
,其中 \(1\le v\le N\) 以及 \(1\le i\le 4\)。你可以使用以下任一操作来改变你的当前位置:

    1. 由穿过当前传送门来改变当前结点。
    1. 改变当前传送门。在每一个结点上,列表的前两个传送门是配对的,后两个传送门也是配对的。也就是说,如果你的当前位置是 \((v,p_{v,2})\),你可以转而使用传送门 \((v,p_{v,1})\),反之亦然。类似地,如果你的当前位置是 \((v,p_{v,3})\),你可以转而使用传送门 \((v,p_{v,4})\),反之亦然。没有其他改变传送门的方式(例如,你不能从传送门 \(p_{v,2}\) 转去传送门 \(p_{v,4}\) )。

总共有 \(4N\) 个不同的位置。不幸的是,并不一定每一个位置都可以从另外的每一个位置经过一系列操作而到达。所以,以 \(c_v\) 哞尼的代价,你可以以任意顺序重新排列与 \(v\) 相邻的传送门列表。在此之后,列表中的前两个传送门互相配对,同时后两个传送门也互相配对。

例如,如果你将与 \(v\) 相邻的传送门以 \([p_{v,3},p_{v,1},p_{v,2},p_{v,4}]\) 的顺序重新排列,这意味着如果你位于结点 \(v\)

  • 如果你当前位于传送门 \(p_{v,1}\) ,你可以转而使用传送门 \(p_{v,3}\),反之亦然。
  • 如果你当前位于传送门 \(p_{v,2}\) ,你可以转而使用传送门 \(p_{v,4}\),反之亦然。
    你不再能够从传送门 \(p_{v,1}\)
    转至传送门 \(p_{v,2}\),或从传送门 \(p_{v,3}\) 转至 \(p_{v,4}\) ,反之亦然。

计算修改这一网络使得每一个位置都可以从另外的每一个位置到达所需要花费的哞尼的最小数量。输入保证存在至少一种修改网络的合法方式。

输入格式

输入的第一行包含 \(N\)

以下 \(N\) 行每行描述一个结点。第 \(v+1\) 行包含五个空格分隔的整数 \(c_v,p_{v,1},p_{v,2},p_{v,3},p_{v,4}\)

输入保证对于每一个 \(v\)\(p_{v,1},p_{v,2},p_{v,3},p_{v,4}\) 各不相同,且每个传送门出现在恰好两个结点的邻接表中。

输出格式

输出一行,包含修改这一网络使得每一个位置都可以从另外的每一个位置到达所需要花费的哞尼的最小数量。

输入输出样例 #1

输入 #1

5
10 1 4 8 9
11 1 2 5 6
12 9 10 2 3
3 4 3 6 7
15 10 8 7 5

输出 #1

13

说明/提示

样例解释

重新排列结点 \(1\)\(4\) 的邻接表就已足够。这需要总计 \(c_1+c_4=13\) 哞尼。我们可以使 \(p_1=[1,9,4,8]\) 以及 \(p_4=[7,4,6,3]\)

数据范围与约定

\(2\le N\le 10^5\)\(1\le c_v\le 10^3\)

做法

这个东西第一次看固然是懵的,感觉就是很乱,不过细细理一理会明白它实际上在做什么。

明显我们在试图把所有点放到一个联通快里边,像是最小生成树?

注意我们这里表示的点不是所谓的结点,而是传送门。

我们本来是两个节点的每两个传送门对应连接的,它们之间也有边,分成了两块,这样显然各个传送门会不联通,我们所作的操作实际上就是把这一堆合并起来。

这下就完了,直接最小生成树做就行。

代码↓

#include <bits/stdc++.h>
using namespace std;
const int MN=1e6+116;
int father[MN], n;
int find(int x){if(father[x]!=x) father[x]=find(father[x]);return father[x];
}
void merge(int x, int y){x=find(x), y=find(y);if(x==y) return;father[x]=y; return;
}
struct Node{int pos, val;bool operator <(const Node &o)const{return val<o.val;}
}node[MN];
int G[MN][5], ans=0;
int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin>>n; for(int i=0; i<MN; ++i) father[i]=i;for(int i=1; i<=n; ++i){node[i].pos=i; cin>>node[i].val;cin>>G[i][1]>>G[i][2]>>G[i][3]>>G[i][4];merge(G[i][1],G[i][2]);merge(G[i][3],G[i][4]);}sort(node+1,node+n+1);for(int i=1; i<=n; ++i){int pos=node[i].pos;int u=find(G[pos][1]), v=find(G[pos][3]);if(u==v) continue;merge(u,v); ans+=node[i].val; }cout<<ans<<'\n';return 0;
}

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

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

相关文章

海口省建设厅网站广告拍摄制作公司

有这个想法的初衷喜欢电子和DIY硬件的朋友对稚晖君应该都不陌生&#xff0c;他定期都会分享一些自己做的好玩的硬件&#xff0c;他之前做了一个ElectronBot桌面机器人我就很感兴趣&#xff0c;所以就自己也做了一个。起初我只是自己开发了一个叫电子脑壳的上位机软件&#xff0…

服务类网站建设网站关闭了域名备案

目录 1.注册中心 1.1.nacos注册中心 1.2. 微服务注册和拉取注册中心的内容 2.3.修改订单微服务的代码 3.负载均衡组件 3.1.什么是负载均衡 3.2.什么是Ribbon 3.3.Ribbon 的主要作用 3.4.Ribbon提供的负载均衡策略 4.openfeign完成服务调用 4.1.什么是OpenFeign 4.2…

建设宣传网站的必要性建设商城网站公司吗

在机器人技术日新月异的今天&#xff0c;舵机作为机器人的核心部件之一&#xff0c;扮演着至关重要的角色。它的性能直接关系到机器人的运动控制、稳定性以及精度等方面。那么&#xff0c;在选择和使用机器人舵机时&#xff0c;我们需要关注哪些关键要素呢&#xff1f;本文将为…

北京市住房城乡建设门户网站温岭网络推广公司

mySelectDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

成立网站要什么手续城乡建设和住房建设官网

从2016年的3月份开始到现在&#xff0c;对于Android文档的翻译已经进行了两个月的时间。虽然数量还不及总篇数的一半&#xff0c;但是经过一番整理&#xff0c;发现翻译的文章还不少&#xff0c;目前为止已经有56篇了。这个过程也陆陆续续的坚持了下来。现在回头看刚开始翻译的…

网站缺陷和优化的例子中学加强校园网站内容建设

输入两个整数&#xff0c;求他们的最大公约数&#xff1a; 如果我们不用辗转相除法的话&#xff0c;两个整数的最大公约数&#xff0c;我们就可以定义一个整数为两个整数中最小的那个数&#xff0c;然后两个整数一起除我们新定义的整数&#xff0c;如果都除尽了&#xff0c;这…

怎么搭建局域网网站隐私页 wordpress

【0】README 0.1&#xff09; 本文描述转自 core java volume 1&#xff0c; 源代码为原创&#xff0c;旨在理解 java线程——什么是线程&#xff1f; 的相关知识&#xff1b; 0.2&#xff09;线程定义&#xff1a;一个程序可以执行多个任务&#xff0c;每一个任务成为线程&a…

崇左做网站公司如何建设公司的网站首页

作者&#xff1a;Erik Engheim译者&#xff1a;冬雨整理&#xff1a;陈思20 世纪 90 年代末&#xff0c;RISC 和 CISC 爆发了一场大战&#xff0c;自那以后&#xff0c;大家却说 RISC 和 CISC 的区别没那么重要了了。许多人表示&#xff0c;指令集也就那么回事&#xff0c;对 C…

如何隐藏一个元素

【常见方法对比】方法是否占据空间是否可交互是否触发重绘/回流典型场景display:none ❌ 不占空间 ❌ 不可交互 回流+重绘 完全移除元素(菜单切换、Tab 切换)visibility:hidden ✅ 占空间 ❌ 不可交互 重绘 保留布局…

昆仑通态触摸屏保存参数到内部存储器并读取的方法成都控制器开发提供

1、 背景在日常的人机界面开发中,有时需要直接在屏幕上写程序进行一下计算换算需要用到一些参数,这些参数需要由操作员设置、掉电不丢失地保存、并在下一次开机时内自动读取这些参数,那么怎么做呢?本文介绍昆仑通态…

使用reCAPTCHA提升WordPress网站安全性 - 指南

使用reCAPTCHA提升WordPress网站安全性 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

软工9.22

今天学了很多,开发软件就是偷懒,怎么做简单,找到最快的方法,挣最多的钱,花最少的力,需要学的还很多。

惠州网站建设企业wordpress主题文章形式

迭代器模式是一种行为型设计模式&#xff0c;它提供了一种统一的方式来遍历集合中的元素&#xff0c;而无需暴露集合的内部结构。在本文中&#xff0c;我们将深入探讨迭代器模式的实现和应用。 在软件开发中&#xff0c;集合是一种常见的数据结构&#xff0c;用于存储和管理一…

网站导航html源码中国优秀设计网站

本小节介绍Stage模型的两种应用组件如何启动FA模型的PageAbility组件。 UIAbility启动PageAbility UIAbility启动PageAbility和UIAbility启动UIAbility的方式完全相同。 说明&#xff1a; 需注意FA模型中abilityName由bundleName AbilityName组成&#xff0c;具体见示例。 i…

杭州萧山做网站WordPress 列表如何修改成图片

数学统计在我们的程序当中特别是数据分析当中是必不可少的一部分&#xff0c;本文就来介绍一下 NumPy 常见的统计函数。最大值与最小值numpy.amin()用于计算数组中的元素沿指定轴的最小值。可以通过 axis 参数传入坐标轴来指定统计的轴&#xff0c;当指定 axis 时&#xff0c;a…

网站服务器 内容更新帮公司做网站

WordPress作为世界上最受欢迎的内容管理系统之一&#xff0c;拥有庞大的插件生态系统&#xff0c;为用户提供了丰富的功能扩展。在内容创作和SEO优化方面&#xff0c;有一类特殊的插件是自动生成原创文章并自动发布到WordPress站点的工具。这些插件能够帮助用户节省时间和精力&…

网站过期后网站开发定制公司

目录 #A 空间 #B 卡片 #C 直线 #D 货物摆放 #E 路径 #F 时间显示 #G 砝码称重 #H 杨辉三角形 #I 双向排序 #J 括号序列 #A 空间 #include <bits/stdc.h> using namespace std;int main() {cout<<256 * 1024 * 1024 / 4<<endl;return 0; } #B 卡片…

做色流网站网页相册制作

利用Date对象编写程序&#xff0c;判断并输出今天是开学的第几周&#xff0c;星期几。(function(){var startDay new Date(2014,8,1); //根据指定的年月日时分秒设置开学时间为2014/09/01var startMs startDay.getTime();//返回1970年至今的毫秒var startYear startD…

如何选择大良网站建设网页设计和网站设计的区别

1、现有9个小球&#xff0c;已知其中一个球比其它的重&#xff0c;如何只用天平称2次就找出该球&#xff1f; ①把9个球分成三份&#xff0c;三个一份&#xff1b; ②拿出其中两份进行称量&#xff1b;会分为两种情况 若拿出的两份小球称量结果&#xff0c;重量相等&#xff1b…

在控制台执行可列出所有placeholder样式

// 在控制台执行可列出所有placeholder样式 Array.from(document.styleSheets).forEach(sheet => { try { Array.from(sheet.cssRules).forEach(rule => { if(rule.selectorText && /::?-webkit-input-…