题面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. Centos7基础优化操作项

    1.基础优化操作项:更新yum源信息第一个:就近使用yum源地址,安装软件更快.curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors. ...

  2. 手摸手带你实现 小游戏<别踩白块儿 -- 内有游戏链接>

    别踩白块儿 使用(白鹭引擎)Egret编写的游戏 游戏地址 准备工作 了解白鹭引擎 并安装编写工具 安装游戏引擎 安装Egret Wing3 创建项目 创建项目可以选择不同版本的引擎,创建成功之后还可 ...

  3. 关于reverse()和sort()方法的返回值问题

    关于reverse()和sort()方法的返回值问题   先说结论:reverse()和sort()方法的返回值并不是当前步骤排序后的数组,而是数组的引用.   展示如下: var arr = [2, ...

  4. Druid连接池错误(数据库版本问题)

    前提 jdbc驱动: mysql-connector-java.8.0.13.jar durid依赖包:durid-1.0.9.jar mysql版本: mysql 8.0 1 错误 1.1 错误一 ...

  5. 使用 Capistrano 部署总结

    使用 Capistrano 部署总结 2014年6月27日 admin发表评论阅读评论 简介 Capistrano 是一个 Ruby 程序,它提供高级的工具集来部署你的 Web应用到服务器上.Capi ...

  6. jQuery attr() prop() data()用法及区别

    .attr(),此方法从jq1.0开始一直存在,官方文档写的作用是读/写DOM的attribute值,其实1.6之前有时候是attribute,有时候又是property..prop(),此方法jq1 ...

  7. Acwing-280-陪审团(背包dp?)

    链接: https://www.acwing.com/problem/content/282/ 题意: 在一个遥远的国家,一名嫌疑犯是否有罪需要由陪审团来决定. 陪审团是由法官从公民中挑选的. 法官先 ...

  8. C# 编辑

    if (state == "编辑") { ht["修改人"] = Helper.用户名; ht["修改时间"] = DateTimeHelp ...

  9. Java中截取字符串中小数点前面的字符

    通过下标获取 String number = "2563.2154"; int index = number.indexOf("."); String intN ...

  10. 计算机网络(十),HTTP的关键问题

    目录 1.在浏览器地址栏键入URL,按下回车之后经历的流程 2.HTTP状态码 3.GET请求和POST请求的区别 4.Cookie和Session的区别 5.IPV4和IPV6 十.HTTP的关键问 ...