F. It’s a bird! No, it’s a plane! No, it’s AaParsa!

题意:

有n个城市,每个城市都有一个传送大炮指向另一个城市,每个大炮都有发送时间,每过1s,大炮就会从原本指向b,指向(b+1)%n,问任意两点之间的最短时间

题解:

如果没有大炮移动的话就是跑最短路,现在有了移动怎么处理?每次移动会从b%n->(b+1)%n,所以我求出到达b需要时间t,那么b+1就需要t+1,我每次都用这个来更新到达b+1的时间。也就是在计算b时可以同时更新b+1的答案
详细这样做的原因可以看这个
题目给出边的最大值是 M<N2,优先队列优化的dij时NMlogN = N3logN,还不如跑普通版本的dij,复杂度为N3

代码:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int MaxN = 605;
const int infty = (1<<30)-1;int dis[MaxN], n;
vector< pair<int,int> > G[MaxN];
bool vis[MaxN];
void dijkstra(int S){fill(dis,dis+n,infty);memset(vis,0,n);for(auto y : G[S])dis[y.first]=y.second; //先初始化 for(int i=1; i<=n; ++i){int id=-1; for(int j=0;j<=n-1;j++) if(!vis[j])//该点还没更新 if(id==-1 || dis[id] > dis[j])// 找到最小点j id = j; // min disif(dis[id] == infty) break;//点id无法走到 vis[id] = true; //相比于dijkstra多了这一步,每次用id来更新下一步id+1的时间 dis[(id+1)%n]=min(dis[(id+1)%n],dis[id]+1);for(auto y : G[id]){int to = (y.first+dis[id])%n;dis[to]=min(dis[to],dis[id]+y.second);}}dis[S] = 0; // 到自身时间为0
}int main(){int m;cin>>n>>m;for(int i=1,a,b,c; i<=m; ++i){cin>>a>>b>>c;G[a].push_back(make_pair(b,c));}for(int i=0; i<n; ++i){dijkstra(i);for(int j=0;j<=n-1;j++)printf("%d ",dis[j]);printf("\n");}return 0;
}

F. It‘s a bird! No, it‘s a plane! No, it‘s AaParsa!相关推荐

  1. CodeForces - 1529F It‘s a bird! No, it‘s a plane! No, it‘s AaParsa!(最短路+思维建图)

    题目链接:点击查看 题目大意:给出 nnn 个点(从 000 开始编号)和 mmm 条边的有向带权图,不过 mmm 条边是动态的,经过 ttt 秒后,第 iii 条边就从 ai−>bi,cia_ ...

  2. Codeforces Round #722 (Div. 2)

    Codeforces Round #722 (Div. 2) 题号 题目 知识点 A Eshag Loves Big Arrays(题解略) 贪心 B Sifid and Strange Subseq ...

  3. [CF/AT]各大网站网赛 体验部部长第一季度工作报告

    文章目录 CodeForces #712 (Div. 1)--1503 A. Balance the Bits B. 3-Coloring C. Travelling Salesman Problem ...

  4. mysql 基本使用教程(源于网络)

    3.1. 连接与断开服务器3.2. 输入查询3.3. 创建并使用数据库 3.3.1. 创建并选择数据库3.3.2. 创建表3.3.3. 将数据装入表中3.3.4. 从表检索信息 3.4. 获得数据库和 ...

  5. mysql查阅建立的库_MySQL - 建库、建表、查询

    本章通过演示如何使用mysql客户程序创造和使用一个简单的数据库,提供一个MySQL的入门教程.mysql(有时称为"终端监视器"或只是"监视")是一个交互式程 ...

  6. kotlin学习笔记——接口与委托

    kotlin中的接口比java7中的要强大很多,与java8的很相似. java7中的接口只能定义行为,不能实现. kotlin中的接口也可以实现函数,但是与类的区别是它们是无状态(stateless ...

  7. 【图像分类】Deep Layer Aggregation论文理解

    摘要   视觉识别:   视觉识别需要丰富的表征--跨度从低到高.尺度从小到大.分辨率从细粒度到粗粒度.即便在卷积网络中有深层的特征,但单独一层的特征是不够的:组合和聚合这些特征(表征)可以改进对&q ...

  8. mysql导入本地文件_Mysql透过txt文件导入本地数据_mysql

    有些时候可能需要从本地文件中导入数据到数据库中.mysql跟oracle一样也提供了相应的导入方式. 这几天刚好遇到过这样的需求,翻阅了一下文档找到相应的方法,记录一下: 数据库结构: mysql&g ...

  9. 花老湿学习OpenCV:直方图、直方图的计算、均衡化、对比、反向投影

    直方图概述: 在统计学中,直方图是一种对数据分布情况的图形表示,是一种二维统计图表,他的两个坐标分别是统计样本(图像.视频帧)和样本的某种属性(亮度,像素值,梯度,方向,色彩等等任何特征). 也可以这 ...

最新文章

  1. unix to linux,UNIX to Linux 的关键问题都有哪些?
  2. 2015大型互联网公司校招都开始了,薪资你准备好了嘛?
  3. 程序员从初级到中级10个秘诀 【转载】
  4. Master3 罗技 版本号的问题
  5. 进程、线程和上下文切换
  6. JavaFX之TableView
  7. Linux 蓝牙读写,实战Linux Bluetooth编程(三) HCI层编程
  8. 软件设计师24-算法
  9. Java进阶:SpringMVC中获取Restful风格的参数(从请求路径中获取参数 )
  10. Python利用google翻译,翻译字幕文件!我想翻译日语!
  11. android自动点击开红包,自动点击连点器
  12. QT自定义控件-经纬度输入框
  13. Apeaksoft iOS Toolkit for Mac(iOS设备数据恢复软件)
  14. Java简单端口扫描器
  15. 拼多多按关键字搜索商品 API
  16. 【计算机毕业设计】328学生就业管理系统设计与实现
  17. Linux 关机和重启
  18. 蓝牙5.2协议、主从一体、低功耗、工业级蓝牙模组BLE105新品上市
  19. Oracle的基本练习:登陆、查看连接、管理登陆用户、修改进程数
  20. 15年前,一则公路旁的Google的招聘广告

热门文章

  1. 这场戏里,到底是谁脏了?
  2. 这个国家太奇怪了!全球最落后的国家之一,却又是世界上最幸福的国家!
  3. 中国代工厂的困惑:把大牌t恤卖到99块3件,还会有人买吗?
  4. 那些年,冒死拍过的老师逗逼搞笑照片 !
  5. 每日一笑 | 为什么椅子总是最乱的?
  6. mysql dw解决方案_MySQL 的 DW 解决方案(MySQL + Infobright)
  7. requestmapping注解访问404_【框架】127:几个非常重要的注解
  8. 用java求直角三角形的面积_JAVA 已知三角形的三个边判断 是否为直角三角形,如果是求面积!...
  9. 2020计算机单招的大专,2020专科和单招的区别
  10. 算法题目——爬楼梯(动态规划)