题面lalala

这居然是个紫题???原谅我觉得这题是模板。。。

这个这个,这题的算法呢其实是一个叫差分约束的东西,也是今天下午我们机房的重点,如果不知道这个差分约束是个啥的人呢,自行百度一下谢谢。。

好吧还是简单介绍一下,简而言之,就是对一堆子不等式进行最短路模型化,然后依照问题用最短(长)路跑一(两)遍,基本上就可以求出答案

那么剩下的东西呢都在代码里了

 // luogu-judger-enable-o2
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
using namespace std; int n,l,d,tot;
bool ok;
int dis[],c[],head[],next[],w[],to[];
bool vis[];
queue < int > q; void add(int v,int u,int p){//链式前向星不用多介绍了吧(这玩意要是不会的真的建议理解一下,平时做题复制粘贴虽然可以,但考场不行啊)
next[++tot]=head[v];
to[tot]=u;
w[tot]=p;
head[v]=tot;
} void spfa(int s){//由于可能有环及负权边,故用spfa求解
memset(dis,0x3f,sizeof(dis));
dis[s]=;
memset(c,,sizeof(c));
memset(vis,,sizeof(vis));
while(!q.empty()){q.pop();}
q.push(s);
vis[s]=;
ok=;
while(!q.empty()){
int x;
x=q.front();
q.pop();
vis[x]=;
for(int k=head[x];k;k=next[k]){
int y=to[k];
if(dis[x]+w[k]<dis[y]){
dis[y]=dis[x]+w[k];
if(!vis[y]){
vis[y]=;
c[y]++;
q.push(y);
}
if(c[y]>n){//处理负环的情况
ok=;
return;
}
}
}
}
return;
} int main(){
scanf("%d%d%d",&n,&l,&d);
for(int i=;i<=n;i++){//这段赋值可以对建图进行预处理,进而处理图非连通的情况
add(,i,);
}
for(int i=;i<=l;i++){//这个读入和下一个读入就是差分约束的核心,简而言之,就是小于等于时建一条a指向b权值为c的边(换行嘤嘤嘤)
int a,b,c;//大于等于时建一条b指向a权值为-c的边
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
}
for(int i=;i<=d;i++){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
add(b,a,-c);
}
spfa();
if(!ok){//负环
printf("-1\n");
return ;
}
spfa();
if(!ok){//负环
printf("-1\n");
}
else if(dis[n]==0x3f3f3f3f){//不连通
printf("-2\n");
}
else{
printf("%d\n",dis[n]);//输出
}
return ;
}

嗯呐还有好多篇要写,就这样了

P4878 [USACO05DEC] 布局的更多相关文章

  1. 差分约束算法————洛谷P4878 [USACO05DEC] 布局

    题目: 不难看出题意主要是给出ml+md个格式为xi-xj<=ak的不等式,xi-xj为i,j俩头牛的距离,要我们求x1-xn的最大值. 经过上下加减我们可以将这几个不等式化成x1-xn< ...

  2. Luogu P4878 [USACO05DEC]布局

    题目 差分约束模板. 注意判负环需要建一个超级源点到每个点连一条\(0\)的边.因为\(1\)不一定能到达所有的点. #include<bits/stdc++.h> #define pi ...

  3. P4878 [USACO05DEC]layout布局

    P4878 [USACO05DEC]layout布局 差分约束 最短路径最长路,最长路径最短路 本题求的是最长路径,所以跑最短路 根据题意连边,然后spfa即可 注意要判断图的连通性,所以新建一个虚拟 ...

  4. 洛谷 P4878 [USACO05DEC]layout布局

    题面链接 sol:差分约束系统裸题,根据a+b<=c建个图跑个最短路就没了... #include <queue> #include <cstdio> #include ...

  5. 洛谷P4878 [USACO05DEC]layout布局

    题目描述 正如其他物种一样,奶牛们也喜欢在排队打饭时与它们的朋友挨在一起.\(FJ\) 有编号为 \(1\dots N\) 的 \(N\) 头奶牛 \((2\le N\le 1000)\).开始时,奶 ...

  6. 【洛谷P4878】布局

    题目大意:给定一个长度为 N 的递增序列,有 M 组差分约束关系,求满足这些约束关系时,第一个数和第 N 个数的差是多少. 题解:首先,能否满足约束关系需要判断一下负环,若满足约束关系,再从第一个点 ...

  7. 洛谷 [USACO05DEC] 布局 题解

    今天学了差分约束系统, 这是一道板子题. 核心:a[v]>a[u]+d 相当于从u到v连一条长度为d的有向边.由于要判断有环,所以要从0点先跑一遍spfa因为1点不一定能到所有的点. #incl ...

  8. (精)题解 guP4878 [USACO05DEC] 布局

    差分约束模版题 不过后三个点简直是满满的恶意qwq 这里不说做题思路(毕竟纯模板),只说几个坑点: 1. 相邻的两头牛间必须建边(这点好像luogu没有体现),例如一组数据: 4 1 1 1 4 10 ...

  9. 2018年12月30&31日

    小结:昨天由于做的题目比较少,所以就和今天写在一块了,昨天学习了差分约束和树上差分,当然树上差分是用线段树来维护的,今天重点整理了博客\(233\),然后做了几个题. 一. 完成的题目: 洛谷P327 ...

随机推荐

  1. K8S网络模型

    一.网络模型概述 k8s的网络中主要存在四种类型的通信:同一pod内的容器间通信.各pod彼此之间的通信.pod与service间的通信.以及集群外部的流量同service之间的通信. k8s为pod ...

  2. 拒绝被坑!如何用Python和数据分析鉴别刷单!?

    发际线堪忧的小Q,为了守住头发最后的尊严,深入分析了几十款防脱洗发水的评价,最后综合选了一款他认为最完美的防脱洗发水. 一星期后,他没察觉到任何变化. 一个月后,他用卷尺量了量,发际线竟然后退了0.5 ...

  3. "main" java.io.IOException: Mkdirs failed to create /user/centos/hbase-staging (exists=false, cwd=file:/home/centos)

    Exception in thread "main" java.io.IOException: Mkdirs failed to create /user/centos/hbase ...

  4. hivesql之str_to_map函数

    str_to_map(字符串参数, 分隔符1, 分隔符2) 使用两个分隔符将文本拆分为键值对. 分隔符1将文本分成K-V对,分隔符2分割每个K-V对.对于分隔符1默认分隔符是 ',',对于分隔符2默认 ...

  5. css设置元素垂直居中的几个方法

    最近有人问我怎么设置元素垂直居中?我....(这么基础的东西都不会?我有点说不出话来),  不过还是耐心的教了他几个方法,好吧教完他们,顺便把这些方法整理一下 第一种:通过设置成为表格元素的方式来实现 ...

  6. c语言中"->"和"."的区别

    对于c语言中"->"和"."的区别总结如下: 1.A.B则A为对象或者结构体: 2.A->B则A为指针,->是成员提取,A->B是提取A ...

  7. JavaScript 的定时(Timing )事件——setTimeout()与setInterval()

    JavaScript 可以在时间间隔内执行,这就是所谓的定时事件( Timing Events). ㈠Timing 事件 ⑴window 对象允许以指定的时间间隔执行代码,这些时间间隔称为定时事件. ...

  8. socket认证客户端链接合法性

    服务器端: #_*_coding:utf-8_*_ __author__ = 'Linhaifeng' from socket import * import hmac,os secret_key=b ...

  9. 51 Nod 1085 01背包问题

    1085 背包问题  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2--Wn(Wi为 ...

  10. UVA 12063 Zeros and ones 一道需要好好体会的好题

    #include<bits/stdc++.h> #include<stdio.h> #include<iostream> #include<cmath> ...