D. Perishable Roads

题意简述: 一个 nnn 个点的完全图 以 iii 为根节点时

询问 能构造的树的 ∑d(x)\sum d(x)∑d(x) 最小是多少。

d(x)d(x)d(x): xxx 到根节点边权值最小值

MOONPIE题解


首先有一个显而易见的错误贪心:

不妨假设以root\text{root}root为根节点重构树,定义u→vu\to vu→v这条路径是所有路径的最小值,则我们肯定希望这样构造路径:
root→u→v⇝others\text{root}\to u\to v\leadsto \text{others}root→u→v⇝others
也就是把其他所有点都往vvv上连(构成一棵树),这样其他点的代价都是wu→vw_{u\to v}wu→v​,不难得出所求为wroot→u+(n−2)×wu→vw_{\text{root}\to u}+(n-2)×w_{u\to v}wroot→u​+(n−2)×wu→v​。
容易想到反例也就是如果wroot→uw_{\text{root}\to u}wroot→u​非常非常大,则会不是最优值!!!

不过我们只需要找到一条路径root⇝u\text{root}\leadsto uroot⇝u 代替root→u\text{root}\to uroot→u,不难想到答案一定是这种情况:root⇝u→v⇝others\text{root}\leadsto u\to v\leadsto \text{others}root⇝u→v⇝others(其中root⇝u\text{root}\leadsto uroot⇝u是一条链而v⇝othersv\leadsto \text{others}v⇝others是一棵树)


对于链上路径的值有一个结论(详细可查看RingweEH):

root→⋯→i→j→k→u→v\text{root}\to\dots\to i\to {j}\to k\to u\to vroot→⋯→i→j→k→u→v
这条链上的边权一定单调递减且只可能存在一例例外(即有可能wi→j≤wk→uw_{i\to j}\leq w_{k\to u}wi→j​≤wk→u​)

对于计算答案来说,树上的点v⇝othersv\leadsto \text{others}v⇝others对答案的贡献是(n−1−x)×wu→v(n-1-x)×w_{u\to v}(n−1−x)×wu→v​而链上的点由于单调递减,只需要从root\text{root}root跑一边最短路即可由于不知道链上边的个数xxx只需要利用花费提前的思想,跑最短路前把每条边减去wu→vw_{u\to v}wu→v​即可,对于例外情况特殊考虑一下即可。

#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
using ll=long long;
constexpr int N=2010;
int g[N][N],n;
ll d[N];
bool st[N];
void dijkstra(int S)
{memset(d,0x3f,sizeof d);memset(st,0,sizeof st);d[S]=0;for(int i=1;i<=n;i++)//例外for(int j=1;j<=n;j++)d[i]=min(d[i],g[i][j]*2ll);for(int i=1;i<=n;i++){int t=-1;for(int j=1;j<=n;j++)if(!st[j]&&(t==-1||d[t]>d[j])) t=j;st[t]=1;for(int j=1;j<=n;j++) d[j]=min(d[j],d[t]+g[t][j]);}
}int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n;int S=1,mn=0x3f3f3f3f;memset(g,0x3f,sizeof g);for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++){cin>>g[i][j];g[j][i]=g[i][j];if(mn>g[i][j]) mn=g[i][j],S=i;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) g[i][j]-=mn;dijkstra(S); for(int i=1;i<=n;i++) cout<<1ll*(n-1)*mn+d[i]<<'\n';
}

要加油哦~

codeforces773 D. Perishable Roads(思维+最短路)相关推荐

  1. Codeforces 773D Perishable Roads 最短路 (看题解)

    Perishable Roads 智商题, 不会啊.. 贴个官方题解 https://codeforces.com/blog/entry/51883 #include<bits/stdc++.h ...

  2. Deleting Edges 思维 最短路 删边

    题意 :给一有向图,删去图中某些边(可以不删),使剩下的边构成一颗树,且0号点到每个点的距离依然为原图中0号点到每个点的最短距离.求删边的方案数,即新图所有可能性的方案数. 思路 :先用dijkstr ...

  3. HDU - 4370 0 or 1(思维+最短路)

    题目链接:点击查看 题目大意:给定一个n*n的矩阵,需要构造出一个n*n的矩阵,规定矩阵只能由0或1组成,使得最小. 题目解析:题意很明确,但是却很抽象,我们需要从图论的角度来看待三个初始条件: 假设 ...

  4. POJ1724 ROADS 费用最短路

    //State: POJ1724 Accepted 1188K 32MS C++ 1968B /* *题目大意: * 给定总费用,还有n个城市,m条边,构成的图为单向图,然后 * m条边有费用,还有距 ...

  5. Acwing第 25 场周赛【完结】

    被T2演了好久,T3比较简单. 目录 4073. 找规律输出[签到] 4074. 铁路与公路[一般 / 思维 最短路] 4075. 染色[一般 / 并查集 贪心] 4073. 找规律输出[签到] ht ...

  6. Codeforces Round #722 (Div. 2)

    Codeforces Round #722 (Div. 2) 题号 题目 知识点 A Eshag Loves Big Arrays(题解略) 贪心 B Sifid and Strange Subseq ...

  7. 不能有比这个再靠谱的星座分析了

    1摩羯2水瓶3双鱼4白羊5金牛6双子7巨蟹8狮子9处女10天枰11天蝎12射手 一 摩羯座 12月22日-1月19日 魔羯给人外表感觉很冷漠,其实内心是火热的,很善良,不容易拒绝别人, 尤其是自己看重 ...

  8. NOIP 好题推荐(DP+搜索+图论)POJ ZOJ

    NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS)  1090 Chain ->格雷码和二进制码 ...

  9. 苹果公司传奇-让人匪夷所思的创业奇迹

    像许许多多硅谷的创业奇迹一样,乔布斯和他的伙伴们的创业故事中,有从大学退学.有车库工场.有技术创新.有商业模式的创新.有天使投资.有上市.有少年得志.没有的是,他居然被自己创立的企业开除了!但是,按照 ...

最新文章

  1. 一千行 MySQL 学习笔记,看完就会了
  2. 贩卖知识的“成功学”,大师“卖拐”几时休?
  3. 雪豹玩家必备网站推荐:
  4. Linux之硬件资源管理
  5. CSS中常见的6种文本样式
  6. c语言工程作业,西工大c语言程序作业
  7. IIS 搭建简单网站 并 发布项目
  8. java基础--接口
  9. 用过滤器来解决JSP中文乱码问题
  10. 视频基础 以及 MP4 容器解封装
  11. mysql三表联合查询_求三表联合查询的SQL查询语句
  12. 平面方程、两平面的夹角、空间点到平面的距离公式
  13. QQ抢车位外挂(续)
  14. 对机器学习中鲁棒性的理解
  15. 2019年学UI设计有前途吗
  16. 英语中what的用法
  17. RGB颜色转换为16进制颜色
  18. Programming Rust Fast, Safe Systems Development(译) 错误处理(第七章)
  19. 你真的懂insert or update?
  20. 单片机电子血压计原理与设计

热门文章

  1. 在栈中压入一个字符串c语言,面试题 31:栈的压入、弹出序列
  2. python创建一个空的dataframe_python 创建一个空dataframe 然后添加行数据的实例
  3. netty springmvc_springmvc源码架构解析之HandlerMapping
  4. 模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序_操作系统基础6-支持操作系统的最基本的硬件-中断...
  5. 调整png的不透明度_TGA与PNG的优劣对比
  6. 计算机结构优化,计算机结构与程序优化.ppt
  7. jax rs mysql_Jersey / JAX-RS ExceptionMapper MySQL
  8. leetcode117. 填充每个节点的下一个右侧节点指针 II(层序遍历08)
  9. Codeforces Round #719 (Div. 3)/ Codeforces Round #720 (Div. 2)
  10. cli2弃用了吗 vue_vue cli - 2 升级到 3的问题汇总