[UVA]11478 二分答案+差分约束

【Cadence 17.4实战】----- 基于MySQL与ODBC的企业级CIS数据库配置全攻略 本文详细介绍了如何在Cadence 17.4中配置基于MySQL与ODBC的企业级CIS数据库,提升硬件设计团队的元器件管理效率。通过实战案例和避坑指南,帮助读者掌握数据库部署、ODBC驱动配置及CIS参数映射等关键技巧,实现设计数据的实时同步与高效管理。 阅读详情
You are given a directed graph G(V; E) with a set of vertices and edges. Each edge (i; j) that connects
some vertex i to vertex j has an integer cost associated with that edge.
De ne the operation Halum(v; d) to operate on a vertex v using an integer d as follows: subtract
d from the cost of all edges that enter v and add d to the cost of every edge that leaves v.
As an example of that operation, consider graph G that has three vertices named (1, 2, 3) and two
edges. Edge (1, 2) has cost -1, and edge (2,3) has cost 1. The operation Halum(2; 3) operates on
edges entering and leaving vertex 2. Thus, edge (1, 2) gets cost -1-(-3)=2 and the edge (2, 3) gets cost
1 + (-3) = -2.
Your goal is to apply the Halum function to a graph, potentially repeatedly, until every edge in the
graph has at least a certain cost that is greater than zero. You have to maximize this cost.
Input
Two space-separated integers per case: V (V 500) and E (E 2700). E lines follow. Each line
represents a directed edge using three space-separated integers (u; v; d). Absolute value of cost can be
at most 10000.
Output
If the problem is solvable, then print the maximum possible value. If there is no such solution print
`No Solution'. If the value can be arbitrary large print `Infinite'
Sample Input
2 1

1 2 10

2 1
1 2 -10
3 3
1 2 4
2 3 2
3 1 5
4 5
2 3 4
4 2 5
3 4 2
3 1 0
1 2 -1
Sample Output
Infinite
Infinite
3

1


第一次做差分约束,碰到了一道不是那么水的题...


题目大意

           就是说你可以进行若干次操作,每次操作将某一点入边权值减少d,出边权值增加d.问在这种情况如何操作使最小的边权最大.

题解

          每一次操作之间互不影响,所以我们没必要去考虑操作次数,只用考虑最终结果.由于要使最小边权最大,很容易想到二分答案(最小最大问题).
         怎么check?
         我们二分最小边权x.我们设sum[u]为操作在u上的d之和(或加或减,这里的sum则是最终结果)。对于两个点(u,v),若使(u,v)这条边边权>=x(因为x为最小边权),那么我们由sum的定义可以知道操作完最终边权应为   w(a,b)+sum[u]-sum[v] .那么他应该>=x.所以式子变换得    w(a,b)-x+sum[u]>=sum[v].(w(a,b)为a,b之间本身的边权).这个式子变换就等价于spfa里的松弛关系,即三角不等式,便可以连边跑spfa了,代码里我建了超级原点的.
         Tips:1.每次check边权减去x要跑完spfa记得加上.
                2.多组数据注意memset和变量赋初值.
                3.那个松弛式子也可以看成sum(b)-sum(a)<=w(a,b)-x(这就是为什么我说边权每次要减去x).
                4.差分约束系统判false是出现负环,即每个点入队超过n次(松弛了所有点还能松弛...必定负环).

          The End.

            
#include<stdio.h>
#include<cstring>
#include<queue>
#define maxn 550
#define clear(a) memset(a,0,sizeof(a))
#define full(a)  memset(dis,120,sizeof(a))
using namespace std;
int h[maxn],dis[maxn],cnt[maxn],num,n,m,lf,rg,x,y,z,ans;
bool vis[maxn];
inline const int read(){
    register int f=1,x=0;
    register char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
    return f*x;
}
struct edge{
    int nxt,v,w;
}e[maxn*50];
void add(int u,int v,int w){
    e[++num].v=v,e[num].nxt=h[u],e[num].w=w,h[u]=num;
}
bool spfa(){
    deque<int> q;
    clear(vis),clear(cnt),full(dis);
    dis[0]=0,vis[0]=true,cnt[0]++;
    q.push_front(0);
    while(!q.empty()){
      int u=q.front();q.pop_front();vis[u]=false;
      for(int i=h[u];i;i=e[i].nxt){
          int v=e[i].v;
          if(dis[v]>dis[u]+e[i].w){
             dis[v]=dis[u]+e[i].w;
             if(!vis[v]){
             	if(++cnt[v]>n) return false;
                if(q.empty()||dis[v]<dis[q.front()]) q.push_front(v);
                else q.push_back(v);
                vis[v]=true;
			 }
		  }
	  }
	}
	return true;
}
bool check(int x){
    for(int u=1;u<=n;u++)
     for(int i=h[u];i;i=e[i].nxt)
      e[i].w-=x;
    bool The_Final_Problem=spfa();
    for(int u=1;u<=n;u++)
     for(int i=h[u];i;i=e[i].nxt)
      e[i].w+=x;
    return The_Final_Problem;
}
int main(){
    while(scanf("%d%d",&n,&m)!=EOF){
          clear(h),num=0,lf=1,rg=0;
		  for(int i=1;i<=n;i++) add(0,i,0);
          for(int i=1;i<=m;i++){
              x=read(),y=read(),z=read();
              add(x,y,z);
              if(z>rg) rg=z;
		  }
		  if(check(rg)) {puts("Infinite");continue;}
		  else if(!check(lf)) {puts("No Solution");continue;}
		  while(lf<=rg){
		     int mid=(lf+rg)>>1;
		     if(check(mid)) ans=mid,lf=mid+1;
		     else rg=mid-1;
		  }
		  while(check(ans+1)) ans++;
		  printf("%d\n",ans);
	}
}

【工具篇】万字长文拆解 Otter.ai:语音转文字领域的「瑞士军刀」是如何炼成的?(附保姆级教程) 但需要注意,2024年欧盟已出台《AI转录伦理指南》,要求所有录音需获得参与者明确授权。举个真实案例:某硅谷创业团队用Otter.ai记录产品评审会,系统自动标红争议点并生成待办事项,会议效率提升40%。AIGC技术原理、 实时转录解析、 定价策略分析、 语音算法拆解、 多平台兼容测试、 深度学习框架、 空间计算专利。——无论是跨国会议、课堂讲座还是深夜灵感,它都能实时生成带时间戳的文本记录,准确率高达95%。(此处建议插入Otter.ai会议转录动图,展示实时字幕生成效果)(数据来源:综合参考文献整理) 阅读详情

相关推荐

【论文分享】【Agent】ProAgent: Building Proactive Cooperative Agents with Large Language Models

多智能体系统是由多个智能体组成的集合,这些智能体可以是软件程序、机器人、传感器或其他实体,它们各自具备一定的智能和自主性,并通过交互协作来实现单个智能体难以完成的复杂目标。

nanxun___的博客 1121

『二分答案·差分约束』POJ1275:Cashier Employment

Problem\mathrm{Problem}Problem 题目大意: 德黑兰的一家每天24小时营业的超市,需要一批出纳员来满足它的需求。超市经理雇佣你来帮他解决一个问题————超市在每天的不同时段需要不同数目的出纳员(例如,午夜只需一小批,而下午则需要很多)来为顾客提供优质服务,他希望雇佣最少数目的纳员。 超市经历已经提供一天里每一小时需要出纳员的最少数量————R(0),R(1),…,R(2...

Ronaldo7_ZYB的博客 352

C#精准获取Windows已安装应用清单的完整方案

Windows已安装应用识别是IT资产管理、安全合规与自动化运维的基础能力。其核心原理在于突破文件系统表象,以注册表为可信数据源,分层解析HKLM/HKCU、64位/32位视图及MSI Products路径中的元数据。技术价值体现在可验证(如过滤SystemComponent=1)、可关联(通过ProductCode绑定补丁与许可证)、可操作(启动路径二次验证+卸载命令沙箱执行)。典型应用场景包括终端合规审计、软件资产清查、静默卸载脚本开发及多版本应用聚合分析。本文聚焦C#原生实现,覆盖注册表四路采集、La

weixin_33552698的博客 634

【Halum操作-UVA 11478】

·英文题,述大意: 输入有向图一个(什么边的端点啊,边权啊)。每次可以选择一个节点和一个整数,然后把这个结点的出边边权加上该整数,入边边权减去该整数,目标:使得所有边的最小值非负且尽量大。 ·分析: 修改结点周围的边权,题目中既没有限制次数,也没有规定在意先后顺序,这启示我们,每一个操作的效果是可以叠加的(同时就不分先后),所以可以将题目简化为:每一个节点只用一个整数操作一次...

weixin_34275734的博客 189

YOLOv8工业级增强实战:小目标检测与HDR鲁棒性优化

YOLO(You Only Look Once)作为主流实时目标检测框架,其核心价值在于模块化架构与工程可扩展性。理解YOLOv8的Anchor-Free设计、C2f特征融合机制及Detect头部解耦原理,是实现性能突破的基础。在工业落地中,真实瓶颈往往不是模型版本迭代,而是小目标漏检、高动态范围(HDR)场景适应差、密集遮挡ID断裂等具体问题。通过配置层动态多尺度训练、物理感知数据增强、Neck跨尺度注意力注入、质量感知损失函数升级等七层增强策略,可在不更换主干的前提下显著提升mAP与边缘设备推理效率。本

weixin_32667439的博客 258

新买的USB无线网卡插上没反应?保姆级排查指南:从设备管理器到网络列表

本文提供USB无线网卡无法识别的全流程排查手册,涵盖硬件检测、驱动管理和网络配置三大维度。重点解析设备管理器中的设备状态诊断和驱动解决方案,特别适用于Realtek芯片的无线网卡(如RTL8188GU、RTL8812BU等),帮助用户快速解决网卡插上无反应的问题。

weixin_29876033的博客 497

UVA 11478V Halum 二分答案+差分约束系统

详细翻译版请见白皮书334页 11478 Halum You are given a directed graph G(V, E) with a set of vertices and edges. Each edge (i, j) that connects some vertex i to vertex j has an integer cost associated with that

INCINCIBLE的博客 775

VN5620硬件接口介绍

VECTOR, VN5620, 诊断

Fecostar的博客 7473

UVA11478 [Halum] 二分答案+SPFA差分约束系统

UVa11478 二分答案 SPFA 差分约束系统

Venishel的博客 323

Matlab图像处理频域滤波实现——高斯低通、高通、带通带阻滤波器

如果你想要进一步了解更多的相关知识,

小嘤熊的博客 1万+

IO Virtualization with Virtio.part 2 [十三]

通过对virtio_device_id 中的 device 和 vendor 的值进行比较,我们找到对应的 virtio 驱动,由于这里我们使用 i2c virtio 为例,所以调用 virtio_i2c_probe 进行 virtio i2c 设备的初始化。在和 virtio mmio 设备交互时我们会读取 VIRTIO_MMIO_DEVICE_ID 和 VIRTIO_MMIO_VENDOR_ID,并将其值写入 virtio_device_id 中,这个就会用作后面和 virtio 设备驱动的匹配参数。

cxjczy1990的博客 1211

UVA11478 Halum 解题报告【图论】【二分答案】【SPFA】【差分约束系统】

UVA 11478

中国计算机学会成都七中(高新校区)委员会委员活动室 524

三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法

三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法

Robot_PLC_HMI_Automation 6513

UVA 11478 Halum 差分约束系统 + 二分答案

设sum(u)为在结点u上的全部操作叠加(操作顺序无影响) 则原边w(a,b)变为w(a,b)+sum(a)-sum(b) 二分答案x,则w(a,b)+sum(a)-sum(b)>=x,即sum(b)-sum(a)<=w(a,b)-x 差分约束系统 构图用SPFA判断是否有解。 //#pragma comment(linker, "/STACK:1024000000,...

weixin_34177064的博客 124

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【UVA11478】Halum (最短路解差分约束)

题目: Sample Input2 11 2 102 11 2 -103 31 2 42 3 23 1 54 52 3 44 2 53 4 23 1 01 2 -1Sample OutputInfiniteInfinite31 题意:   给定一个有向图,每条边都有一个权值。每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的边的权值...

weixin_30856965的博客 86

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Halum UVA - 11478 差分约束

Halum UVA - 11478 差分约束 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 复制 2 1 1 2 10 2 1 1 2 -10 3 3 1 2 4 2 3 2 3 1 5 4 5 2 3 4 4 2 5 3 4 2 3 1 0 1 2 -1 输出样例#1: 复制 Infinite Infinite...

loooooog的博客 161

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

UVA - 11478 Halum 【二分答案+spfa】

题目链接:https://cn.vjudge.net/problem/UVA-11478 这道题有两点收获。 1,stack的spfa的确要比queue的spfa快很多,如果发现queue的spfa超时的话,可以试试用stack。 2,之前的spfa模板给记错了,我以为松弛的次数是边的数目,今天才发现松弛的次数应该是点的数目,在搞错这个的情况下,我用stack就AC了,之前一直T,我是和别人...

Y390d的博客 322

训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束)

layout: post title: 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束) author: "luowentaoaa" catalog: true mathjax: true tags: - 最短路 - BellmanFord - 图论 - 训练指南 - 差分约束 Halum UVA - 11478 题意 带权有向图,每个点都可以有如下操作:令...

weixin_30252709的博客 184

UVA 11478(差分约束系统)

题目链接:UVA 11478解题思路: 题目要求使所有的边权值为正且尽量大,可以很自然地想到最大值最大化的经典解法——二分法。我们需要二分地去寻找答案,判断答案是否合理可以通过构建差分约束系统解决。 我们假设在第 i 个点上进行的权值操作为sum[i],那么所有 i 的出边都增加sum[i],入边都减少sum[i],因为每条边本身有权值,我们要满足权值增减之后所有边权为正,即满足等式sum[i]

fuyukai的专栏 1058

Uva 11478 Halum(差分约束系统 + 二分)

题意:一个有向图,每条边有权值,你可以每次选择一个点v和一个整数d,所有以v为起点的边的权值增加d,以v为终点的权值减小d,问是否能让所有边权为正数 思路:二分答案ans,设有边(a, b),对a操作的总和为sum(a),对b操作的总和为sum(b),w(a, b)变为了w(a, b) + sum(a) - sum(b),可知对所有边:w(a, b) + sum(a) - sum(b)

hnust_Derker的博客 342

UVA 11478 Halum 二分+差分约束+SPFA

题意: 给定一个有向图,每条边都有一个权值,每次你可以选择一个结点v和整数d,把所有以v为终点的边权值减少d,把所有以v为起点的边权值增加d,最后要让所有的边权值非负且最大,并输出最小值最大化。 题解: 这道差分约束题可以这样想,因为要找最小中的最大,而又没给值我们进行操作,让我们自由发挥,那么我们是不是可以想到用在茫茫数海中寻找一个符合条件的算法~二分法,找到答案,因为最终我

Start_to_crazy的博客 315

UVA 11478 Halum(差分约束系统+Bellman-Ford)

 题意:给定一个有向图,每条边都有一个权值。每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的边的权值增加d,最后让所有边的权值的最小值大于零且尽量大。 ps:lrj的书上有个坑,说上说非负,其实原题说要大于0.....wa了好几发 分析:因为不同的操作互不影响,因此可以按任意顺序实施这些操作。另外,对于同一个点的多次操作可以合并,因此可以令sum

GODSPEED 1053

例题5.16 Halum操作 UVa11478

1.题目描述:点击打开链接 2.解题思路:本题利用BellmanFord算法+二分解决。本题要求执行完一系列Halum操作后,可以让边权的最小值非负且尽量大。自然想到可以用二分法来解决。假设答案是x。即问题转化为所有边的边权经过操作后都大于等于x。然而这里有一个问题,我们根本不知道应该怎么选取相应的v,d,使得可以达到这个目标。但是仔细观察后就可以注意到一个特点:不同的操作影响是相互独立的,即影

Skyline 455

UVA 11478 Halum(二分 + 差分约束)

题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2473 题目大意:给你一个 n 个点 m 条有向边的图。有一种操作是:选定一个点 v 和一个整数 d ,把以 v 为终点的边权值减小 d ,把以 v 为起点的边权值都增加 d 。你要使所有边权值的最小

沉溺的专栏 845

uva11478(差分约束,spfa求负环)

UVA - 11478 Halum (最短路应用+二分) Description   Problem H Halum Time Limit : 3 seconds     You are given a directed graph G(V,E) with a set of vertices and edges.

martinue 535

uva11478 Halum

微微发光的传送门 题目中给了一种操作,就是制定一个d,和一个结点v,把所有以v为终点的边的权值减少d,把所有以v为起点的边权增加d,然后使最小的边权最大。 看到最小最大这类的字眼,首先想到的就是二分答案,假设每一条边的边权都不小于x,对于一条边,是从a指向b的,然后假定sum(a)和sum(b)分别是左右于a和b上的所有操作的d的和,那么对于这条边,它的权重就应该是w+sum(a)-sum(b

浅雨歌 670
上一篇: [POJ]3164 Command Network 朱刘算法
下一篇: [POJ]1673 混合欧拉图判定
MaxMercer
博客等级 码龄10年 55粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值