poj 2391

ElasticSearch集群搭建 docker安装es集群 阅读详情
 

还在wa 不知道为啥没过..

一会再看吧

 

此题 需要注意 在floyd时的inf 。。 另取一个inf 换成20000000000ll就过了

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int MAXN=2000;

const int inf = 0x7fffffff;

const int s = 0;

struct edge{
       int v,next,w;
}edge[100000];

int head[2*MAXN],cnt;//for sap

void addedge(int u, int v, int w)
{
     edge[cnt].v = v;
     edge[cnt].w = w;
     edge[cnt].next = head[u];
     head[u] = cnt++;
     edge[cnt].v = u;
     edge[cnt].w = 0;
     edge[cnt].next = head[v];
     head[v] = cnt++;
}

int sap(int t)
{
    int pre[2*MAXN],cur[2*MAXN],dis[2*MAXN],gap[2*MAXN]; //gap标记断层
    int flow = 0 , aug = inf ,u;
    bool flag;
    for (int i = 0 ; i <= t ; ++i)
    {
        cur[i] = head[i];
        gap[i] = dis[i] = 0;
    }
    gap[s] = t+1;
    u = pre[s] = s;
    while (dis[s] <= t)
    {
          flag = 0 ;
          for (int &j = cur[u] ; ~j ; j = edge[j].next)
          {
              int v = edge[j].v;
              if (edge[j].w > 0 && dis[u] == dis[v]+1)
              {
                   flag = 1;
                   if( edge[j].w < aug )aug = edge[j].w;
                   pre[v] = u;
                   u = v;
                   if (u == t)
                   {
                       flow += aug;
                       while (u != s)
                       {
                             u = pre[u];
                             edge[cur[u]].w -= aug;
                             edge[cur[u]^1].w += aug;
                       }
                       aug = inf;
                   }
                   break;
              }
          }
          if ( flag )continue ;
          int mindis = t+1;
          for (int j = head[u]; ~j ; j = edge[j].next)
          {
              int v = edge[j].v;
              if (edge[j].w > 0 && dis[v] < mindis)
              {
                 mindis = dis[v];
                 cur[u] = j;
              }
          }
          if(--gap[dis[u]] == 0)break;
          gap[ dis[u] = mindis+1 ]++;
          u = pre[u];
    }
    return flow;
}

void init ()
{
     memset (head , -1 , sizeof(head));
     cnt=0;
}

long long map[302][302];
long long cap[302];
long long cow[302];

void floyd ( int n )
{
    for ( int k = 0 ; k < n ; k ++ )
        for ( int i = 0 ; i < n; i ++ )
            for ( int j = 0 ; j < n; j ++ )
                if ( map[i][j] > map[i][k] + map[k][j] )
                    map[i][j] = map[i][k] + map[k][j];
}


int main()
{
    int f, p;
    //freopen ( "out.txt" , "r" , stdin );
    //freopen ( "myrun.txt" , "w" , stdout);
    //cout << inf << endl;
    while ( cin >> f >> p )
    {
        init ();
        long long a, b , w;
        long long sum = 0;
        for ( int i = 0 ; i < f ; i ++ )
            for ( int j = 0 ; j < f ; j ++ )
                map[i][j] = inf;
        for ( int i = 0 ; i < f ; i ++ )
        {
            cin >> a >> b;
            cow[i] = a;
            cap[i] = b;
            sum += a;
        }
        for ( int i = 0 ; i < p ; i ++)
        {
            cin >> a >> b >> w;
            a--, b--;
            if ( map[a][b] > w )
                map[a][b] = map[b][a] = w;
        }
        for ( int i = 0 ; i < f ; i ++)
            map[i][i] = 0;
        floyd ( f );
        long long ans = inf;
        long long begin = 0  , end = inf;
        for ( int i = 0 ; i < f ; i ++ )
            for ( int j = 0 ; j < f ; j ++ )
                if ( end < map[i][j] )
                    end = map[i][j];
//        for ( int i =0 ; i < f ;i ++ )
//        {
//            for ( int j =0 ; j < f ; j++ )
//                cout << map[i][j] << " " ;
//            cout << endl;
//        }
        //end += 100;
        while ( begin < end )
        {
            long long mid = ( begin + end )/2;
            init ();
            for ( int i = 0 ; i < f ; i ++)
                for ( int j = 0 ; j < f ; j ++ )
                    if ( map[i][j] <= mid && i != j )
                    {
                        addedge ( i+1 , 250+j , inf );
                    }
            for ( int i = 0 ; i < f ; i ++)
                addedge ( i+1, 250+i , inf );
            for ( int i = 0 ; i < f ; i ++)
                addedge ( 0 , i+1 , cow[i] );
            for ( int i = 0 ; i < f ; i ++ )
                addedge ( 250+i , 455 , cap[i] );
            long long tmp = sap ( 455 );
            //cout << tmp << endl;
            if ( sum == tmp )
            {
                if ( ans > mid )
                    ans = mid;
                end = mid;
            }
            else
                begin = mid+1 ;
        }
        if ( end > 2000000000 )
            cout << "-1" << endl;
        else if ( ans < inf )
            cout << ans << endl;
        else
            cout <<"-1" << endl;
    }
    return 0;
}

Qt图形几何之QRect详解:从基础操作到高级功能全解析 本文全面介绍了Qt框架中的QRect类,详细解析了其核心功能和使用方法。主要内容包括:1)QRect的基本概念与多种构造函数;2)矩形属性获取和状态判断方法;3)几何操作函数(移动、调整大小等);4)几何关系判断(包含、相交等);5)坐标变换和边距处理;6)实用功能与QRectF转换;7)综合应用示例(图形界面、碰撞检测、布局管理);8)性能优化建议和常见陷阱。通过丰富的代码示例,展示了QRect在Qt图形编程中的实际应用,帮助开发者掌握矩形处理的各项操作技巧,提升图形界面开发效率。 阅读详情

相关推荐

从硅到氮化镓:用Sentaurus TCAD仿真GaN HEMT功率器件,我踩过的那些坑

本文分享了使用Sentaurus TCAD仿真GaN HEMT功率器件的实战经验,详细解析了从硅基到氮化镓的技术转型中遇到的五大关键挑战:材料参数设置、极化效应建模、网格划分策略、陷阱模型校准以及仿真与实测数据匹配。通过具体案例和参数优化方法,帮助工程师避开常见陷阱,提升TCAD仿真精度与效率。

weixin_28726671的博客 379

POJ 2391 Ombrophobic Bovines

POJ 2391 Ombrophobic Bovines网络流 传送门:POJ 题意F个牛棚,P条路。每个牛棚有初始牛数,能容纳的最大牛数。 下雨了,牛要避雨。每个牛棚不能超过容纳数上限。 牛棚之间有路,路上没有通过牛的数目限制。 问牛走的最远距离最小是多少。无解输出-1。思路关于拆点%%%这题根poj2112很像,同样构图,然后二分。但是有不同。 POJ 2112跟本题很相似,

P.H.S 254

IEEE Transactions on Industrial Informatics(TII) 投稿须知- Initial Submission

请注意,您可以在作者中心查看稿件的当前状态,如:在EIC办公室、分配给AE、AE邀请审稿人、AE指定审稿人、正在审稿、等待AE决定、等待EIC决定。为了确保公正的评审过程,我们要求在稿件中没有任何作者的身份(不包括作者的姓名、传记、隶属关系、求职信、签署的版权表格、识别脚注、致谢等)。如果你的手稿有很大一部分已经在会议上发表过,论文必须隐藏所有作者的身份,这样会议论文就可以被引用,就好像它是由不同的作者写的一样。请注意,通常你的技术成就是根据被引用的次数来评估的,而不是根据发表的论文数量。

loinleeai的博客 4427

解题报告 之 POJ2391 Ombrophobic Bovines

解题报告 之 POJ 2391 Ombrophobic Bovines 最大流 拆点

JUST CODE 599

CST局部网格加密实战:从基础设置到Meshgroup高效管理

本文详细解析了CST电磁仿真软件中的局部网格加密技术,重点介绍Meshgroup功能的高效管理方法。通过平行板电容等实战案例,阐述从基础设置到多级加密策略的完整流程,帮助用户精准提升关键区域仿真精度,同时优化计算资源使用效率。

grafana6viz的博客 694

硬件-汽车电子-TBOX/TCAM核心器件选型与系统集成设计指南

本文深入解析汽车电子TBOX/TCAM硬件架构与系统集成设计,涵盖核心器件选型、电源管理、信号完整性优化等关键点。重点分享5G模组选型避坑经验、MCU隐性指标及热设计验证方案,为车载通信系统开发提供实用指南。

weixin_30352645的博客 530

Poj 2391 Ombrophobic Bovines 网络流 拆点

Poj 2391 Ombrophobic Bovines 网络流 拆点 FJ's cows really hate getting wet so much that the mere thought of getting caught in the rain makes them shake in their hooves. They have decided to put a rain sire...

weixin_30808575的博客 145

【瑞芯微px30】【RTL8363】【一】驱动移植-网卡驱动概述

linux rtl8363驱动移植

weixin_34799243的博客 1180

poj2391,poj2455

这两题本质是一致的; 一般来说,对于最长(短)化最短(长)的问题我们一般都使用二分答案+判定是否可行 因为这样的问题,我们一旦知道答案,就能知道全局信息 拿poj2455举例,对于二分出的一个答案,我们将不符合的边全部去掉,在做一遍最大流判断是否成立即可 注意这道题有重边,所以用链式前向星比较好(TT,当时我用的数组模拟邻接表表不要太烦) 1 type node=record...

weixin_34205826的博客 96

一个超酷的开源uHand2.0机械手掌项目

uHand2.0是深圳乐幻索尔公司开源的一款机械手掌,它长下面这个样子:1、uHand2.0外观图之前在公众号就分享过视频:学习嵌入式可以带娃,不信你们看2、uHand2.0硬件原理图看...

Bruce.yang的嵌入式之旅 4460

nvidia系列教程-AGX-Orin基础环境搭建

NVIDIA Jetson AGX Orin 是一款功能强大的嵌入式AI平台,专为需要高性能和低功耗的边缘计算应用设计。无论是自动驾驶、机器人,还是智能监控系统,Jetson AGX Orin 都能为这些应用提供强大的计算能力。本篇博客将为大家详细介绍如何在AGX Orin(32GB)上搭建基础开发环境,包括系统安装、CUDA和cuDNN的配置等,帮助你快速上手这个强大的平台。架构: 搭载 56 个 Tensor Core 的 1792 核 NVIDIA Ampere c GPUCUDA Cores。

flypig has a dream! 2796

POJ - 2391 最大流

题目链接:http://poj.org/problem?id=2391 今天掉坑多次。 做了几道题,发现从源点出来的边和进入汇点的边都在题目中出来过。 POJ真是坑,交G++一直wa,检查代码检查了好几遍,无望看discuss,才知道交C++是RE,才知道数组越界了。 手写了Floyd,写成 i,j,k,wa了,突然想到以前遇到过这种问题。 看昂神解释明白了。 1 #in...

weixin_34055787的博客 158

从 ABAP 视角看 JSON :7.40 版本带来的那些改变

摘要:ABAP 对 JSON 的原生支持 随着企业系统与外部 API 的交互增多,ABAP 从 NetWeaver 7.40 开始原生支持 JSON 格式。通过复用现有 XML 基础设施,ABAP 团队引入 JSON-XML 概念,使用 sXML Library 和 IF_SXML=>CO_XT_JSON 常量处理 JSON 数据。开发人员可通过 CALL TRANSFORMATION 语句实现 ABAP 数据与 JSON 的双向转换,大幅简化了与外部系统的数据交互。这种标准化的 JSON 处理方式提

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 180

POJ 2391 Ombrophobic Bovines(最大流+拆点)

POJ 2391 Ombrophobic Bovines 题目链接 题意:一些牛棚,有a只牛,现在下雨,每个牛棚容量量变成b,现在有一些道路连接了牛棚,问下雨后牛走到其他牛棚,使得所有牛都有地方躲雨,最后一只牛要走多久 思路:二分答案,然后最大流去判断,建图的方式为,牛棚拆点,源点连向入点,容量为a,出点连向汇点容量为b,中间入点和出点之间根据二分的值判断哪些边是可以加入的

Remilia's 1101

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

poj 2391 二分+多源最短路+最大流

poj 2391 题意:有n个挡雨棚,每个挡雨棚可以容纳Bi头牛,现在每个挡雨棚下有Ai头牛,有m条路,每条路连接两个挡雨棚Ui和Vi,每头牛经过这条路需要花费Ti的时间,忽略牛的碰撞体积~ 思路: 这种求时间和流量没什么关系的题,可以通过二分枚举时间往图里增边,判断是否满流来求时间,这就需要用floyd求多源最短路。 建图:显然挡雨棚的容量是流量来源,牛的数量是最大流量,所以每个挡雨棚都

AngelBeats! 545

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

poj 2391(二分+最大流)

题目链接:http://poj.org/problem?id=2391 思路:求最短时间,可以想到二分,然后判断可行性。首先在原图上求 floyd,得到每两个棚之间的最短距离。然后拆点:将每个棚拆为 i 和 i’(流进和流出),添边(i,i’,INF)。增加源点 s 和汇点 t,从 s 连边到 i,容量为该棚现在的猫的数量,i’连边到 t,容量为该棚的容量。若棚 i 和棚 j 之间的距离不大于 ...

weixin_34326558的博客 183

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

poj 2391 Ombrophobic Bovines

#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<queue> using namespace std; typedef long long ll; inline int read(){ ...

weixin_30907935的博客 128

[POJ 2391]Ombrophobic Bovines[最大流][二分答案]

题目链接:[POJ 2391]Ombrophobic Bovines[最大流][二分答案] 题意分析: 有F个地区,每个地区有have[i]头牛,可以提供can[i]头牛的庇护,有P条连接各个地区的无向道路,问:所有牛都能得到庇护,最少需要多少时间? 解题思路: 源点和牛间连一条容量为have[i]的边,汇点到牛间连一条容量为can[i]的边,需要将牛拆点(否则会发生串流,2->3 and

闲停 777

Ombrophobic Bovines POJ - 2391 floyd+二分+拆点+最大流

传送门:POJ2391 题意:有n个牛场,每个牛场有初始牛群和一个避雨棚,每个牛场的避雨棚都有自己的最大容纳量,某些牛场之间有道路连接,牛走过这些道路需要花费一定量的时间,问最少多长时间能让所有的牛都找到一个避雨棚。 思路:这题和poj2112很相似,由于前两天刚做了poj2112,于是看完题就想到了二分+floyd+最大流,自信写完,然后样例也一遍过,还以为要1A了,然而却是无限的wa。。

WA是一笔财富 344

POJ 2391 Ombrophobic Bovines(二分+floyd+最大流)

POJ 2391 Ombrophobic Bovines(最大流) http://poj.org/problem?id=2391 题意:        给定一个无向图,点i 处有Ai头牛,点i 处的牛棚能容纳Bi头牛,求一个最短时间T使得在T时间内所有的牛都能进到某一牛棚里去。(1 分析:        将每个点i 拆成两个点i’, i’’,连 边(s, i’, Ai), (i’’,

code 1453

POJ2391 Ombrophobic Bovines 网络流拆点+二分+floyed

题目链接: poj2391 题意: 有n块草地,每块草地上有一定数量的奶牛和一个雨棚,并给出了每个雨棚的容(牛)量. 有m条路径连接这些草地  ,这些路径是双向的,而且很宽敞,可以容下无限条牛并排走, 给出经过每条路径所需要消耗的时间 问:所有牛都到达雨棚下的最小时间 解题思路: 类似    牛与挤奶器的问题 http://blog.

旧时光 1001

poj 2391 Ombrophobic Bovines, 最大流, 拆点, 二分, dinic, isap

poj 2391 Ombrophobic Bovines, 最大流, 拆点, 二分 dinic /* * Author: yew1eb * Created Time: 2014年10月31日 星期五 15时39分22秒 * File Name: poj2391.cpp */ #include &lt;ctime&gt; #include &lt;cmat...

weixin_34025051的博客 103

POJ2391 Ombrophobic Bovines(二分+拆点+最大流)

链接:http://poj.org/problem?id=2391 题意: 有n个点,m条边(无向边),先输入n个点的信息,前面那个是这个点内已经有的牛,后面的是这个点最多可以容纳几头牛。m条边就是起点,终点,所需时间。问:所有奶牛都在点内安排好,所需的最少时间。如果无解输出-1。 根据题意,我们会想到一个思路,就是二分最大距离,然后跑最大流,这是一个初级思路,我写了这个之后发

xtttgo的博客 400

POJ-2391 Ombrophobic Bovines 二分+最大流+拆点

  题目链接:http://poj.org/problem?id=2391   这个题目很容易想到二分求解,我开始没有拆点,wa了很多次!后来发现,如果不拆点,二分枚举答案是没有意义的。因为在网络中,已建立的边可以相互联通,那么它们的距离相加可能会超过二分的限制,导致没有意义。那么我们可以把每个区域拆成两个点,一个在X集合,一个在Y集合,增加一个源点s和汇点t。从s向每个X集合得点建立边,容量为...

weixin_30606669的博客 94

POJ--2391--Ombrophobic Bovines【拆点+Floyd+Dinic优化+二分答案】网络最大流

链接:http://poj.org/problem?id=2391 题意:有f个草场,每个草场当前有一定数目的牛在吃草,下雨时它可以让一定数量的牛在这里避雨,f个草场间有m条路连接,每头牛通过一条路从一点到另一点有一定的时间花费,现在要下雨了,农场主发出警报牛就会立即去避雨。现在告诉每个草场的情况,以及m条边的信息。农场主至少需要提前多久发出警报才能保证所有牛都能避雨?如果不是所有牛都能成功避雨

阳光照耀圣西罗 1373
上一篇: poj 1067
下一篇: hdu 2222
Sov_Matrix
博客等级 码龄17年 0粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值