正题

题目链接:http://noip.ybtoj.com.cn/contest/108/problem/4


题目大意

nnn个点,每次只封闭一个点,求剩下点对两两之间的最短路和。


解题思路

FlodyFlodyFlody中如果枚举kkk时不管某一个点,那么就可以求不经过那个点的路径。考虑分治求解

我们每次处理到[l,r][l,r][l,r]时我们先计算出[mid+1,r][mid+1,r][mid+1,r]的贡献(也就是枚举这里的kkk),然后递归到[l,mid][l,mid][l,mid]的区间。处理完后清除[mid+1,r][mid+1,r][mid+1,r]的贡献在处理[l,mid][l,mid][l,mid]的贡献递归到[mid+1,r][mid+1,r][mid+1,r]区间。

这样当l=rl=rl=r时只有lll这个位置没有处理贡献,就可以统计答案了。

时间复杂度O(n3log⁡n)O(n^3\log n)O(n3logn)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=321;
ll n,f[N][N],ans,g[30][N][N];
void solve(ll dep,ll l,ll r){if(l==r){for(ll i=1;i<=n;i++)for(ll j=1;j<=n;j++){if(i==l||j==l)continue;if(f[i][j]<1e18)ans+=f[i][j];else ans--;}return;}ll mid=(l+r)>>1;memcpy(g[dep],f,sizeof(g[dep]));for(ll k=mid+1;k<=r;k++)for(ll i=1;i<=n;i++)for(ll j=1;j<=n;j++)f[i][j]=min(f[i][j],f[i][k]+f[k][j]);solve(dep+1,l,mid); memcpy(f,g[dep],sizeof(f));for(ll k=l;k<=mid;k++)for(ll i=1;i<=n;i++)for(ll j=1;j<=n;j++)f[i][j]=min(f[i][j],f[i][k]+f[k][j]);solve(dep+1,mid+1,r);return;
}
int main()
{freopen("sum.in","r",stdin);freopen("sum.out","w",stdout);scanf("%lld",&n);for(ll i=1;i<=n;i++){for(ll j=1;j<=n;j++){scanf("%lld",&f[i][j]);if(f[i][j]==-1)f[i][j]=1e18;}}solve(0,1,n);printf("%lld",ans);
}

YbtOJ#20078-[NOIP2020模拟赛B组Day7]路径之和【分治,Flody】相关推荐

  1. YbtOj#20073. 「NOIP2020 模拟赛 B 组 Day6」钻石守卫

    文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...

  2. YbtOJ#20237-[冲刺NOIP2020模拟赛Day10]区间均值【树状数组】

    正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/1 题目大意 nnn个数字的序列,求有多少个区间[l,r][l,r][l,r]的平均值在[L,R ...

  3. YbtOJ#20240-[冲刺NOIP2020模拟赛Day10]弱者对决【笛卡尔树,区间dp】

    正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/4 题目大意 mmm个三元组(ai,bi,ci)(a_i,b_i,c_i)(ai​,bi​,ci ...

  4. YbtOJ#20239-[冲刺NOIP2020模拟赛Day10]连边方案【状压dp】

    正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/3 题目大意 求有多少个nnn个点mmm条边的无向图满足 有连边的点之间编号差不超过kkk 所有 ...

  5. YbtOJ#20236-[冲刺NOIP2020模拟赛Day9]红点蓝点【线段树,堆】

    正题 题目链接:https://www.ybtoj.com.cn/contest/66/problem/4 题目大意 平面上nnn个红点,nnn个蓝点,对于没一个红点求一个与它纵坐标距离不超过ddd的 ...

  6. YbtOJ#20235-[冲刺NOIP2020模拟赛Day9]公共序列【dp】

    正题 题目链接:https://www.ybtoj.com.cn/contest/66/problem/3 题目大意 给出两个字符串A,BA,BA,B,求它们的最长公共子序列. 解题思路 先考虑朴素的 ...

  7. YbtOj 冲刺 NOIP2020 模拟赛 Day10 T1 区间均值

    文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...

  8. 2021.08.09【普及组】模拟赛C组比赛总结

    文章目录 2021.08.09[普及组]模拟赛C组比赛总结 写在前面: T1 :[普及模拟]生产武器 题目大意: 正解: T2 :[普及模拟]城市连接 题目大意: 正解: T3 :[普及模拟]抢救文件 ...

  9. 2021-07-17【普及组】模拟赛C组

    文章目录 2021.07.17[普及组]模拟赛C组 写在前面: T1: 题目大意: 正解: T2: 题目大意: 正解: T3: 题目大意: 正解: T4: 题目大意: 正解: 2021.07.17[普 ...

最新文章

  1. 数据链路层、交换机内容整合
  2. 使用U盘安装Windows Server2008
  3. python监控文件内容变化_Python监控文件内容变化
  4. [转载] 多线程详解java.util.concurrent
  5. php 设置返回的类型是图片,PHP检查上传的图片并返回图片的真正类型【扩展名】...
  6. 马化腾300万奖励中国女排 网友:马云老师清空购物车还安排吗?
  7. python 异步IO编程
  8. 电子沙盘技术和android,ERP沙盘与电子沙盘的区别
  9. ubuntu如何更改IP地址
  10. python三维雷达图_Matplotlib绘制雷达图和三维图的示例代码
  11. 【微信小程序】之自定义顶部导航页签
  12. 多元随机森林回归(Multivariate Random Forest Regreesor)经验总结
  13. 学习记录:jmeter添加jp@gc - Hits per Second
  14. 在windows生成SSH秘钥连接linux远程主机
  15. app营销变现系统,让你的app更值钱!
  16. 主要视频压缩技术在中国内地市场发展分析
  17. Typora旧版本下载以及提示无法使用需要更新
  18. MySql 不存在则插入,存在则更新或忽略
  19. 基于JSP的健身俱乐部会员管理系统的设计与实现(论文+PPT+源码)
  20. 细说Python的lambda函数用法,建议收藏

热门文章

  1. oracle取位置,获取oracle trace文件路径
  2. ab压力测试_Apache ab压力测试的知识点
  3. java 固定长度队列_如何彻底搞懂 Java 数据结构?|CSDN 博文精选
  4. 数据结构——图-最短路径长度中最大的一个
  5. leetcode977. 有序数组的平方(暴力+双指针)
  6. [Redis6]NoSQL数据库简介_特点
  7. [Spring5]IOC容器_Bean管理XML方式_外部属性文件
  8. [SpringBoot2]自动配置
  9. [计组]寄存器的基本含义
  10. [PAT乙级]1009 说反话