Moving On Gym - 102222F

题意:

有 n 个城市,q 次询问.

给出每个城市的危险度 r 和 城市的邻接矩阵.

每次询问给出 u、v、w,求从 u 到 v 且不经过其他危险度超过 w 的城市的最短路.

题解:

floyd 变形
我队友一开始想的是每次加点然后跑dij,但是肯定会超时
我想的是给出起点和终点,选出满足条件的城市,然后用这些城市去更新最短路径
在本题中就是利用floyd来做,一半来说第三层循环是枚举中间变量k,我们将其提到最外面,对于每一次询问,都有一个危险值上限w,我们根据这个w,筛选出危险值小于w的所有点(即城市),然后依次跑更新操作,等全部跑完,此时询问的两个城市之间的路径长度即为最短路且所有城市危险值不会超过w
方法二:
我还看到一个做法,
dp[k][i][j]表示最大权值为所有权值k大的i到j的最短路距离
对城市的危险值排序,依次加点更新不同层次的最短路
最后读入直接输出
我感觉两个方法本质应该差不多

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=300;
const int maxm=2e4+9;
int dis[maxn][maxn];
struct node{int u,v,w;int id;
}qq[maxm];
struct nod
{int id,r;
}a[maxn];
int ans[maxm];
bool cmp(node a,node b)
{return a.w<b.w;
}
bool cmp1(nod a,nod b)
{return a.r<b.r;
}
int main()
{int t;cin>>t;for(int tt=1;tt<=t;tt++){//memset(dis,0x3f,sizeof dis);//memset(ans,0,sizeof ans);int n,q;scanf("%d%d",&n,&q);//cin>>n>>q;for(int i=1;i<=n;i++){scanf("%d",&a[i].r);//cin>>a[i].r;a[i].id=i;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&dis[i][j]);//cin>>dis[i][j];}}for(int i=1;i<=q;i++){int u,v,w;scanf("%d%d%d",&qq[i].u,&qq[i].v,&qq[i].w);//cin>>qq[i].u>>qq[i].v>>qq[i].w;qq[i].id=i;}sort(qq+1,qq+1+q,cmp);sort(a+1,a+1+n,cmp1);int cur=1;for(int xx=1;xx<=q;xx++)//q*n*n*?n{while(a[cur].r<=qq[xx].w&&cur<=n){int k=a[cur].id;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);}}cur++;}ans[qq[xx].id]=dis[qq[xx].u][qq[xx].v];}
//      for(int i=1;i<=n;i++)
//      {//
//          for(int j=i;j<=n;j++)
//          {//              if(i==j)
//              {//                  dis[i][j]=0;
//                  dis[j][i]=0;
//              }
//              for(int k=1;k<=n;k++){//                  //if()
//                  dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);
//              }
//          }
//      }   printf("Case #%d:\n",tt);for(int i=1;i<=q;i++){cout<<ans[i]<<endl;}}return 0;}

第二个方法:

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
int dp[310][310][310];
int has[310];int dan[310];int num[310];bool cmp(int a,int b){return dan[a]<dan[b];
}int main(){int t;int cur=1;scanf("%d",&t);while(t--){int n,m;scanf("%d%d",&n,&m);memset(dp,0x3f3f3f3f,sizeof(dp));int cnt=1;for(int i=1;i<=n;i++){scanf("%d",&dan[i]);num[i]=i;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&dp[i][j][0]);sort(num+1,num+1+n,cmp);for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){dp[i][j][k]=min(dp[i][j][k-1],dp[i][num[k]][k-1]+dp[num[k]][j][k-1]);}}}printf("Case #%d:\n",cur++);while(m--){int st,ed,w;scanf("%d%d%d",&st,&ed,&w);int ans=0;for(int i=1;i<=n;i++){if(dan[num[i]]<=w) ans=i;}printf("%d\n",dp[st][ed][ans]);}}
} 

Moving On Gym - 102222F相关推荐

  1. 【2018icpc宁夏邀请赛现场赛】【Gym - 102222F】Moving On(Floyd变形,思维,离线处理)

    https://nanti.jisuanke.com/t/41290 题干: Firdaws and Fatinah are living in a country with nn cities, n ...

  2. Codeforces Gym 100269G Garage 数学

    Garage 题目连接: http://codeforces.com/gym/100269/attachments Description Wow! What a lucky day! Your co ...

  3. DRL实战:DDPG A3C | Gym环境中经典控制问题Pendulum-v0

    文章目录 (一)"Pendulum-v0" Observation & State Action Reward (二)A3C & DDPG A3C Test 1 T ...

  4. 强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例

    强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例 1. 引言 在这个部分补充之前马尔科夫决策和动态规划部分的代码.在以后的内容我会把相关代码都附到相关内容的后面.本部 ...

  5. Gym - 102082G

    Gym - 102082G https://vjudge.net/problem/2198225/origin 对于数列中任意一个数,要么从最左边到它不递减,要么从最右边到到它不递减,为了满足这个条件 ...

  6. 安装gym库_强化学习Gym库学习实践(一)

    最近看了一篇研究方向相关的文章,介绍了一种DQN的应用,感觉还挺新鲜的.想着把这篇文章复现出来,就开始学习强化学习的相关知识,作为一名小白,这一路走的可是真的十分艰难(我太菜了啊!) 看了莫烦Pyth ...

  7. 强化学习环境库 Gym 发布首个社区发布版,全面兼容 Python 3.9

    作者:肖智清 来源:AI科技大本营 强化学习环境库Gym于2021年8月中旬迎来了首个社区志愿者维护的发布版Gym 0.19.该版本全面兼容Python 3.9,增加了多个新特性. 强化学习环境库的事 ...

  8. Gym迎来首个完整环境文档,强化学习入门更加简单!

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 编辑:OpenDeepRL OpenAI Gym是 ...

  9. Codeforces Gym 100513G G. FacePalm Accounting 暴力

    G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...

最新文章

  1. 不打擦边球、不搞黑线路能不能挣钱, 开始我是忐忑的
  2. 1.确保容器中的对象拷贝正确而高效
  3. 今天才发现自己美工其实很厉害!
  4. python安装后使用_Python安装后如何使用?
  5. 在VC6.0中使用GDI+的两种办法
  6. ESP8266教程4 — ESP8266 智能配网
  7. 计算机考研统考压分吗,担忧!考研初试会被压分吗?
  8. 第22节项目6-定期存款利息计算器
  9. 管理菜单 结贴回复 来自 202.112.36.253 的回复: TTL 传输中过期
  10. 华硕主板怎么进入bios
  11. 51NOD - 1677treecnt
  12. 【Eclipse】--Eclipse简介和安装
  13. 阿里云培训-AS(弹性伸缩)
  14. Android 添加Flutter 项目依赖
  15. 基于Java毕业设计畜牧场信息管理系统源码+系统+mysql+lw文档+部署软件
  16. IT技术开发人员获得成功的六大步骤
  17. 卓有成效的管理者笔记
  18. 配置成功的GPO在什么时候成效?如何查看GPO是否生效?
  19. 查看微信好友是否删除自己
  20. 候鸟浏览器、变色龙指纹浏览器、antidetect防关联浏览器、ghostbrowser横评

热门文章

  1. 走访近20家代工厂后:近千块的大牌T恤,成本只要几十块
  2. 假如,绿茶婊的目标变成女生......
  3. 做题不如巧做题,初中数学题型解题技巧都在这!
  4. 数学不好、英语不好、非本专业,想学python数据分析,能安排吗?
  5. linux docker导入镜像,Docker镜像的导入和导出
  6. 表3.5 文章管理测试用例表_本地管理表空间管理机制
  7. 服务器运行慢都有哪些问题,服务器数据库的运行速度很慢问题
  8. MYSQL数据库表大小计算,计算mysql数据库数据表的大小,不精确,只是大略的数据...
  9. 谁今天收到鸿蒙系统推送,鸿蒙系统正式推送,只有部分高端机才能收到
  10. python中的成员运算符是干嘛的_在Python中使用成员运算符的示例