• 一定存在一个最优解是一条链

    否则可以接上去,不会更差

  • 边权最小的边一定在这条链上

    这个比较显然

    可以把所有边都减去这个最后加上就行了

  • 把链上的边按距离当前根的深度从小到大排列,设第一个零边位置为\(k\),那么到\(k-2\)及之前所有的边边权非严格递减,这个可以手玩一下。

    具体思路就是如果不递减,就可以强行把0边一个端点接过来,换掉\(k-1\),可以证明这样不会变差。

    于是边权可以直接累加起来了。

  • 建议一个虚点,连接所有的点,边权为被连接点出边最小边权的两倍。

    两倍是模拟把0边拉过来耗掉的那条边,然后如果拉的恰好是0边,计算的时候也没有影响。

    其余边照连,从虚点跑单源最短路即可。

  • 为什么跑出的最短路树边权递增?

    特殊点在于先连接的那条最短边,反证一下即可。


Code:

#include <cstdio>
#define ll long long
const int N=2010;
int n,g[N][N];
ll mi=(1ll<<50),dis[N],vis[N];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
scanf("%d",&g[i][j]);
mi=mi<g[i][j]?mi:g[i][j];
g[j][i]=g[i][j];
}
for(int i=1;i<=n;i++)
{
int id=0;
for(int j=1;j<=n;j++)
if(i!=j)
{
g[i][j]-=mi;
if(!id||g[i][j]<g[i][id]) id=j;
}
dis[i]=2ll*g[i][id];
}
for(int i=1;i<=n;i++)
{
int id=0;
for(int j=1;j<=n;j++) if(!vis[j]&&(!id||dis[j]<dis[id])) id=j;
vis[id]=1;
for(int j=1;j<=n;j++) dis[j]=dis[j]<dis[id]+g[id][j]?dis[j]:dis[id]+g[id][j];
}
for(int i=1;i<=n;i++) printf("%lld\n",dis[i]+1ll*(n-1)*mi);
return 0;
}

2019.1.2

Problem A: 道路建设 解题报告的更多相关文章

  1. 洛谷 [HNOI2014]道路堵塞 解题报告

    [HNOI2014]道路堵塞 题意 给一个有向图并给出一个这个图的一个\(1\sim n\)最短路,求删去这条最短路上任何一条边后的最短路. 又事SPFA玄学... 有个结论,新的最短路一定是\(1\ ...

  2. Problem C: 文体双花 解题报告

    Problem C: 文体双花 被A穿的题,我这个屑只拿了20... 意识到这个题简单的时候考试已经快结束了,那边又各种吵,不过下午改题的情况来看,我可能码力还有点问题... 据神O所说,出这个题的时 ...

  3. 洛谷 P1070 道路游戏 解题报告

    P1070 道路游戏 题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有\(n\)个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依 ...

  4. [JZOJ 5465] [NOIP2017提高A组冲刺11.9] 道路重建 解题报告 (e-dcc+树的直径)

    题目链接: http://172.16.0.132/senior/#main/show/5465 题目: 小X所居住的X国共有n个城市,有m条无向道路将其连接.作为一个统一的国家,X 城的任意两个城市 ...

  5. 【九度OJ】题目1024:畅通工程 解题报告

    [九度OJ]题目1024:畅通工程 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅 ...

  6. 【九度OJ】题目1012:畅通工程 解题报告

    [九度OJ]题目1012:畅通工程 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1012 题目描述: 某省调查城镇交通状况 ...

  7. 【九度OJ】题目1028:继续畅通工程 解题报告

    [九度OJ]题目1028:继续畅通工程 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1028 题目描述: 省政府" ...

  8. NOIP2012普及组 (四年后的)解题报告 -SilverN

    本章施工仍未完成 现在的时间是3.17 0:28,我困得要死 本来今天(昨天?)晚上的计划是把整个四道题的题解写出来,但是到现在还没写完T4的高效算法,简直悲伤. 尝试了用floyd写T4,终于大功告 ...

  9. Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告

    Facebook Hacker Cup 2014 Qualification Round比赛Square Detector题的解题报告.单击这里打开题目链接(国内访问需要那个,你懂的). 原题如下: ...

随机推荐

  1. 20155217《网络对抗》Exp02 后门原理与实践

    20155217<网络对抗>Exp02 后门原理与实践 实验要求 使用netcat获取主机操作Shell,cron启动. 使用socat获取主机操作Shell,任务计划启动. 使用MSF ...

  2. 20155304《网络对抗》Exp4 恶意代码分析

    20155304<网络对抗>Exp4 恶意代码分析 实践内容 1.系统运行监控 1.1使用schtasks指令监控系统运行 我们在C盘根目录下建立一个netstatlog.bat的文本文件 ...

  3. [UOJ#268]. 【清华集训2016】数据交互[动态dp+可删堆维护最长链]

    题意 给出 \(n\) 个点的树,每个时刻可能出现一条路径 \(A_i\) 或者之前出现的某条路径 \(A_i\) 消失,每条路径有一个权值,求出在每个时刻过后能够找到的权值最大的路径(指所有和该路径 ...

  4. json-server+mockjs 模拟REST接口

    前言: 项目开发中,影响项目进程的常常是由于在前后端数据交互的开发流程中停滞,前端完成静态页面的开发后,后端迟迟未给到接口.而现在,我们就可以通过根据后端接口字段,建立一个REST风格的API接口,进 ...

  5. Asp.Net_后台代码访问前台html标签

    //单击按钮后批量改变li元素的内联文本值及样式 ; i <= ; i++) { HtmlGenericControl li = this.FindControl("li" ...

  6. mongodump备份小量分片集群数据

    1.使用mongodump备份小量分片集群数据 如果一个分片集群的数据集比较小,可以直接使用mongodump连接到mongos实例进行数据备份.默认情况下,mongodump到非primary的节点 ...

  7. linux之 sed 基础

    转载:https://www.cnblogs.com/chensiqiqi/p/6382080.html sed 介绍 Sed命令是操作,过滤和转换文本内容的强大工具.常用功能有增删改查(增加,删除, ...

  8. Android Studio开发实用网站收集

    重点 1.Android Studio 调试技巧-断点调试 http://blog.csdn.net/qq_32452623/article/details/53769708 2.android st ...

  9. web前端开发分享-css,js入门篇

    学习没有捷径,但学习是有技巧与方法.   一,css入门篇:   推荐书籍:css哪些事儿,精通css. 理由:css那些事儿,他是一本介绍css基础类的书,是入门的经典读物. 系统的介绍了css的选 ...

  10. 基于tensorflow 1.x 的检索机器人chatbot-retrieval

    Chatbot-retrieval说基于tensorflow的检索机器人,原版的代码路径是 https://github.com/dennybritz/chatbot-retrieval, 但是在te ...