大楼(bzoj 2165)

Description

xz是一个旅游爱好者,这次他来到了一座新的城市。城市中央有一幢高耸入云的大楼。这幢楼到底有多少层呢?据说和非负整数的个数是一样多的。xz想爬上这座大楼来观赏新城市的全景。这幢大楼的楼层从下至上用从小到大的非负整数编号。每层楼有n个房间,用1到n的正整数编号。楼层之间用电梯连接,电梯只能上行,不能下行或者同层移动。(下楼一般自行解决)电梯用(u,v,w)的形式给出,表示对于任意正整数i,有第i层的房间u到第i+w层的房间v有一部电梯。电梯只能从起点开往终点,不能中途停留。 xz想要观赏城市全景,至少需要登上第m层楼,即最终需要到达的楼层数≥m。由于乘坐电梯要缴纳高额的费用,而如果花销太大回家就没法报账了,xz希望乘坐电梯的次数最少。现在xz在第0层的1号房间,你需要求出这个最少的乘坐次数。

Input

第一行包含一个正整数T,表示数据的组数。接下来的数据分为T个部分。每个部分第一行包含两个正整数n和m,意义见题目描述。接下来n行,每行包含n个非负整数。这n行中,第i行第j个数为Wi,j,如果wi,j非零,则表示有电梯(i,j,Wi,j)。同一行各个数之间均用一个空格隔开。

Output

对于每组数据,输出一行一个正整数,最少的乘坐次数。

Sample Input

2
6 147
0 1 0 50 0 0
0 0 1 0 0 0
20 0 0 0 0 0
0 0 0 0 1 50
0 0 0 8 0 0
0 0 0 0 0 3
6 152
0 1 0 50 0 0
0 0 1 0 0 0
20 0 0 0 0 0
0 0 0 0 1 50
0 0 0 8 0 0
0 0 0 0 0 3

Sample Output

9
10
【样例说明】
第一组数据中,使用电梯的顺序为1→2→3→1→2→3→1→4→6→6;第二组数据中,使用电梯的顺序为1→2→3→1→2→3→1→4→5→4→6。第二组数据最后到达了153层,但是没有更短的路径使得恰好到达152层,因此答案为10。

HINT

有如下几类具有特点的数据: 1、有10%的数据所有的n=2; 2、有20%的数据m≤3000; 3、有20%的数据对于满足1≤i,j≤n的整数i和j,若wi,j≠0,则有wi,j≥1015; 4、有30%的数据所有的n=40。以上各类数据均不包含其他类数据。对于所有数据T=5,1≤n≤100,1≤m≤1018;对于满足1≤i,j≤n的整数i和j,有0≤wi,j≤1018。数据保证能够到达m层或更高的楼层。

/*f[p][i][j]表示用了p次电梯,从i房间到j房间的最高楼层。f[p][i][j]=max(f[p/2][i][k],f[p/2][k][j])然后用矩阵乘法算f[2],f[4],f[8]... 直到某个f第一行出现大于m的数。然后用二进制拆分求出答案。 
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define N 110
#define lon long long
#define inf 1000000000000000000LL
using namespace std;
int n,cnt;
lon m;
lon read(){lon num=0,flag=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')flag=-1;c=getchar();}while(c>='0'&&c<='9'){num=num*10+c-'0';c=getchar();}return num*flag;
}
struct M{lon v[N][N];M(){memset(v,0,sizeof(v));}
}f[N];
M operator*(M a,M b){M c;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){c.v[i][j]=-inf;for(int k=1;k<=n;k++)c.v[i][j]=max(a.v[i][k]+b.v[k][j],c.v[i][j]);if(c.v[i][j]>m) c.v[i][j]=m;}return c;
}
bool check(M x){for(int i=1;i<=n;i++)if(x.v[1][i]>=m) return true;return false;
}
int main(){int T;scanf("%d",&T);while(T--){n=read();m=read();for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){f[1].v[i][j]=read();if(!f[1].v[i][j]) f[1].v[i][j]=-inf;}for(cnt=1;;cnt++){f[cnt+1]=f[cnt]*f[cnt];if(check(f[cnt+1])) break;}M t=f[1];lon ans=1;for(int i=cnt;i;i--){M x=t*f[i];if(!check(x)){for(int j=1;j<=n;j++)for(int k=1;k<=n;k++)t.v[j][k]=x.v[j][k];ans+=1LL<<(i-1);}}cout<<ans+1<<endl;}return 0;
}

 

转载于:https://www.cnblogs.com/harden/p/6643500.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可解释性 or 准确性?AI 模型就一定不能两者兼得吗?

来源&#xff1a; AI科技评论编译&#xff1a; 张大倩编辑&#xff1a;丛末模型的可解释性&#xff0c;已然成为了AI 领域最具挑战性的主题之一。一般规律中&#xff0c;模型的复杂度和准确性往往是正相关的关系&#xff0c;而越高的复杂度也意味着模型越可能无法实现可解释性。…

仓库温度湿度控制措施_药品仓库如何保持温湿度均衡?

各种药物器械本身的性质不同&#xff0c;储存的方式也就有所不同。一般常规的药品储存在温度10度-30度的仓库中最适宜&#xff0c;避免高温使药品因为受热&#xff0c;或低温潮湿&#xff0c;使受潮湿而发霉变质变形。药片更容易受潮&#xff0c;一般储存的仓库温湿度要在45%-7…

mysql双机热备实现

说明 机器A&#xff1a;&#xff08;172.16.1.251&#xff09;&#xff0c;机器B&#xff1a;&#xff08;172.16.1.252&#xff09; 两台机器都创建数据库web&#xff1a;create database hello default charset utf8; 实现步骤 双向热备份&#xff1a;首先设置A上数据库为mas…

在疫情防控一线,技术能发挥什么作用?

来源&#xff1a;雷锋网新型冠状病毒感染的肺炎疫情在继续扩散。 截至 2020 年 1 月 26 日 24 时&#xff0c;国家卫生健康委收到 30 个省&#xff08;区、市&#xff09;累计报告确诊病例 2744 例&#xff0c;现有重症病例 461 例&#xff0c;累计死亡病例 80 例&#xff0c;累…

爱荷华大学计算机科学专业,爱荷华大学计算机科学专业好不好?专业设置详情一览...

自从计算机诞生以后&#xff0c;关于和计算机相关的行业发展的是越来越快&#xff0c;其中计算机科学专业就是其中一个&#xff0c;计算机专业的飞速发展对于人类的生活起到了重大的帮助&#xff0c;生活也发生了翻天覆地的变化&#xff0c;而美国是计算机的发源地&#xff0c;…

cpu工作原理flash动画_秒懂桥式整流工作原理(动画)

限时领取 | 20套电力系统及电气设备PPT资料(点蓝字&#xff0c;免费领资料↑↑)本文分享几张桥式整流电路工作原理的动画图。变压器u2正半周时电流通路变压器u2负半周时电流通路整个周期电流通路是这样的桥式整流电路输出波形与全波整流电路的一样&#xff0c;也是全波波形&…

python 创建一个空向量_Python之Django系列-创建第一个应用-5

上一篇&#xff1a;Python之Django系列-创建第一个应用-4这一章我们会讲到视图层怎么与数据库操作并返回数据到模板层进行渲染最终显示在页面上投票应用基本上会有这么几个视图问题列表页问题详情页问题结果页投票处理器在Django中&#xff0c;网页和其他内容都是通过视图派生而…

js 图片库 改进版

平稳退化 js与html标记分离&#xff1f; 如果有两个函数&#xff1a;firstFunction和secondFunction&#xff0c;如果想让它们俩都在页面加载时得到执行&#xff0c;可以调用函数addLoadEvent&#xff0c;只有一个参数&#xff0c;就是打算在页面加载完毕时执行的函数的名字。 …

新计算机无法 盘启动不了,U盘无法被电脑识别导致制作U盘启动盘失败怎么办?...

我们知道&#xff0c;装系统的方式有很多&#xff0c;从之前的光盘装系统到现在的网上直接下载资源装系统&#xff0c;装系统的方式已经变得越来越简便了&#xff0c;但是相对来说&#xff0c;不少用户还是更加喜欢选择使用U盘来装系统的方式&#xff0c;因为U盘要比光盘和硬盘…

塔勒布: 2019-nCoV的系统风险:一份笔记

来源&#xff1a;混沌巡洋舰塔勒布的思考值得更多人了解&#xff0c;下面是对该文的全文翻译和注解&#xff1a;新型冠状病毒在中国武汉出现&#xff0c;这一病毒具有致命危险&#xff0c;也具有高度传染性。中国至今的反应措施有&#xff0c;几大主要城市已经对数以千万计的人…

arm指令手册_平台/代码从上电到运行(ARM/Cortex-M)(一)

事实上&#xff0c; 网上可以搜出很多讲代码运行的相关帖子。但对于一些没入门的人来说理解起来仍有挑战性。 当然&#xff0c; 这篇日志也没必要从二极管、门电路、地球是怎样形成的之类的本源开始。 但尽量写的详细些&#xff0c; 主要目的在于把目前在这一方面认知整理成文&…

c++ amp vs2017 报错_opencv4教程-1 opencv的安装与调试Windows10+vs2017

安装解压我就不必多说了。将opencv解压到相应的文件目录下&#xff1a;在vs2017创建一个空的项目。可以设置成release或者debug模式&#xff0c;64位&#xff0c;具体随意&#xff0c;代码如下&#xff1a;#include <iostream>using namespace std;#include <opencv2/…

F-35战机头盔:揭密世界最先进的显示系统(HMDS)

F-35战斗机头盔显示系统&#xff08;HMDS&#xff09;来源&#xff1a;今日头条F-35战斗机的第三代头盔是世界上最先进的头盔显示系统(HMDS)&#xff0c;首次使用了虚拟成像技术&#xff0c;可以直接将画面投射到驾驶员的面罩之上&#xff0c;配以计算机的处理运算技术&#xf…

定义一个Matrix类,实现矩阵的加法和乘法

1 #include<iostream>2 using namespace std;3 4 class Matrix5 {6 int row;//矩阵的行7 int col;//矩阵的列8 int **a;//保存二维数组的元素9 public:10 Matrix();//默认构造函数11 Matrix(int r, int c);12 Matrix(const Matrix &is);//拷…

无法读取配置节aspnetcore_ASP.NET Core 配置和使用环境变量

(给DotNet加星标&#xff0c;提升.Net技能)转自&#xff1a;HueiFengcnblogs.com/yyfh/p/12339961.html前言通常在应用程序开发到正式上线&#xff0c;在这个过程中我们会分为多个阶段&#xff0c;通常会有 开发、测试、以及正式环境等。每个环境的参数配置我们会使用不同的参数…

计算机软件英文参考文献,软件工程英文参考文献(优秀范文105个)

当前,计算机技术与网络技术得到了较快发展,计算机软件工程进入到社会各个领域当中,使很多操作实现了自动化,得到了人们的普遍欢迎,解放了大量的人力.为了适应时代的发展,社会各个领域大力引进计算机软件工程.下面是软件工程英文参考文献105个&#xff0c;供大家参考阅读。软件工…

联想ghost重装系统_一键ghost,详细教您使用一键ghost怎么重装win7系统

讲起这个重装系统的方法跟操作&#xff0c;相信广大的用户听的最多的&#xff0c;用的最多的&#xff0c;看的最多的&#xff0c;就是U盘安装系统&#xff0c;硬盘安装系统以及渐渐退隐江湖的光盘重装系统&#xff0c;这几样了&#xff0c;那么不知道你们有没有听过&#xff0c…

面对新型肺炎疫情,AI能做什么?

来源&#xff1a; AI科技大本营根据最新的新型冠状病毒疫情通报&#xff0c;截至1月30日24时&#xff0c;国家卫生健康委公布确诊病例9692例&#xff0c;重症病例1527例&#xff0c;累计死亡病例213例&#xff0c;另有疑似病例15238例。为防止疫情扩散&#xff0c;全国31省市自…

残疾人计算机高考试题,残疾人勇夺玉溪高考榜眼:想去清华学计算机

没有脚&#xff0c;思想可以替我走很远。矣晓沅网易教育频道综合讯 据春城晚报报道&#xff0c;6年前&#xff0c;备受类风湿关节炎折磨的矣晓沅在家中写下了一篇名为《第一片落叶》的故事&#xff0c;讲述了一个中学生纷繁复杂的校园生活。彼时的他只能坐在轮椅上&#xff0c;…

directx repair_DirectX修复工具增强版

DirectX修复工具最新版&#xff1a;DirectX Repair V3.9 增强版 NEW!版本号&#xff1a;V3.9.0.29371大小: 111MB/7z格式压缩&#xff0c;196MB/zip格式压缩&#xff0c;345MB/解压后其他版本&#xff1a;标准版 在线修复版MD5校验码&#xff1a;DirectX Repair.exe/eeab9900cc…