[倍增 floyd] BZOJ 2165 大楼
2016-03-15 18:40
218 查看
倍增喽
try-catch 语句 真是涨姿势 还可以这么用
try-catch 语句 真是涨姿势 还可以这么用
#include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; } return *p1++; } inline void read(ll &x) { char c=nc(),b=1; for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1; for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b; } ll n,m,ans; ll f[65][105][105]; ll t[105][105],g[105][105]; int main() { ll Q; freopen("t.in","r",stdin); freopen("t.out","w",stdout); read(Q); while (Q--) { read(n); read(m); ans=0; for (int p=0;p<=64;p++) for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) f[p][i][j]=-1; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) g[i][j]=-1; for (int i=1;i<=n;i++) g[i][i]=0; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { read(f[0][i][j]); if (!f[0][i][j]) f[0][i][j]=-1; } int p; try{ for (p=1;(1LL<<p)<=m;p++) for (int k=1;k<=n;k++) for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { if (f[p-1][i][k]==-1 || f[p-1][k][j]==-1) continue; f[p][i][j]=max(f[p][i][j],f[p-1][i][k]+f[p-1][k][j]); if(i==1 && f[p][i][j]>=m) throw(true); } } catch(bool) { } while (p--) { for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) t[i][j]=-1; try{ for (int k=1;k<=n;k++) for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { if (g[i][k]==-1 || f[p][k][j]==-1) continue; t[i][j]=max(t[i][j],g[i][k]+f[p][k][j]); if (i==1 && t[i][j]>=m) throw(true); } ans+=1LL<<p; memcpy(g,t,sizeof(t)); } catch (bool) { } } ans++; printf("%lld\n",ans); } return 0; }
相关文章推荐
- hdoj 2013 蟠桃记(水题)
- shell之Crontab介绍
- Android阻止AlertDialog关闭
- 加速 Gradle 构建大型 Android 项目的方法[转]
- 第三周项目1:个人所得税计算器
- 偶尔发现的几项黑客游戏。
- java作业之输入十个学生的成绩求平均分。。。
- Java - 反射机制 2
- 大型项目 Gradle 的常用库和版本管理[转]
- jquery设置控件位置的方法
- 测试是浪费时间,我的程序肯定没问题
- 我在网上看到很多朋友想学linux,但是又不会安装,下面北夏教大家一种优盘启动的安装方法.
- (4.5.3.1)AndroidStudio用gradle编译中文乱码
- 二分查找算法解析
- [bzoj 3809] Gty的二逼妹子序列 莫队+分块
- mac系统命令行curl详解
- js验证表单
- [BZOJ1061][NOI2008]志愿者招募(费用流神题单纯形裸题)
- Scala学习笔记--第6章 tuple及zip操作
- 这个函数可以辅助向现有URL 的末尾添加查询字符串参数