CF1737D Ela and the Wiring Wizard
CF1737D Ela and the Wiring Wizard
题意简述
形象化的,对于一个边,我们可以做以下变换:
将一条边变为自环

将边的一个端点沿着其他边移动

总的来说,就是边的两个端点可以自由移动
解释一下样例三:
$ (2,5),w=22\to(2,6),w=22\to(6,6),w=22\to(6,4),w=22\to(6,8),w=22\to(8,7),w=22\to(1,8),w=22 $
经过了 \(6\) 次变化,使得 \((1,8)\) 之间有连边,长度为 \(22\) ,最后走这条边,时间为 \(22\times7=154\)
思路
提出一个猜想:最小花费方案中,必然有一种是将一条边移动到 \(1,n\) 之间,然后走这条边。
证明的话(不会),感性理解就好了(我也是看样例猜出来的)
于是问题转化:考虑每一条边,求将其移动到 \(1,n\) 两边的最小走多少步 \(cnt\) 。我们求得便是 \(\min(w_i*(cnt+1))\)
对于一条边 \((x,y)\)
其端点自己直接走到 \(1/n\)
\(cnt=\min(dis_{x,1}+dis_{y,n},dis_{y,1}+dis_{x,n})\)
其中一个端点先走到某一个中间点 \(s\) ,然后将另一个端点通过变换一接过来,再走去 \(1/n\)
\(cnt=\min(dis_{x,s},dis_{y,s})+dis_{1,s}+dis_{s,n}+1\)
对于 \(dis\) 直接弗洛伊德就可以了
CODE
// #pragma GCC optimize("Ofast")
// #pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef long double ld;
const ll maxn=500+2;
inline ll read_int(){
ll a=0;bool f=0;char g=getchar();
while(g<'0'||g>'9') {if(g=='-') f=1;g=getchar();}
while('0'<=g&&g<='9') a=a*10+g-'0',g=getchar();
return f ? -a : a;
}
inline void write(ll a,bool f=1){
char lin[40];ll top=0;
if(a<0) a=-a,putchar('-');
while(a) lin[++top]=a%10+'0',a/=10;
if(!top) lin[++top]='0';
while(top) putchar(lin[top--]);
if(f) putchar('\n');
}
int n,m;
int mapp[maxn][maxn];
struct E{int f,t;ll v;}edge[maxn*maxn];
inline void read(){
n=read_int(),m=read_int();
memset(mapp,0x3f,sizeof mapp);
for(int i=1;i<=n;i++) mapp[i][i]=0;
for(int i=1;i<=m;i++){
edge[i].f=read_int(),edge[i].t=read_int(),edge[i].v=read_int();
mapp[edge[i].t][edge[i].f]=mapp[edge[i].f][edge[i].t]=1;
}
for(int i=1;i<=n;i++){
for(int e=1;e<=n;e++){
for(int j=1;j<=n;j++){
mapp[e][j]=min(mapp[e][i]+mapp[i][j],mapp[e][j]);
}
}
}
ll ans=1e18;
for(int i=1;i<=m;i++){
int lin=min(mapp[edge[i].f][1]+mapp[edge[i].t][n],mapp[edge[i].f][n]+mapp[edge[i].t][1]);
for(int e=1;e<=n;e++){
lin=min(lin,min(
mapp[edge[i].f][e],mapp[edge[i].t][e]
)+mapp[e][1]+mapp[e][n]+1);
}
lin++;
ans=min(ans,lin*edge[i].v);
}
write(ans);
}
int main (){
// freopen(".in","r",stdin);
int T=read_int();
while(T--) read();
}
CF1737D Ela and the Wiring Wizard的更多相关文章
- [题解] Codeforces Dytechlab Cup 2022 1737 A B C D E 题解
傻*Dytechlab还我rating!(不过目前rating还没加上去,据说E是偷的说不定要unrated) 实在没预料到会打成这样... 求点赞 点我看题 A. Ela Sorting Books ...
- salesforce 零基础学习(六十)Wizard样式创建数据
项目中表之间关联关系特别多,比如三个表中A,B,C C作为主表,A,B作为从表,有时候C表需要创建数据时,同时需要创建A,B两个表的数据,这种情况下,使用Wizard样式会更加友好. 以Goods_ ...
- Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架
最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包.比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个 ...
- Windows 10 IoT Serials 3 - Windows 10 IoT Core Ardunio Wiring Mode
Maker社区和智能硬件的朋友一定知道Arduino,很多3D打印机都是用它做的.为了迎合这一大块市场,微软在基于Intel Galileo的Windows 8.1 IoT中就是使用这种基于Ardui ...
- SharePoint Configuration Wizard - Unable to upgrade SharePoint Products and Technologies because an upgrade is already in progress
故障描述 当要运行SharePonit Products and Technologies Configuration Wizard的时候,出现了如下图所示的错误提示. 错误信息为: Unable t ...
- Fuel UX wizard example
<!DOCTYPE html> <html class="no-js fuelux"> <head> <meta charset=&quo ...
- PCI Express(五) - Xilinx wizard
原文地址:http://www.fpga4fun.com/PCI-Express5.html Xilinx makes using PCI express easy - they provide a ...
- arduino编程语言Wiring参考手册API
对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(based on Processing)来实现的. 通过编程,Arduino可以实现很多种功能. ...
- 转:安装MySQL遇到MySQL Server Instance Configuration Wizard未响应的解决办法
问题:安装了MySQL之后进入配置界面的时候,总会显示“MySQL Server Instance Configuration Wizard未响应”,一直卡死. 解决办法:Win7系统中,以管理员的权 ...
- Cocos2d-x Application Wizard for Visual Studio User Guide
0. Overview Cocos2d-x-win32's project can be generated by Wizard. Wizard supports Visual Studio 2008 ...
随机推荐
- IPython notebook(Jupyter notebook) 设置密码
本文共给出两种密码设置方法,一种为直接设置密码法(较为便捷),另一种为hash密码设置法 =================================== 第一种: 直接设置密码 注意: i ...
- pytest中文文档
在网上找到的感觉还不错的pytest的中文文档,这里收藏一下: 翻译的中文文档:完整的Pytest文档 中文文档链接地址: https://www.osgeo.cn/pytest/contents.h ...
- 读论文《Reinforced Attention for Few-Shot Learning and Beyond》
2022年4月22日,实验室开组会,我讲了论文<Reinforced Attention for Few-Shot Learning and Beyond>,最近整理资料又再读了一遍,这里 ...
- java 栈与队列
Java中的栈与队列 一.栈(Stack) 1.1 介绍 栈是一种后进先出(LIFO,Last In First Out)的数据结构.在栈中,元素的插入和删除操作都是在栈顶进行的.Java中的java ...
- 03-canvas线条属性
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- Java 代码本地设置Hadoop用户名密码
在Hadoop环境中,通常使用Kerberos进行身份验证.但在一些开发或测试环境中,我们可能需要在本地代码中设置用户名和密码来模拟或进行简单的测试.虽然这不是一个安全的做法,因为它违背了Kerber ...
- Density-invariant Features for Distant Point Cloud Registration论文阅读
Density-invariant Features for Distant Point Cloud Registration 2023 ICCV *Quan Liu, Hongzi Zhu, Yun ...
- python pyqt6 QComboBox 设定下拉框背景颜色
设定QComboBox 的背景颜色,边框设定,以及下拉框的背景颜色以及边框设定, selection-background-color 不生效可忽略 xxx_source = QComboBox(se ...
- (八)Redis 主从复制、切片集群
一.主从复制 1.主从关系 都说的 Redis 具有高可靠性,这里有两层含义:一是数据尽量少丢失,二是服务尽量少中断.AOF 和 RDB 保证了前者,而对于后者,Redis 的做法就是将一份数据同时保 ...
- 淘宝打单发货接口,淘宝打单发货API
许多做系统功能的小伙伴经常面对的一个功能是对接淘宝开放平台,在自己系统中进行打单发货. 但是,目前淘宝开放平台,已经关闭了相关的相关的权限申请,具体可查看相关公告.有需要这个权限的,可以站内信联系我, ...