卡了一上午常数,本地13s,可是bzoj 就是过不去~

#include <bits/stdc++.h>
#define N 102
#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;
char *p1,*p2,buf[100000];
#define nc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int rdint() {int x=0; char c=nc(); while(c<48) c=nc(); while(c>47) x=(((x<<2)+x)<<1)+(c^48),c=nc(); return x;}
ll rdll() {ll x=0; char c=nc(); while(c<48) c=nc(); while(c>47) x=(((x<<2)+x)<<1)+(c^48),c=nc(); return x;}
int n;
ll m;
ll f[N][N],dis[N][N][70],tmp[N],g[N];
void solve()
{
int i,j,k;
n=rdint();
m=rdll();
for(i=0;i<=n;++i)
for(j=0;j<=n;++j)
for(k=0;k<70;++k) dis[i][j][k]=-1;
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=rdll();
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;
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[j]=dis[1][j][l];
ans+=(1ll<<l);
}
}
else
{
for(i=0;i<=n;++i) g[i]=-1;
for(k=1;k<=n;++k)
{
for(j=1;j<=n;++j)
{
if(dis[k][j][l]!=inf && tmp[k]!=inf)
{
g[j]=max(g[j], tmp[k]+dis[k][j][l]);
}
}
}
int cc=0;
for(i=1;i<=n;++i) if(g[i]>=m) cc=1;
if(!cc)
{
for(j=1;j<=n;++j) tmp[j]=g[j];
ans+=(1ll<<l);
}
}
}
printf("%lld\n",ans+1);
}
int main()
{
// setIO("input");
int T;
scanf("%d",&T);
while(T--)
{
solve();
}
return 0;
}

  

BZOJ 2165: 大楼 倍增Floyd的更多相关文章

  1. bzoj 2165: 大楼【Floyd+矩阵乘法+倍增+贪心】

    1<<i的结果需要是long long的话i是long long是没用的--要写成1ll<<i--我别是个傻子吧 虽然写的是二进制贪心,但是我觉得二分可能更好写吧(但是会慢) ...

  2. [BZOJ 2165] 大楼 【DP + 倍增 + 二进制】

    题目链接:BZOJ - 2165 题目分析: 这道题我读了题之后就想不出来怎么做,题解也找不到,于是就请教了黄学长,黄学长立刻秒掉了这道题,然后我再看他的题解才写出来..Orz 使用 DP + 倍增 ...

  3. BZOJ 2165: 大楼

    Time Limit: 40 Sec Memory Limit: 259 MB Submit: 957 Solved: 353 [Submit][Status][Discuss] Descriptio ...

  4. bzoj2165: 大楼(倍增floyd)

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

  5. BZOJ.4180.字符串计数(后缀自动机 二分 矩阵快速幂/倍增Floyd)

    题目链接 先考虑 假设S确定,使构造S操作次数最小的方案应是:对T建SAM,S在SAM上匹配,如果有S的转移就转移,否则操作数++,回到根节点继续匹配S.即每次操作一定是一次极大匹配. 简单证明:假设 ...

  6. 【CF461E】Appleman and a Game 倍增floyd

    [CF461E]Appleman and a Game 题意:你有一个字符串t(由A,B,C,D组成),你还需要构造一个长度为n的字符串s.你的对手需要用t的子串来拼出s,具体来说就是每次找一个t的子 ...

  7. 2018.11.09 bzoj4773: 负环(倍增+floyd)

    传送门 跟上一道题差不多. 考虑如果环上点的个数跟最短路长度有单调性那么可以直接上倍增+floyd. 然而并没有什么单调性. 于是我们最开始给每个点初始化一个长度为0的自环,于是就有单调性了. 代码: ...

  8. 2018.11.09 bzoj1706: relays 奶牛接力跑(倍增+floyd)

    传送门 倍增+floyd板子题. 先列出状态fi,j,kf_{i,j,k}fi,j,k​表示经过iii条边从jjj到kkk的最短路. 然后发现可以用fi−1,j,kf_{i-1,j,k}fi−1,j, ...

  9. BZOJ4773: 负环(倍增Floyd)

    题意 题目链接 Sol 倍增Floyd,妙妙喵 一个很显然的思路(然而我想不到是用\(f[k][i][j]\)表示从\(i\)号点出发,走\(k\)步到\(j\)的最小值 但是这样复杂度是\(O(n^ ...

随机推荐

  1. 2019牛客暑期多校训练营(第三场)F Planting Trees 单调队列

    F Planting Trees 题目链接 https://ac.nowcoder.com/acm/contest/883/F 题目描述 The semester is finally over an ...

  2. c++ vector容器

    https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html

  3. Python第三方库资源

    [转载]Python第三方库资源   转自:https://weibo.com/ttarticle/p/show?id=2309404129469920071093 参考:https://github ...

  4. S02_CH10_ User GPIO实验

    S02_CH10_ User GPIO实验 在之前的第四章课程中,我们详细的讲解了如何在VIVADO软件下封装一个简单的流水灯程序.在ZYNQ开发过程中,有时候我们可能会需要与ARM硬核进行通信,在这 ...

  5. 【hash】Seek the Name, Seek the Fame

    [哈希和哈希表]Seek the Name, Seek the Fame 题目描述 The little cat is so famous, that many couples tramp over ...

  6. 少儿编程Scratch第三讲:宇宙大战.枪战游戏

    小朋友这周的表现还算不错.周末多数时间都由我陪(bi)着(zhe)做课本上的数学题,后来还学了英语.任重道远啊,语数外都还得加强,还远不到自己就能取得好成绩的阶段. 上周说好这周要做一个发射炮弹的游戏 ...

  7. PowerShell 反弹渗透技巧

    Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能,并且与现有的WSH保持向后兼容,因此它的脚本程序不仅能访 ...

  8. 关于spring中事务管理的几件小事

    1.Spring中的事务管理 作为企业级应用程序框架,Spring在不同的事务管理API之上定义了一个抽象层.而应用程序开发人员不必了解底层的事务管理API,就可以使用Spring的事务管理机制. S ...

  9. 07 Redis存储Session

    django-redis-sessions 官方文档:https://pypi.org/project/django-redis-sessions/ dango-redis 官方文档:http://n ...

  10. 小程序点击图片,png转jpg,再预览方法

    //页面数据初始化添加参数:isSignCanvassShow //通过canvas将图片转为jpg,使图片生成白色底便于查看预览 //list为原图片数组列表,index表示当前图片下标, //im ...