【Halum操作-UVA 11478】
·英文题,述大意:
输入有向图一个(什么边的端点啊,边权啊)。每次可以选择一个节点和一个整数,然后把这个结点的出边边权加上该整数,入边边权减去该整数,目标:使得所有边的最小值非负且尽量大。
·分析:
修改结点周围的边权,题目中既没有限制次数,也没有规定在意先后顺序,这启示我们,每一个操作的效果是可以叠加的(同时就不分先后),所以可以将题目简化为:每一个节点只用一个整数操作一次。
差分约束的思想运用:如果我们设num(u)表示给节点u施加的那个整数值。则对于有向边(u,v)(权值为W),那么最终该边的边权为:
W'=W+num(u)-num(v)
读题目最后一句话,可以体会到这是一个美妙的二分。如果当前二分的值是X,表示最小边权。那么对于每一条边,都满足这个式子:
W+num(u)-num(v)>=X
=> num(v)-num(u)<=W-X
由于W-X在此时为定值,设P=W-X那么这些不等式都可以统一描述为:左边小于等于右边,左边两个节点信息之差,右边是一个定值。
#include<stdio.h>
#include<algorithm>
#include<queue>
#include<cstring>
#define go(i,a,b) for(int i=a;i<=b;i++)
#define fo(i,a,x) for(int i=a[x],v=e[i].v;~i;i=e[i].next,v=e[i].v)
#define inf 1000000000
#define mem(a,b) memset(a,b,sizeof(a))
;];
int n,m,head[N],k,max_W=-inf,ans,d[N],update_times[N];
void ADD(int u,int v,int w){e[k]=(E){v,head[u],w};head[u]=k++;}
bool SPFA(int x)
{
queue<};
go(i,,n)d[i]=update_times[i]=,q.push(i),inq[i]=;
;
fo(i,head,u)if(d[u]+e[i].w-x<d[v]){d[v]=d[u]+e[i].w-x;
;
);}}};
}
int main(){while(~scanf("%d%d",&n,&m))
{
mem(head,-);k=;ans=-;
go(i,,m){int u,v,w;scanf("%d%d%d",&u,&v,&w);
max_W=max(max_W,w);ADD(u,v,w);}
,r=max_W+,mid;
,SPFA(mid)?ans=mid,l=mid+:r=mid-;
){printf("Infinite\n");continue;}
){printf("No Solution\n");continue;}
printf("%d\n",ans);
};}//Paul_Guderian
已经忘了回去的道路,走入独自一人的碎梦。————汪峰《碎梦》
【Halum操作-UVA 11478】的更多相关文章
- UVA - 11478 - Halum(二分+差分约束系统)
Problem UVA - 11478 - Halum Time Limit: 3000 mSec Problem Description You are given a directed grap ...
- 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束)
layout: post title: 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束) author: "luowentaoaa" catal ...
- Uva 11478 Halum操作
题目链接:http://vjudge.net/contest/143318#problem/B 题意:给定一个有向图,每条边都有一个权值.每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权 ...
- UVA 11478 Halum
Halum Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA. Original ID: 114 ...
- UVA 11478 Halum(用bellman-ford解差分约束)
对于一个有向带权图,进行一种操作(v,d),对以点v为终点的边的权值-d,对以点v为起点的边的权值+d.现在给出一个有向带权图,为能否经过一系列的(v,d)操作使图上的每一条边的权值为正,若能,求最小 ...
- UVA 11478 Halum(差分约束)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34651 [思路] 差分约束系统. 设结点u上的操作和为sum[u] ...
- UVA 11478 Halum (差分约束)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- 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 ...
- UVA - 11478 Halum 二分+差分约束
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34651 题意: 给定一个有向图,每一条边都有一个权值,每次你可以 ...
随机推荐
- C语言——第三次作业
题目1.A乘以B 1.实验代码 #include <stdio.h> int main() { int A,B,C; scanf("%d %d",&A,& ...
- 201621123031 《Java程序设计》第12周学习总结
作业12-流与文件 1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 在Java中的java.io包中定义了许多类专门负责处理各种方式的输入与输出.其中,所有输入 ...
- bzoj 4399 魔法少女LJJ
4399: 魔法少女LJJ Time Limit: 20 Sec Memory Limit: 162 MBhttp://www.lydsy.com/JudgeOnline/problem.php?i ...
- System V IPC 之信号量
本文继<System V IPC 之共享内存>之后接着介绍 System V IPC 的信号量编程.在开始正式的内容前让我们先概要的了解一下 Linux 中信号量的分类. 信号量的分类 在 ...
- 前端面试题之css
1.请列出几个具有继承特性的css属性 font-family font-size color line-height text-align text-indent 2.阐述display: ...
- php的借用其他网站的页面覆盖Logo的技巧
php的借用其他网站的页面覆盖Logo的技巧, <body> <div id="red_f"></div> <div class=&quo ...
- c# 字符串的内存分配和驻留池( 转 )
刚开始学习C#的时候,就听说CLR对于String类有一种特别的内存管理机制:有时候,明明声明了两个String类的对象,但是他们偏偏却指向同一个实例.如下: string s1 = "he ...
- Mego开发文档 - 复杂查询
复杂查询 Mego 还支持一些更高级的LLINQ查询写法,本文只列出一部分. 分组汇总查询 using (var db = new OrderManageEntities()) { var query ...
- 九、Python+Selenium模拟用QQ登陆腾讯课堂,并提取报名课程(练习)
研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间.自己也是练习很少,短时间成功不了.所以走了个捷径. Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏 ...
- DevExpress控件的一些快捷操作
用的DevExpress控件时,有一些操作并不太方便,根据我自己需要的封装了一些控件的事件,调用的时候直接绑定控件的事件就可以了 例如: this.ComboBoxEdit.KeyDown += Ct ...