【学习笔记】[EGOI2023] Bikes vs Cars

题目链接

警惕出题人为了不让你看出来构造是生成树而用了 2023 2023 2023这个数字😅

下文中宽度为 w w w的边表示分配给自行车的宽度。

考虑如何判定无解。如果存在 i , j , k i,j,k i,j,k使得 b i , j < min ⁡ ( b i , k , b k , j ) b_{i,j}<\min(b_{i,k},b_{k,j}) bi,j<min(bi,k,bk,j)或者 c i , j < min ⁡ ( c i , k , c k , j ) c_{i,j}<\min(c_{i,k},c_{k,j}) ci,j<min(ci,k,ck,j),那么原问题一定无解。

我们考虑,对于两个点 ( i , j ) (i,j) (i,j),如果 b i , j + c i , j ≥ W b_{i,j}+c_{i,j}\ge W bi,j+ci,jW,那么我们可以贪心的在 i , j i,j i,j之间连一条宽度为 b i , j b_{i,j} bi,j的边(给自行车道)以及一条宽度为 W − c i , j W-c_{i,j} Wci,j的边(给机动车道),这并不会影响答案;反之,如果 b i , j + c i , j < W b_{i,j}+c_{i,j}<W bi,j+ci,j<W,那么我们必然不能在 i , j i,j i,j之间连边。因此,考虑贪心的连上这些边,如果无法满足条件,那么原问题无解(我们已经尽可能的加入所有边了)。

考虑加上边数的限制,我们自然而然的想到分别求解这两类边对应的最大生成树,显然如果边数不为 2 n − 2 2n-2 2n2那么原问题肯定无解;否则我们发现这样的生成树恰好满足我们的构造。(不需要 Floyd \text{Floyd} Floyd检验,可以结合第一步判定无解的过程想一想为什么)

复杂度 O ( n 3 ) O(n^3) O(n3)。但是显然判定无解的过程可以优化到 O ( n 3 w ) O(\frac{n^3}{w}) O(wn3)

#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define fi first
#define se second
#define inf 0x3f3f3f3f
using namespace std;
const int N=505;
int n,W,m,a[N][N],b[N][N];
int fa[N];
struct node{int x,y,z;bool operator <(const node &a)const{return z>a.z;}
}e[N*N];
vector<node>res;
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>W;for(int i=1;i<n;i++){for(int j=0;j<i;j++){cin>>b[i][j];b[j][i]=b[i][j];}}for(int i=1;i<n;i++){for(int j=0;j<i;j++){cin>>a[i][j];a[j][i]=a[i][j];}}for(int i=0;i<n;i++)a[i][i]=b[i][i]=inf;for(int k=0;k<n;k++){for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(a[i][j]<min(a[i][k],a[k][j])||b[i][j]<min(b[i][k],b[k][j])){cout<<"NO";return 0;}}}}for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(a[i][j]+b[i][j]>=W){e[++m]={i,j,a[i][j]};}}}sort(e+1,e+1+m);for(int i=0;i<n;i++)fa[i]=i;for(int i=1;i<=m;i++){int u=e[i].x,v=e[i].y,w=e[i].z;if(find(u)!=find(v))fa[fa[u]]=fa[v],res.pb({u,v,w});}for(int i=0;i<n;i++)fa[i]=i;m=0;for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(a[i][j]+b[i][j]>=W){e[++m]={i,j,b[i][j]};}}}sort(e+1,e+1+m);for(int i=1;i<=m;i++){int u=e[i].x,v=e[i].y,w=e[i].z;if(find(u)!=find(v))fa[fa[u]]=fa[v],res.pb({u,v,W-w});}if(res.size()!=2*n-2){cout<<"No";return 0;}cout<<res.size()<<"\n";for(auto e:res){cout<<e.x<<" "<<e.y<<" "<<e.z<<"\n";}
}

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

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

相关文章

可以非常明显地感受到,一场有关直播带货的暗流正在涌动

虽然有关直播带货的争论依然还在持续&#xff0c;但是&#xff0c;我们依然无法否认今年的双十一依然是直播带货的高光时刻。无论是以淘宝、京东和拼多多为代表的传统电商平台&#xff0c;还是以抖音、快手为代表的新电商平台&#xff0c;几乎都将今年双十一的重心放在了直播带…

Java入门篇 之 继承

本篇碎碎念&#xff1a;最近的课程遇到瓶颈了&#xff0c;看的时候感觉自己会了&#xff0c;但是结束仔细一回顾还是一知半解&#xff0c;一点一点来吧&#xff0c;基础必须要打好(自己给自己好的心里暗示&#xff0c;结局一定是好的) 今日份励志文案:慢慢改变&#xff0c;慢慢…

SELF-AUGMENTED MULTI-MODAL FEATURE EMBEDDING

two embeddings f o r g _{org} org​ and f a u g _{aug} aug​ are combined using a gating mechanism 作者未提供代码

实战Leetcode(五)

Practice makes perfect&#xff01; 实战一&#xff1a; 思路&#xff1a;我们要用复制的节点来组成一个新的链表&#xff0c;而原链表的节点随机指向其中一个节点&#xff0c;我们首先给每一个节点都复制并且插入到原来节点的后面&#xff0c;然后用复制的节点指向我们原来节…

金财数科无代码开发平台:轻松实现电商、CRM、广告推广系统的集成连接

连接与集成&#xff1a;挖掘电商平台的潜力 金财数科是一家领先的信息技术公司&#xff0c;专注于利用前沿技术如互联网、人工智能、大数据和区块链等&#xff0c;为传统财税信息化方案和产品提供升级改造&#xff0c;并打造新一代智能财税SaaS平台。我们的目标是帮助企业通过…

电脑篇——本地串口转TCP,TCP转虚拟串口,网络调试助手,串口调试助手

TCP/UDP工具、串口工具 https://pan.baidu.com/s/1SY03d_RRVhyOZfsPlApmxg?pwd5555 今日有个需求&#xff0c;就是在本机电脑上接了一个串口设备&#xff0c;然后我的QtCreator是在内网远程电脑运行的&#xff0c;我想将串口设备“挂载”到远程电脑上去调试程序&#xff0c;于…

百望云携手华为发布金融信创与数电乐企联合方案 创新金融合规变革

10月27日&#xff0c;北京发布《关于开展全面数字化的电子发票试点工作的公告》&#xff0c;自2023年11月01日起开展数电票试点。千呼万唤始出来&#xff0c;拉开了北京地区企业开展数电票试点的序幕。 百望云作为数电票行业翘楚&#xff0c;电子发票服务平台供应商&#xff0c…

FiRa标准——MAC实现(二)

在IEEE 802.15.4z标准中&#xff0c;最关键的就是引入了STS&#xff08;加扰时间戳序列&#xff09;&#xff0c;实现了安全测距&#xff0c;大大提高了测距应用的安全性能。在FiRa的实现中&#xff0c;其密钥派生功能是非常重要的一个部分&#xff0c;本文首先对FiRa MAC中加密…

力扣429.N叉树的层序遍历(Java BFS解法)

Problem: 107. 二叉树的层序遍历 II 文章目录 思路解题方法复杂度Code同类型补充题&#xff1a; 思路 BFS的核心是借助队列&#xff0c;将树的每一层节点先添加到其中&#xff0c;再在处理当前层时&#xff08;将当前层的节点出队列&#xff09;同时将下一层的节点添加到队列中…

Spring面试题:(七)Spring AOP思想及实现

AOP思想的概念 AOP的实现&#xff1a;动态代理技术 通过spring容器获取目标对象和增强对象&#xff0c;通过动态代理生产代理对象&#xff0c;在目标对象的目标方法执行增强方法&#xff0c;返回生成代理对象给spring容器&#xff0c;在获取bean时则获取代理对象。 JDK代理和…

postman设置动态token, 每次登录更新token

postman设置动态token, 每次登录更新token 文章目录 postman设置动态token, 每次登录更新token问题1. 设置全局变量2. 新建登录接口3. 设置脚本4. 切换环境5. 配置动态token 问题 token过期时间一般比较短, 每次使用postman调用接口都token非常麻烦 实现token过期后, 调用一次…

Axure原型设计工具怎么样?有替代软件吗?

Axurerp是一种快速原型设计工具&#xff0c;可以制作高度互动的HTML原型。设计师不仅可以使用Axure绘制线框图和原型&#xff0c;还可以在Axurerp中完成一系列用户体验设计。在本文中&#xff0c;我们将根据用户体验设计师的真实经验&#xff0c;触发用户体验设计师的实际工作&…

sqlalchemy-orm联表查询指定字段

1. 联表查询全部字段 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker# 创建数据库连接 engine create_engine(mysql://username:passwordlocalhost/database_name) Session sessionmaker(bindengine) session Session()# 联表查询 query …

【rl-agents代码学习】02——DQN算法

文章目录 Highway-env Intersectionrl-agents之DQN*Implemented variants*:*References*:Query agent for actions sequence探索策略神经网络实现小结1 Record the experienceReplaybuffercompute_bellman_residualstep_optimizerupdate_target_network小结2 exploration_polic…

2.5k的ChatGPT-Java版SDK升级1.1.2-beta0支持GPT-4V、Dall-e-3模型、ToolCalls、微调Job、TTS...

1、项目简介 Chatgpt-Java是OpenAI官方Api的Java SDK&#xff0c;可以快速接入项目使用。支持OpenAI官方全部接口。 目前收获将2500star&#x1f31f;。 开源地址&#xff1a;https://github.com/Grt1228/chatgpt-java官方文档&#xff1a;https://chatgpt-java.unfbx.com/最…

Flutter笔记:Opacity、Offstage和Visibility可见性的比较

Flutter笔记 Flutter笔记&#xff1a;Opacity、Offstage和Visibility可见性的比较 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_…

AtCoder ABC154

C - Distinct or Not 签到题&#xff0c;注意大小写和以前的不一样 D - Dice in Line 签到题2&#xff0c;用个窗口即可 E - Almost Everywhere Zero 数位DP&#xff08;搜索&#xff09;的例题 pos表示当前搜索到的位置&#xff08;开始为0&#xff0c;结束为n&#xff09; …

线性代数(四)| 解方程 齐次性 非齐次性 扩充问题

文章目录 1 方程解的个数2 解方程步骤2.1 齐次性方程组2.2 非齐次方程组 3 一些扩充问题 系数矩阵 增广矩阵 A m n X B A_{mn}XB Amn​XB 1 方程解的个数 m 代表有m个方程 n代表有n个未知数 系数矩阵的秩与增广矩阵的秩不同 无解 若相同 &#xff0c;如系数矩阵的秩和未知…

数据结构前言(空间复杂度)

1.空间复杂度 空间复杂度也是一个数学表达式&#xff0c;是对一个算法在运行过程中临时占用存储空间大小的量度 。 空间复杂度不是程序占用了多少bytes的空间&#xff0c;因为这个也没太大意义&#xff0c;所以空间复杂度算的是变量的个数。 空间复杂度计算规则基本跟实践复杂…