BZOJ 2165: 大楼 倍增Floyd
时间:2019-09-20
本文章向大家介绍BZOJ 2165: 大楼 倍增Floyd,主要包括BZOJ 2165: 大楼 倍增Floyd使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Code:
#include <bits/stdc++.h> #define N 202 #define M 55 #define ll long long #define inf -1 #define setIO(s) freopen(s".in","r",stdin) // , freopen("de.out","w",stdout) using namespace std; int n; ll m; ll f[N][N],dis[N][N][70],tmp[N][N],g[N][N]; void solve() { int i,j,k; scanf("%d%lld",&n,&m); memset(dis,-1,sizeof(dis)); for(i=1;i<=n;++i) { for(k=0;k<=M;++k) dis[i][i][k]=0; } for(i=1;i<=n;++i) { for(j=1;j<=n;++j) { ll p; scanf("%lld",&p); if(p) { dis[i][j][0]=max(dis[i][j][0], p); } } } for(int l=1;;++l) { for(k=1;k<=n;++k) { for(i=1;i<=n;++i) { for(j=1;j<=n;++j) { if(dis[i][k][l-1]!=-1 && dis[k][j][l-1]!=-1) { dis[i][j][l]=max(dis[i][j][l], dis[i][k][l-1]+dis[k][j][l-1]); } } } } ll re=0; for(i=1;i<=n;++i) re=max(re, dis[1][i][l]); if(re>=m) { i=l; break; } } int flag=0; ll ans=0; memset(tmp,-1,sizeof(tmp)); for(int l=i;l>=0;--l) { if(!flag) { flag=1; for(i=1;i<=n;++i) { if(dis[1][i][l]>=m) { flag=0; } } if(flag==0) continue; else { for(i=1;i<=n;++i) for(j=1;j<=n;++j) tmp[i][j]=dis[i][j][l]; ans+=(1ll<<l); } } else { memset(g,-1,sizeof(g)); for(k=1;k<=n;++k) { for(i=1;i<=n;++i) { for(j=1;j<=n;++j) { if(dis[i][k][l]!=inf && tmp[k][j]!=inf) { g[i][j]=max(g[i][j], dis[i][k][l]+tmp[k][j]); } } } } int cc=0; for(i=1;i<=n;++i) if(g[1][i]>=m) cc=1; if(!cc) { for(i=1;i<=n;++i) for(j=1;j<=n;++j) tmp[i][j]=g[i][j]; ans+=(1ll<<l); } } } printf("%lld\n",ans+1); } int main() { // setIO("input"); int T; scanf("%d",&T); while(T--) { solve(); } return 0; }
原文地址:https://www.cnblogs.com/guangheli/p/11555924.html
- 1012: [JSOI2008]最大数maxnumber
- 1430: 小猴打架
- 1202: [HNOI2005]狡猾的商人
- 1059: [ZJOI2007]矩阵游戏
- 3039: 玉蟾宫
- 大公司都有哪些开源项目之腾讯
- Vue拖拽组件开发实例
- 一小时培训之神经网络入门
- 【LeetCode 290】 关关的刷题日记28 Word Pattern
- Redis知识点速查
- 上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?
- SpringBoot的微信点餐系统后台开发要点
- 【LeetCode 463】 关关的刷题日记29 Island Perimeter
- 搭建移动端的跨平台开发环境
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- idea中使用逆向工程----三部曲
- 《JSON笔记之二》----封装JSONUtil
- Spring源码学习笔记(11)——Event体系
- Spring源码学习笔记(12)——IoC容器启动流程
- HashMap详解
- ElementUI使用autocomplete组件输入搜索
- Hacking with iOS: SwiftUI Edition - 愿望清单项目(三)
- 浏览器在线预览offce,vue-pdf预览pdf文件
- vivo商城前端架构升级-总览篇
- 《JSON笔记之三》---postman中传入json串
- Spring源码学习笔记(13)——JDBC
- java系列之注解
- NodeJs初入Http模块和Url模块
- Spring系列之实例化、初始化处理器
- NodeJs安装supervisor实现重载