类似于bzoj1706,考虑到楼层是等价的
我们令f[p,i,j]为用了2^p次电梯,从房间i到j最多上升了多少层
然后从2^p很容易推到2^(p+1),类似于floyd的转移即可
下面我们要用最小的电梯次数
可以考虑每一个数都有其唯一的而二进制拆分
从p到0贪心得到一个最接近上了m层的次数ans,ans+1即为答案

 const inf=-;
var f:array[..,..,..] of int64;
w,v:array[..] of int64;
e,t,i,j,k,n,p,h:longint;
fl:boolean;
ans,m:int64; function max(a,b:int64):int64;
begin
if a>b then exit(a) else exit(b);
end; function check(p:longint):boolean;
var i:longint;
begin
for i:= to n do
if f[p,,i]>=m then exit(true);
exit(false);
end; begin
readln(t);
for e:= to t do
begin
readln(n,m);
for i:= to n do
begin
for j:= to n do
begin
read(f[,i,j]);
if f[,i,j]= then f[,i,j]:=inf;
end;
readln;
end;
p:=;
while true do
begin
for i:= to n do
for j:= to n do
begin
f[p+,i,j]:=inf;
for k:= to n do
begin
f[p+,i,j]:=max(f[p+,i,j],f[p,i,k]+f[p,k,j]);
if f[p+,i,j]>m then
begin
f[p+,i,j]:=m;
break;
end;
end;
end;
if not check(p+) then inc(p) //出现了从房间1到某房间最大上升层数大于m就不用往下穷举了
else break;
end;
w[]:=;
for i:= to n do
w[i]:=inf; //w表示在当前所用次数下到i号房间最大上升层数层数
ans:=;
for h:=p downto do
begin
fl:=true;
for i:= to n do
begin
for j:= to n do
if w[i]+f[h,i,j]>=m then
begin
fl:=false;
break;
end;
if not fl then break;
end;
if fl then
begin
ans:=ans+int64() shl h;
for i:= to n do
v[i]:=inf;
for i:= to n do
for j:= to n do
v[j]:=max(v[j],w[i]+f[h,i,j]);
w:=v;
end;
end;
writeln(ans+);
end;
end.

bzoj2165的更多相关文章

  1. 2018.11.09 bzoj2165: 大楼(倍增+floyd)

    传送门 先倍增出iii使得2i2^i2i时间时刚好有每个点能够到mmm层及以上. 然后就可以用floyd+floyd+floyd+倍增求出刚好不超过mmm层的时间,最后再补一层就行了. 代码: #pr ...

  2. bzoj2165: 大楼 (矩阵快速幂)

    //========================== 蒟蒻Macaulish:http://www.cnblogs.com/Macaulish/  转载要声明! //=============== ...

  3. bzoj2165: 大楼(倍增floyd)

    题目大意:一个有向图,n(<=100)个点求一条长度>=m(<=10^18)的路径最少经过几条边. 一开始以为是矩乘,蓝鹅当时还没开始写,所以好像给CYC安利错了嘿嘿嘿QWQ 第一眼 ...

  4. Bzoj2165 大楼

    Time Limit: 40 Sec  Memory Limit: 259 MBSubmit: 779  Solved: 285[Submit][Status][Discuss] Descriptio ...

  5. [转载]hzwer的bzoj题单

    counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...

  6. BZOJ刷题列表【转载于hzwer】

    沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...

随机推荐

  1. Bash从路径中获取文件名

    #!/bin/bash basename /etc/hosts

  2. codeforces 505C Mr. Kitayuta, the Treasure Hunter(dp)

    题意:有30001个岛,在一条线上,从左到右编号一次为0到30000.某些岛屿上有些宝石.初始的时候有个人在岛屿0,他将跳到岛屿d,他跳跃的距离为d.如果当前他跳跃的距离为L,他下一次跳跃的距离只能为 ...

  3. Jquery Datatables(三)

    最近在项目中又使用Datatables的一个有趣功能,官网列子如下图: 点击“+”,展开列表,再次点击收缩. 官网的列子点击展开后的数据也是原来行中的数据,这边有了一个想法是否可以利用Ajax去动态加 ...

  4. 数据库性能高校:CPU使用过高(上)

    CPU使用率过高问题很容易被发现,但是诊断却不是很容易.CPU使用过高很多时候会成为其它问题的替罪羊,所以在确认和故障诊断时要抽丝剥茧. 调查CPU压力 三个主要的工具:性能监视器,SQLTrace, ...

  5. SQL使用存儲過程訪問不同服務器

    用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB', 'sql服 ...

  6. iphone"此证书是由未知颁发机构签名的"的解决办法

    由于误删除,将开发证书给弄没了,导致Certificates中更新的证书都提示此证书是由未知颁发机构签名的,不能实机调试,解决办法是重新下载AppleWWDRCA.cer 地址是:http://dev ...

  7. 读懂IL代码(三)

    由于要写毕业论文的缘故,最近比较没有时间写,总是要抽出时间抽出时间.诶,这样的生活比较烦躁. 这一篇主要写委托.类.方法的IL代码,一一来说明. 委托:搞过C#的都应该清楚,委托实际上是一个类.编译器 ...

  8. 【开源】封装HTML5的localstorage

    项目名:web-storage-cache 项目地址:https://github.com/WQTeam/web-storage-cache API说明:https://github.com/WQTe ...

  9. Hibernate 使用说明

    Eclipse中hibernate连接mySQL数据库练习(采用的是hibernate中XML配置方式连接数据库,以后在更新其他方式的连接) Hibernate就是Java后台数据库持久层的框架,也是 ...

  10. fedora22 无法联网的情况下rpm安装gcc5.1

    前天发生件很不幸的事.我在给ubuntu14.04安装NVIDIA显卡驱动的时候,想清空下一个目录,什么目录我也忘了,当时我正好切到root身份(平常我很少切root的),命令格式如下 rm -fr ...