Bones’s Battery Submit

【题目链接】Bones’s Battery Submit

【题目类型】二分+Floyd

&题意:

有n个点,m条边,从点ui到点vi的费电量是di,要求对于任意的起点s和终点e,必须能遍历过所有的点一遍,并且充电的次数不超过k次(在任何一个点都可以充满电),问电池容量最小是多少?

&题解:

首先求这种题,用二分还是可以想到的,那怎么判断是否可行就比较难了;

首先用floyd求出每2点之间的最短路,之后在写出一个dp数组,根据求出的dis最短距离,来求出从任意的u点到任意的v点在走过全图的情况下最少冲了多少次电,如果其中充电次数最多的小于等于k,那么就可行.

【时间复杂度】O(n^3log1e11)

&代码:

#include <cstdio>
#include <iostream>
#include <set>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std;
#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
using ll=long long;
const int maxn= 1e3 +9;
ll dis[maxn][maxn],dp[maxn][maxn];
int n,k,m;
void floyd(ll arr[][maxn])
{
for(int i=0;i<n;i++) arr[i][i]=0;
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
if(arr[i][k]==LINF||i==k) continue;
arr[i][j]=min(arr[i][j],arr[i][k]+arr[k][j]);
}
}
void init()
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
dis[i][j]=LINF;
}
}
bool ok(ll cap)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
if(dis[i][j]==LINF) return false;
dp[i][j]=dis[i][j]<=cap?1:LINF;
}
floyd(dp);
// for(int i=0;i<n;i++){
// for(int j=0;j<n;j++){
// printf("%lld ",dp[i][j]);
// }
// puts("");
// }
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
if(dp[i][j]>k) return false;
}
return true;
}
int main()
{
// ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
// freopen("E:1.txt","r",stdin);
int T;scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&k,&m);
init();
for(int i=0;i<m;i++){
int u,v;
ll d;
scanf("%d%d%lld",&u,&v,&d);
dis[u][v]=dis[v][u]=d;
}
floyd(dis);
ll l=0,r=1e11+9,mid;
while(l<=r){
mid=(l+r)/2;
if(ok(mid)) r=mid-1;
else l=mid+1;
}
printf("%lld\n",l);
}
return 0;
}

CSU 1817 Bones’s Battery Submit(二分+Floyd)的更多相关文章

  1. HDU 4606 Occupy Cities ★(线段相交+二分+Floyd+最小路径覆盖)

    题意 有n个城市,m个边界线,p名士兵.现在士兵要按一定顺序攻占城市,但从一个城市到另一个城市的过程中不能穿过边界线.士兵有一个容量为K的背包装粮食,士兵到达一个城市可以选择攻占城市或者只是路过,如果 ...

  2. POJ 2112 Optimal Milking (二分 + floyd + 网络流)

    POJ 2112 Optimal Milking 链接:http://poj.org/problem?id=2112 题意:农场主John 将他的K(1≤K≤30)个挤奶器运到牧场,在那里有C(1≤C ...

  3. 2013-2014 ACM-ICPC Pacific Northwest Regional Contest B.Bones’s Battery

    题意略. 思路: 这个题目求的是第一个可行解,由此想到用二分试探的方式来解决. 现在讲讲怎么验证该解是否合理: 先用floyd求出两两之间的最短距离. dp[ i ][ j ]表示,i 到 j 至少要 ...

  4. 网络流--最大流--POJ 2139(超级源汇+拆点建图+二分+Floyd)

    Description FJ's cows really hate getting wet so much that the mere thought of getting caught in the ...

  5. poj2112 二分+floyd+多源多汇最大流

    /*此题不错,大致题意:c头牛去k个机器处喝奶,每个喝奶处最多容纳M头牛,求所有牛中走的最长路的 那头牛,使该最长路最小.思路:最大最小问题,第一灵感:二分答案check之.对于使最长路最短, 用fo ...

  6. BZOJ 1738: [Usaco2005 mar]Ombrophobic Bovines 发抖的牛 网络流 + 二分 + Floyd

    Description FJ's cows really hate getting wet so much that the mere thought of getting caught in the ...

  7. Gym 101655:2013Pacific Northwest Regional Contest(寒假自训第13场)

    A .Assignments 题意:给定距离D,以及N个飞机的速度Vi,单位时间耗油量Fi,总油量Ci.问有多少飞机可以到达目的地. 思路:即问多少飞机满足(Ci/Fi)*Vi>=D  ---- ...

  8. BZOJ 1738: [Usaco2005 mar]Ombrophobic Bovines 发抖的牛( floyd + 二分答案 + 最大流 )

    一道水题WA了这么多次真是.... 统考终于完 ( 挂 ) 了...可以好好写题了... 先floyd跑出各个点的最短路 , 然后二分答案 m , 再建图. 每个 farm 拆成一个 cow 点和一个 ...

  9. POJ 2112—— Optimal Milking——————【多重匹配、二分枚举答案、floyd预处理】

    Optimal Milking Time Limit:2000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Sub ...

随机推荐

  1. CentOS7初始化mysql库报错

    在centos7上安装mysql数据库,进行数据库初始化工作时,报错缺少data::dumper库文件,如下: 解决办法:安装autoconf库后重新初始化即可解决. yum-y install au ...

  2. 最全最详细:ubuntu16.04下linux内核编译以及设备驱动程序的编写(针对新手而写)

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  3. shiro入门实例,基于ini配置

    基于ini或者关系数据库的,其实都是一样的,重要的是思想. # ==================================================================== ...

  4. MySQL加锁处理分析(转)

    add by zhj: 非常棒的一篇文章,是我见过的讲加锁最棒最详细的文章了.之前听过网易的<MySQL微专业>,里面的课程讲的也很好,但锁这块讲的跟 这篇文章相比,还是有差距的.网易&l ...

  5. ES中TF-IDF算法

    概念 TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术.TF-IDF是一种统计方法,用以评估一字词对于一个文 ...

  6. LeetCode-37.Sudok Solver

    Write a program to solve a Sudoku puzzle by filling the empty cells. A sudoku solution must satisfy  ...

  7. 预见2019吴晓波年终秀演讲PPT整理

    在2018年倒数的第二天12月30日晚上7点在广东珠海横琴拉开帷幕,吴晓波以一场“预见2019”的年终盛典,和大家一起回望即将告别的跌宕一年,细数过去的焦虑和改变,瞭望未来的激越和走向.下面我们一起来 ...

  8. AutoML初创公司探智立方:模型的物竞天择与适者生存

    从回归分析的出现到深度学习的蓬勃发展,这条算法的进化路线与其说是「机器替代人」,不如说是「机器帮助人类完毕我们不擅长的事」. 这份「不擅长」列表里有「不擅长从大量数据中寻找规律」.「不擅长同一时候完毕 ...

  9. 014-通过JDB调试,通过HSDB来查看HotSpot VM的运行时数据

    一.JDB调试        在预发环境下进行debug时,时常因为工具和环境的限制,导致debug体验非常差,那么有什么方法能够简化我们进行debug的体验吗?JDB就是一种.        JDB ...

  10. Learn nodejs: Tutorials for Programmers of All Levels, 程序员每个阶段的示例

    https://stackify.com/learn-nodejs-tutorials/ What is Node.js? Node.js can be defined as a dynamic, c ...