POJ3169 Layout (差分约束)

TMS320F280049C 学习笔记21 交叉开关 Crossbar (X-BAR) 简单介绍了X-BAR。 阅读详情
Layout
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 10022 Accepted: 4807

Description

Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 <= N <= 1,000) cows numbered 1..N standing along a straight line waiting for feed. The cows are standing in the same order as they are numbered, and since they can be rather pushy, it is possible that two or more cows can line up at exactly the same location (that is, if we think of each cow as being located at some coordinate on a number line, then it is possible for two or more cows to share the same coordinate). 

Some cows like each other and want to be within a certain distance of each other in line. Some really dislike each other and want to be separated by at least a certain distance. A list of ML (1 <= ML <= 10,000) constraints describes which cows like each other and the maximum distance by which they may be separated; a subsequent list of MD constraints (1 <= MD <= 10,000) tells which cows dislike each other and the minimum distance by which they must be separated. 

Your job is to compute, if possible, the maximum possible distance between cow 1 and cow N that satisfies the distance constraints.

Input

Line 1: Three space-separated integers: N, ML, and MD. 

Lines 2..ML+1: Each line contains three space-separated positive integers: A, B, and D, with 1 <= A < B <= N. Cows A and B must be at most D (1 <= D <= 1,000,000) apart. 

Lines ML+2..ML+MD+1: Each line contains three space-separated positive integers: A, B, and D, with 1 <= A < B <= N. Cows A and B must be at least D (1 <= D <= 1,000,000) apart.

Output

Line 1: A single integer. If no line-up is possible, output -1. If cows 1 and N can be arbitrarily far apart, output -2. Otherwise output the greatest possible distance between cows 1 and N.

Sample Input

4 2 1
1 3 10
2 4 20
2 3 3

Sample Output

27

Hint

Explanation of the sample: 

There are 4 cows. Cows #1 and #3 must be no more than 10 units apart, cows #2 and #4 must be no more than 20 units apart, and cows #2 and #3 dislike each other and must be no fewer than 3 units apart. 

The best layout, in terms of coordinates on a number line, is to put cow #1 at 0, cow #2 at 7, cow #3 at 10, and cow #4 at 27.


题目大意:N头牛按编号1—N排成一排,其中有一些牛之间的距离不能超过某个值,还有一些牛之间的距离不能少于某个值,问第一头牛与第N头牛之间的最大距离是多少。若无解,输出-1;若距离无限大,输出-2;否则,输出最大距离。


对差分约束的相关描述如下


三、差分约束
      1、数形结合
      介绍完最短路,回到之前提到的那个不等式组的问题上来,我们将它更加系统化。
      如若一个系统由n个变量和m个不等式组成,并且这m个不等式对应的系数矩阵中每一行有且仅有一个1和-1,其它的都为0,这样的系统称为差分约束( difference constraints )系统。引例中的不等式组可以表示成如图三-1-1的系数矩阵。
图三-1-1
      然后继续回到单个不等式上来,观察 x[i] - x[j] <= a[k], 将这个不等式稍稍变形,将x[j]移到不等式右边,则有x[i] <= x[j] + a[k],然后我们令a[k] = w(j, i),再将不等式中的i和j变量替换掉,i = v, j = u,将x数组的名字改成d(以上都是等价变换,不会改变原有不等式的性质),则原先的不等式变成了以下形式:d[u] + w(u, v) >= d[v]。
      这时候联想到SPFA中的一个松弛操作:
    if(d[u] + w(u, v) < d[v]) {
        d[v] = d[u] + w(u, v);
    }
      对比上面的不等式,两个不等式的不等号正好相反,但是再仔细一想,其实它们的逻辑是一致的,因为SPFA的松弛操作是在满足小于的情况下进行松弛,力求达到d[u] + w(u, v) >= d[v],而我们之前令a[k] = w(j, i),所以我们可以将每个不等式转化成图上的有向边:
      对于每个不等式 x[i] - x[j] <= a[k],对结点 j 和 i 建立一条 j -> i的有向边,边权为a[k],求x[n-1] - x[0] 的最大值就是求 0 到n-1的最短路。
图三-1-2
      图三-1-2 展示了 图三-1-1的不等式组转化后的图。

      2、三角不等式
      如果还没有完全理解,我们可以先来看一个简单的情况,如下三个不等式:
B - A <= c      (1)
C - B <= a      (2)
C - A <= b      (3)
      我们想要知道C - A的最大值,通过(1) + (2),可以得到 C - A <= a + c,所以这个问题其实就是求min{b, a+c}。将上面的三个不等式按照 三-1 数形结合 中提到的方式建图,如图三-2-1所示。
图三-2-1
      我们发现min{b, a+c}正好对应了A到C的最短路,而这三个不等式就是著名的三角不等式。将三个不等式推广到m个,变量推广到n个,就变成了n个点m条边的最短路问题了。

      3、解的存在性
      上文提到最短路的时候,会出现负权圈或者根本就不可达的情况,所以在不等式组转化的图上也有可能出现上述情况,先来看负权圈的情况,如图三-3-1,下图为5个变量5个不等式转化后的图,需要求得是X[t] - X[s]的最大值,可以转化成求s到t的最短路,但是路径中出现负权圈,则表示最短路无限小,即不存在最短路,那么在不等式上的表现即X[t] - X[s] <= T中的T无限小,得出的结论就是 X[t] - X[s]的最大值 不存在。
图三-3-1
      再来看另一种情况,即从起点s无法到达t的情况,如图三-3-2,表明X[t]和X[s]之间并没有约束关系,这种情况下X[t] - X[s]的最大值是无限大,这就表明了X[t]和X[s]的取值有无限多种。
图三-3-2
      在实际问题中这两种情况会让你给出不同的输出。综上所述,差分约束系统的解有三种情况:1、有解;2、无解;3、无限多解;

      4、最大值 => 最小值
      然后,我们将问题进行一个简单的转化,将原先的"<="变成">=",转化后的不等式如下:
B - A >= c      (1)
C - B >= a      (2)
C - A >= b      (3)
      然后求C - A的最小值,类比之前的方法,需要求的其实是max{b, c+a},于是对应的是图三-2-1从A到C的最长路。同样可以推广到n个变量m个不等式的情况。
      
      5、不等式标准化
      如果给出的不等式有"<="也有">=",又该如何解决呢?很明显,首先需要关注最后的问题是什么,如果需要求的是两个变量差的最大值,那么需要将所有不等式转变成"<="的形式,建图后求最短路;相反,如果需要求的是两个变量差的最小值,那么需要将所有不等式转化成">=",建图后求最长路。
      如果有形如:A - B = c 这样的等式呢?我们可以将它转化成以下两个不等式:
A - B >= c      (1)
A - B <= c      (2)
       再通过上面的方法将其中一种不等号反向,建图即可。
       最后,如果这些变量都是整数域上的,那么遇到A - B < c这样的不带等号的不等式,我们需要将它转化成"<="或者">="的形式,即 A - B <= c - 1。
四、差分约束的经典应用
      1、线性约束
        线性约束一般是在一维空间中给出一些变量(一般定义位置),然后告诉你某两个变量的约束关系,求两个变量a和b的差值的最大值或最小值。
     【例题1】N个人编号为1-N,并且按照编号顺序排成一条直线,任何两个人的位置不重合,然后给定一些约束条件。
       X(X <= 100000)组约束Ax Bx Cx(1 <= Ax < Bx <= N),表示Ax和Bx的距离不能大于Cx。
       Y(X <= 100000)组约束Ay By Cy(1 <= Ay < By <= N),表示Ay和By的距离不能小于Cy。
       如果这样的排列存在,输出1-N这两个人的最长可能距离,如果不存在,输出-1,如果无限长输出-2。
      像这类问题,N个人的位置在一条直线上呈线性排列,某两个人的位置满足某些约束条件,最后要求第一个人和最后一个人的最长可能距离,这种是最直白的差分约束问题,因为可以用距离作为变量列出不等式组,然后再转化成图求最短路。
      令第x个人的位置为d[x](不妨设d[x]为x的递增函数,即随着x的增大,d[x]的位置朝着x正方向延伸)。
      那么我们可以列出一些约束条件如下:
      1、对于所有的Ax Bx Cx,有 d[Bx] - d[Ax] <= Cx;
      2、对于所有的Ay By Cy,有 d[By] - d[Ay] >= Cy;
      3、然后根据我们的设定,有 d[x] >= d[x-1] + 1 (1 < x <= N)  (这个条件是表示任何两个人的位置不重合)
     而我们需要求的是d[N] - d[1]的最大值,即表示成d[N] - d[1] <= T,要求的就是这个T。
     于是我们将所有的不等式都转化成d[x] - d[y] <= z的形式,如下:
      1、d[Bx]  -  d[Ax]    <=    Cx
      2、d[Ay]  -  d[By]    <=  -Cy
      3、d[x-1] -    d[x]    <=    -1
     对于d[x] - d[y] <= z,令z = w(y, x),那么有 d[x] <= d[y] + w(y, x),所以当d[x] > d[y] + w(y, x),我们需要更新d[x]的值,这对应了最短路的松弛操作,于是问题转化成了求1到N的最短路。
       对于所有满足d[x] - d[y] <= z的不等式,从y向x建立一条权值为z的有向边。
      然后从起点1出发,利用SPFA求到各个点的最短路,如果1到N不可达,说明最短路(即上文中的T)无限长,输出-2。如果某个点进入队列大于等于N次,则必定存在一条负环,即没有最短路,输出-1。否则T就等于1到N的最短路。

#include<cstdio>
#include<cstring>
#include<vector>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
using namespace std;

const int maxn = 40000+10;
const int INF = 1e9+10;

struct node
{
    int from, to, cost;
    node(int from, int to, int cost) : from(from), to(to), cost(cost){}
};

vector<node> edge;
int d[1000 + 5];
int n,ml,md;

bool Bellman()
{
    for(int i = 1; i <= n; i++) d[i] = INF;
    d[1] = 0;
    int E = edge.size();
    for (int i = 1; i <= n; i++) {
        for (int j = 0; j < E; j++) {
            node e = edge[j];
            if (d[e.to] > d[e.from] + e.w) {
                d[e.to] = d[e.from] + e.w;
                if (i == n) return false; //如果存在负边,返回false
            }
        }
    }
    return true;
}

int main()
{
    scanf("%d%d%d",&n,&ml,&md);
    
    for(int i = 0; i < ml; i++){
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        edge.push_back(node(u,v,w));
    }
    
    for(int i = 0; i < md; i++){
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        edge.push_back(node(v,u,-w));
    }
    
    if (!Bellman()) printf("-1\n");
    else if(d[n] == INF) printf("-2\n");
    else printf("%d\n",d[n]);
}



Decoder如何工作、Transformer如何训练、以及exposure bias问题 1、结合图文描述Decoder中各个模块是什么,以及是如何工作的。2、transformer是如何训练的。3、exposure bias问题造成的原因及解决方法 阅读详情

相关推荐

保姆级教程:手把手教你从NASA Earthdata免费下载ASTER L2地表温度数据(附shp文件拖拽技巧)

本文提供了一份详细的ASTER L2地表温度数据下载指南,涵盖从NASA Earthdata注册、数据定位到shp文件拖拽技巧的全流程。特别针对新手常见问题如邮箱选择、密码设置、云量筛选等给出实用解决方案,帮助用户高效获取遥感数据并避免常见陷阱。

weixin_42662605的博客 424

差分约束

参考博客:点击打开链接 差分约束: 给你n个点,然后给出每个店的关系,比如对于下x1-x2>=d1,x3-x4 这种题我们称为差分约束,我们根据答案所求的求建图 如果求最大值,那么我们把所有符号变为 如果求最小值,那么我们打所有符号变为>=,然后对于等式a-b>=d, 依然连一天从b到a,权值位d的边,然后求最长路 然后还需要注意各点之间的隐秘的约束关系,这里也要建边 差分约束

w571523631的博客 382

FISCO-BCOS配置及使用控制台

如果因为网络问题长时间无法下载,请尝试:curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh。为了可以更加方便快捷,所以HelloWorld合约已经被内置了,位于控制台下面的contracts/solidity/HelloWorld.sol。用于获取和设置name的值,合约代码如下。部署成功会返回合约地址。

qq_51562644的博客 831

差分约束2

差分约束2 参考: 夜深人静写算法(四) - 差分约束 - 英雄哪里出来 - C++博客http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html 一、引例        1、一类不等式组的解       给定n个变量和m个不等式,每个不等式形如 x[i] - x[j] &lt;= a[k] (0 &lt;= i...

weixin_34295316的博客 282

数据驱动AI落地:从业务价值到技术实践的全链路方法论

以数据驱动为核心,围绕 AI 落地全链路展开:先建全域数据体系(拉通内外部数据、治理数据质量),再将 AI 嵌入研发、制造、营销、服务等业务链路解决痛点,搭配混合算力架构保障技术落地,辅以 “小场景试错 - 复制” 战略、跨部门团队等方法论。结合美的集团数字化转型实践,最终实现 AI 对业务降本、增效、增收的价值,为企业 AI 转型提供可复用路径。

专注数据驱动领域原创分享。拆解从数据采集、建模分析到业务价值落地的全链路实践,聊决策逻辑、技术工具与场景案例。用通俗语言讲透数据如何赋能业务,与同路人共探数据价值。 1892

深度学习——VGG16模型详解

1、网络结构 VGG16模型很好的适用于分类和定位任务,其名称来自牛津大学几何组(Visual Geometry Group)的缩写。 根据卷积核的大小核卷积层数,VGG共有6种配置,分别为A、A-LRN、B、C、D、E,其中D和E两种是最为常用的VGG16和VGG19。 介绍结构图: conv3-64 :是指第三层卷积后维度变成64,同样地,conv3-128指的是第三层卷积后维度变成128; input(224x224 RGB image) :指的是输入图片大小为224244的彩色图像,通道为

橙子的博客 12万+

浅谈差分约束算法

参考:http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html (理论部分)        https://www.cnblogs.com/zhangmingcheng/p/3929394.html  (题集举例)差分约束系统有两种方式可以求解,最短路和最长路。当我们把不等式整理成d[a]+w&lt;=d[b]时,我们求最长...

qq_41287489的博客 2458

1014. 福尔摩斯的约会 (20)-PAT乙级真题

1014. 福尔摩斯的约会 (20) 大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧!3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母’D’,代表星期四;第2对相同的字符是’

柳婼 の blog 2645

最短路和差分约束

https://blog.youkuaiyun.com/whereisherofrom/article/details/78922648

Vicente的博客 399

【移远EG800K-CN】从AT指令到MQTT实战:4G模块云端通信全解析

本文详细解析移远EG800K-CN 4G模块的AT指令应用与MQTT云端通信实战。从硬件连接到网络配置,再到MQTT协议的数据上报与命令接收,提供了完整的物联网通信解决方案,帮助开发者快速实现设备与云端的稳定数据交互。

o1p2q3r的博客 559

ROS Noetic下Gazebo仿真:从零搭建两轮差速机器人(含ros_control配置避坑指南)

本文详细介绍了在ROS Noetic环境下,使用Gazebo从零搭建两轮差速机器人并进行仿真的完整流程。核心内容包括利用Xacro进行模块化建模,并重点解析了通过ros_control框架配置机器人运动控制的详细步骤与常见避坑指南,帮助开发者成功实现机器人在仿真环境中的差速驱动与运动控制。

game4的博客 620

Poj 3169 Layout【差分约束+SPFA】

Layout Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10278   Accepted: 4946 Description Like everyone else, cows like to stand close to their friends whe

mengxiang000000 3803

Cesium 实战 04 - 标绘功能系列之画点(draw point)

Cesium 实战 - 标绘功能之画点(draw point)。

非科班Java出身GISer的博客 1084

POJ 3169 Layout【差分约束+spfa判负环】

POJ 3169 Layout 题目大意: 在一个一维坐标轴上排列各个点,使得每两个点直接满足给定的两种条件 某两点间的距离不大于某个值,以及某两点距离不小于某个值 具体思路: 差分约束,最短路求解 不懂差分约束的,可以参考这篇博客https://blog.youkuaiyun.com/whereisherofrom/article/details/78922648 差分约束的条件: 假设标号A<B ...

指弹键盘哼民谣 489

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

POJ - 3169 Layout (差分约束)(SPFA)

POJ - 3169 Layout (差分约束)(SPFA)(kuangbin) Problem Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 <= N <= 1,000) cows numbered 1..N standing...

四季不败的博客 271

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

[POJ 3169]Layout[差分约束][最短路]

题目链接:[POJ 3169]Layout[差分约束][最短路] 题意分析: 牛儿们互相间有喜欢双方的,也有讨厌双方的。互相喜欢的,希望离得尽量近,互相讨厌的,希望离得尽量远,问:能否根据要求把牛儿们排成一行?如果能,请输出1到N的最大距离(如果为无穷输出『-2』),否则,输出『-1』。 解题思路: a喜欢b,那么dis(a,b)<=cdis(a, b) <= c,a讨厌b,那么dis(a,

闲停 604

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

POJ——3169Layout(差分约束)

POJ——3169Layout Layout Time Limit:1000MS Memory Limit:65536K Total Submissions:14702 Accepted:7071 Description Like everyone else, cows like to stand close to thei...

weixin_30721077的博客 183

POJ3169 - Layout (差分约束)

题目链接:https://cn.vjudge.net/problem/POJ-3169题目大意:解题过程:刚开始是一脸懵逼的,怎么还有这种题,完全没想法。 然后看书上说是差分约束,然后和最短路类比了下,还是没看懂,最后是去网上搜了下博客,然后又自己画了画才弄懂。http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html题目分

ACM_Fish的博客 497

POJ 3169 Layout(差分约束系统)

POJ 3169 Layout(差分约束系统) http://poj.org/problem?id=3169 题意: 当排队等候喂食时,奶牛喜欢和它们的朋友站得靠近些。FJ有N(2 一些奶牛相互间存有好感,它们希望两者之间的距离不超过一个给定的数L。另一方面,一些奶牛相互间非常反感,它们希望两者间的距离不小于一个给定的数D。给出ML条关于两头奶牛间有好感的描述,再给出MD条关于两头奶牛间存

code 874

Layout POJ3169 差分约束

传送门:POJ3169 题意:有N头牛按编号顺序排在一条直线上(一个位置可以有多头牛),两两喜欢的牛之间距离不能超过d,两两讨厌的牛之间距离不能小于d,求1号牛和n号牛之间的最大距离。 纪念我的差分约束第一题。 因为此题第一次了解差分约束,个人强烈非常特别必须推荐我学习差分约束的博客:写的真是太好了! 感觉就算你没有最短路的基础这篇文章也能给你介绍明白差分约束是啥。 回到题上来,学会差分

WA是一笔财富 350

POJ 3169 Layout (差分约束系统)

题目地址:POJ 3169 很简单的差分约束。。公式很明显。当输入最大值的时候,是a-b=c。然后根据这个式子用最短路求。 代码如下: #include #include #include #include #include #include #include #include #include #include #include using namespace st

scf0920 1205

POJ 3169 Layout 差分约束

一、内容 Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 <= N <= 1,000) cows numbered 1..N standing along a straight line waiting for feed. The cows ...

Tizzi的博客 893

[POJ 3169] Layout 差分约束

http://poj.org/problem?id=3169题意:有 n 头牛 它们按照 1 - n 的顺序排成一列, 有些牛的距离必须大于等于某个值, 有些牛的距离必须小于等于某个值,相邻的两头牛距离必须大于等于 0 。思路:不等式关系 可以用差分约束求解。这题要求的是1 和 n 的最大距离,那么将所有的不等式化成小于等于的的形式,然后用 spfa 求最短路径。

AcmHonor的专栏 549

【poj3169】Layout 差分约束

DescriptionLike everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 <= N <= 1,000) cows numbered 1..N standing along a straight line waiting for feed. The cows a

DQS的树洞 1257

poj 3169 Layout(差分约束+spfa)

题目链接:http://poj.org/problem?id=3169 题意:n头牛编号为1到n,按照编号的顺序排成一列,每两头牛的之间的距离 >= 0。这些牛的距离存在着一些约束关系:1.有ml组(u, v, w)的约束关系,表示牛[u]和牛[v]之间的距离必须 <= w。2.有md组(u, v, w)的约束关系,表示牛[u]和牛[v]之间的距离必须 >= w。问如...

awow80285的博客 172

差分约束 POJ 3169 Layout

题意: 将给定的n头牛按编号大小依次安排在数轴上 给出ml条边,每条边A、B、D表示牛A和牛B的距离不能超过D 再给出md条边,每条边A、B、D表示牛A和牛B的距离不能低于D 求符合要求的最大的牛1到牛n的距离。 题解: 一堆不等式,首先想到差分约束。 差分约束: 要求最大值,则将不等式组转换为小于等于形式,spfa求最短路(因为可能有负环),dis初始化为INF,对于每个形如...

qq_38515845的博客 301
上一篇: HDU 4596 Yet another end of the world (拓展欧几里得)
下一篇: HDU 5441 Travel (离线处理+并查集)
Interstellar_
博客等级 码龄10年 8粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值