题目链接 https://nanti.jisuanke.com/t/28406

大意是 有n(<=200)个城市,城市间有路(Input给了邻接矩阵)  每个城市有一个危险值,然后是q(2e4)个询问,每个询问给了 u,v ,w ,对于每个询问回答u到v的最短路长度(最短路过程中不得经过危险值超过w的城市,ps不含首尾)

开始看见邻接矩阵的形式猜了用Floyd写,想的是每次询问跑一次最短路(循环k时避过危险值超过w的点),但q有2e4,会TLE;后来又想每次询问跑一遍Dijkstra(改造后的不经过危险值超出的点),以为Dijkstra能快一点,但还是TLE了。

正确的做法还是Floyd,按危险值从小到大排序城市编号(间接排序),然后用的dp[][][]记录最短路。

dp[k][i][j]表示 添加(第1~k小的危险值的城市后)的 i->j 最短路。(其实就是Floyd三维未降维的版本)

然后针对每个询问找到它的最大k 的最短路图。

 #include<bits/stdc++.h>
#define EPS 1e-9
using namespace std; typedef long long ll;
const int INF=0x3f3f3f3f;
const int MAXN=; int rob[];
int dp[][][];
int id[]; bool cmp(int i,int j){
return rob[i]<rob[j];
} int main(){
int Tests;
scanf("%d",&Tests);
for(int cntT=;cntT<=Tests;++cntT){
memset(dp,INF,sizeof(dp));
int N,Q;
scanf("%d%d",&N,&Q);
for(int i=;i<=N;++i){
id[i]=i;
scanf("%d",&rob[i]);
}
sort(id+,id+N+,cmp); for(int i=;i<=N;++i)
for(int j=;j<=N;++j)
scanf("%d",&dp[][i][j]);
for(int k=;k<=N;++k){
int rk=id[k];
for(int i=;i<=N;++i)
for(int j=;j<=N;++j) {
dp[k][i][j]=min(dp[k-][i][j],dp[k-][i][rk]+dp[k-][rk][j]);
}
}
printf("Case #%d:\n",cntT);
for(int q=;q<=Q;++q){
int u,v,dan;
scanf("%d%d%d",&u,&v,&dan);
int k=;
for(int i=;i<=N;++i)
if(rob[id[i]]<=dan) k=i;
printf("%d\n",dp[k][u][v]);
}
}
return ;
}

主要是熟悉Floyd原型。

2018 宁夏省赛 F. Moving On的更多相关文章

  1. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it

    链接:https://www.nowcoder.com/acm/contest/163/F 来源:牛客网 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it 时间限制:C ...

  2. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it (扫描线)

    2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it (扫描线) 链接:https://ac.nowcoder.com/acm/contest/163/F来源:牛客网 时间 ...

  3. 2018宁夏邀请赛网赛 I. Reversion Count(java练习题)

    题目链接 :https://nanti.jisuanke.com/t/26217 Description: There is a positive integer X, X's reversion c ...

  4. 2018 CCPC网络赛

    2018 CCPC网络赛 Buy and Resell 题目描述:有一种物品,在\(n\)个地点的价格为\(a_i\),现在一次经过这\(n\)个地点,在每个地点可以买一个这样的物品,也可以卖出一个物 ...

  5. 2013年山东省赛F题 Mountain Subsequences

    2013年山东省赛F题 Mountain Subsequences先说n^2做法,从第1个,(假设当前是第i个)到第i-1个位置上哪些比第i位的小,那也就意味着a[i]可以接在它后面,f1[i]表示从 ...

  6. ACM-ICPC 2019南昌网络赛F题 Megumi With String

    ACM-ICPC 南昌网络赛F题 Megumi With String 题目描述 给一个长度为\(l\)的字符串\(S\),和关于\(x\)的\(k\)次多项式\(G[x]\).当一个字符串\(str ...

  7. 2018宁夏邀请赛 L Continuous Intervals(单调栈+线段树)

    2018宁夏邀请赛 L Continuous Intervals(单调栈+线段树) 传送门:https://nanti.jisuanke.com/t/41296 题意: 给一个数列A 问在数列A中有多 ...

  8. ICPC 2018 亚洲横滨赛 C Emergency Evacuation(暴力,贪心)

    ICPC 2018 亚洲横滨赛 C Emergency Evacuation 题目大意 你一个车厢和一些人,这些人都坐在座位上,求这些人全部出去的时间最小值 Solution 题目咋说就咋做 直接模拟 ...

  9. F. Moving Points 解析(思維、離散化、BIT、前綴和)

    Codeforce 1311 F. Moving Points 解析(思維.離散化.BIT.前綴和) 今天我們來看看CF1311F 題目連結 題目 略,請直接看原題. 前言 最近寫1900的題目更容易 ...

随机推荐

  1. Centos6.8 搭建Nginx服务器

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,其特点是占有内存少,并发能力强,业界内的评价一直很不错,反正用过的都说好,虽然我还 ...

  2. 前后端如何保持长连接?---websocket

    1. pc端的应用,一般会采用前端定时请求后台; 2. app定时去访问后台的话,对用户来说并不友好,会消耗大量的流量,移动端最好的方式就是后台主动向app推送信息; 3. H5提供了一种比较好的方式 ...

  3. String 与 StringBuffer的差别

    原文:http://blog.csdn.net/yirentianran/article/details/2871417 在Java中有3个类来负责字符的操作. 1.Character 是进行单个字符 ...

  4. Django学习笔记之URL与视图

    视图 视图一般都写在app的views.py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了这个http请求的所有信息,其中包括携带的参数以及一些头部信 ...

  5. 如果debug调试的时候中断总是停在析构函数的delete[] p上

    如果debug调试的时候中断总是停在析构函数的delete[] p上,那可能 有两种情况: 1.调用析构函数的这个对象没有被分配空间,先找到调用调用析构函数出错的这个对象, 然后查看它是否被分配了空间 ...

  6. 文件-- 字节相互转换(word、图片、pdf...)

    方式一: /// <summary> /// word文件转换二进制数据(用于保存数据库) /// </summary> /// <param name="wo ...

  7. 【python】脚本连续发送QQ邮件

    今天习得用python写一个连续发送QQ邮件的脚本,经过测试,成功给国内外的服务器发送邮件,包括QQ邮箱.163邮箱.google邮箱,香港科技大学的邮箱和爱丁堡大学的邮箱.一下逐步解答相关技巧. 首 ...

  8. java File处理

    /**************************************************************************************工具类********** ...

  9. Hadoop 权限管理

    Hadoop的权限管理同Linux的很像,有用户,用户组之分,同时Hadoop提供了权限管理命令,主要包括: chmod [-R] mode file … 只有文件的所有者或者超级用户才有权限改变文件 ...

  10. dns缓存刷新时间是多久?dns本地缓存时间介绍

    原文: http://www.winwin7.com/JC/4742.html dns缓存刷新时间是多久?一般来说,我们只知道DNS解析是互联网绝大多数应用的实际寻址方式,在我们打开某站点,DNS返回 ...