当前位置: 首页 > news >正文

深圳专业网站制作费用/义乌最好的电商培训学校

深圳专业网站制作费用,义乌最好的电商培训学校,微信公众号制作培训,网站建设类有哪些职位目录 题面题目链接题目描述输入输出格式输入格式输出格式输入输出样例输入样例输出样例说明思路AC代码总结题面 题目链接 P1119 灾后重建 题目描述 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响。但是在村庄重建好之前…

目录

  • 题面
    • 题目链接
    • 题目描述
    • 输入输出格式
      • 输入格式
      • 输出格式
    • 输入输出样例
      • 输入样例
      • 输出样例
  • 说明
  • 思路
  • AC代码
  • 总结

题面

题目链接

P1119 灾后重建

题目描述

B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响。但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车。换句话说,只有连接着两个重建完成的村庄的公路才能通车,只能到达重建完成的村庄。

给出B地区的村庄数 $ N $ ,村庄编号从 $ 0 $ 到 $ N−1 $ ,和所有 $ M $ 条公路的长度,公路是双向的。并给出第 $ i $ 个村庄重建完成的时间 $ t_i $ ,你可以认为是同时开始重建并在第 $ t_i $ 天重建完成,并且在当天即可通车。若 $ t_i $ 为 $ 0 $ 则说明地震未对此地区造成损坏,一开始就可以通车。之后有 $ Q $ 个询问 $ (x,y,t) $ ,对于每个询问你要回答在第 $ t $ 天,从村庄 $ x $ 到村庄 $ y $ 的最短路径长度为多少。如果无法找到从 $ x $ 村庄到 $ y $ 村庄的路径,经过若干个已重建完成的村庄,或者村庄 $ x $ 或村庄 $ y $ 在第t天仍未重建完成 ,则需要返回 $ -1 $ 。

输入输出格式

输入格式

第一行包含两个正整数 $ N,M $ ,表示了村庄的数目与公路的数量。

第二行包含 N 个非负整数 $ t_0, t_1,…, t_{N-1} $ ,表示了每个村庄重建完成的时间,数据保证了 $ t_0 \leq t_1 \leq ... \leq t_{N-1} $

接下来 $ M $ 行,每行 $ 3 $ 个非负整数 $ i,j,w $ , $ w $ 为不超过 $ 10000 $ 的正整数,表示了有一条连接村庄 $ i $ 与村庄 $ j $ 的道路,长度为 $ w $ ,保证 $ i≠j $,且对于任意一对村庄只会存在一条道路。

接下来一行也就是 $ M+3 $ 行包含一个正整数 $ Q $ ,表示 $ Q $ 个询问。

接下来 $ Q $ 行,每行 $ 3 $ 个非负整数 $ x,y,t $ ,询问在第 $ t $ 天,从村庄 $ x $ 到村庄 $ y $ 的最短路径长度为多少,数据保证了 $ t $ 是不下降的。

输出格式

共 $ Q $ 行,对每一个询问 $ (x,y,t) $ 输出对应的答案,即在第 $ t $ 天,从村庄 $ x $ 到村庄 $ y $ 的最短路径长度为多少。如果在第 $ t $ 天无法找到从 $ x $ 村庄到 $ y $ 村庄的路径,经过若干个已重建完成的村庄,或者村庄 $ x $ 或村庄 $ y $ 在第 $ t $ 天仍未修复完成,则输出 $ -1 $ 。

输入输出样例

输入样例

4 5
1 2 3 4
0 2 1
2 3 1
3 1 2
2 1 4
0 3 5
4
2 0 2
0 1 2
0 1 3
0 1 4

输出样例

-1
-1
5
4

说明

【数据范围】

对于30%的数据,有 $ N \leq 50 $;

对于30%的数据,有 $ t_i=0 $ ,其中有 20% 的数据有 $ t_i=0 $ 且 $ N>50 $ ;

对于50%的数据,有 $ Q \leq 100 $ ;

对于100%的数据,有 $ N≤200 $ ,$ M \leq N \times (N-1) / 2 $ , $ Q \leq 50000 $ ,所有输入数据涉及整数均不超过 100000 。

【时空限制】

1000ms,128M

思路

首先看到要多次询问两点间的最短路,可以考虑用Floyd算法。可是两点间的距离是随着时间而变化的,怎么办呢?

显然我们可以这样做:当每次询问时,我们将此时已经修建好的村庄之间跑一遍Floyd,其他村庄不管。但是这样做肯定会TLE。

想想怎么优化。注意到询问时 $ t_i $ 是递增的,村庄修建好的顺序也是递增的,那么我们可以记录一个当前修建好的村庄的最大编号。每次询问时,看是否有新的村庄修好了,如果有,那么把他加进来作为中转点跑一次最短路

AC代码

#include<bits/stdc++.h>
const int maxn=210;
using namespace std;int n,m,T[maxn];
int Q,np;
int dis[maxn][maxn];int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",&T[i]);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) if(i!=j)dis[i][j]=INT_MAX/2;for(int i=1;i<=m;i++){int u,v,w;scanf("%d%d%d",&u,&v,&w);u++;v++;dis[u][v]=min(dis[u][v],w);dis[v][u]=min(dis[v][u],w);}scanf("%d",&Q);np=1;for(int i=1;i<=Q;i++){int u,v,t;scanf("%d%d%d",&u,&v,&t);u++,v++;for(np;T[np]<=t && np<=n;np++){for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)dis[i][j]=min(dis[i][j],dis[i][np]+dis[np][j]);}if(T[u]<=t && T[v]<=t && dis[u][v]!=INT_MAX/2) printf("%d\n",dis[u][v]);else printf("-1\n");}return 0;
}

总结

优化的这一步可以说题目也提示了很多。如果题中没有给递增条件,也许我就不会做了。

转载于:https://www.cnblogs.com/Mercury04/p/9754678.html

http://www.lbrq.cn/news/1344061.html

相关文章:

  • dedecms 做影网站/网站收录情况
  • c asp.net 发布网站/app广告联盟平台
  • 商贸有限公司企业简介/安卓优化大师老版本
  • 网站建设app开发合同/外贸接单平台网站
  • 部门网站建设管理典型经验材料/杭州网站推广与优化
  • 昆山广告设计制作公司/河北百度seo
  • 珠海在线网站制作公司/品牌策划是做什么的
  • 天津和平做网站贵吗/海外营销方案
  • 做女装网站应怎么定位/网页制作流程
  • 图片展示网站/如何做企业网页
  • 南宁手机网站建设/制作app平台需要多少钱
  • 怎么做网站添加二维码/建立一个网站需要多少钱?
  • 网站专业代做哪家好/seo sem优化
  • 另类投资公司网站建设规定/营销推广方案
  • 跨平台app开发工具/广州seo教程
  • 如何做网站的订阅/网络营销有哪些就业岗位
  • 用discuz怎样做网站/seo行业岗位有哪些
  • 第一接单网平台/搜索关键词优化排名
  • 网站建设公司兴田德润实惠/西安百度seo代理
  • 移动网站趋势/html做一个简单的网页
  • 大连疫情最新情况今日新增轨迹/东莞市网络seo推广服务机构
  • 一蓝网站建设/平原县网站seo优化排名
  • 机关网站建设方案/员工培训
  • php动态网站开发案例教程实训答案/深圳推广公司有哪些
  • 地产网站开发/网络赚钱推广
  • 网站如何做进一步优化/自助建站系统模板
  • 网站先做前台还是后台/万网官网登录
  • 制作网站品牌公司哪家好/中国十大搜索引擎网站
  • 池州网站建设电话/深圳网络推广最新招聘
  • 网站建设品/网站seo重庆
  • 攻击实验(ARP欺骗、MAC洪范、TCP SYN Flood攻击、DHCP欺骗、DHCP饿死)
  • Linux 路由子系统深度分析:框架、实现与代码路径
  • windows上LM-Studio下载安装教程
  • Mybatis进阶
  • 初学python的我开始Leetcode题15-2
  • sqli-labs通关笔记-第40关 GET字符型堆叠注入(单引号括号闭合 手工注入+脚本注入两种方法)