[cogs 1117]奶牛排队
来源:互联网 发布:全球风暴 知乎 编辑:程序博客网 时间:2024/05/22 15:50
1117. [WC2010模拟] 奶牛排队
★ 输入文件:layout.in
输出文件:layout.out
简单对比时间限制:1 s 内存限制:128 MB
题目描述:
像每个人一样,奶牛们喜欢在排队等待领取食物和自己的朋友站在一起。FJ拥有N头奶牛,编号为1至N。它们站成一行,等待FJ派送奶牛营养餐。这些奶牛按照编号大小排列,并且由于它们都很想早点吃饭,于是就很可能出现多头奶牛挤在同一位置的情况(也就是说,如果我们认为奶牛位于数轴上,那么多头奶牛的位置坐标可能相同)。
某些奶牛之间互相喜欢,它们希望互相之间的距离至多为一个定值。某些奶牛之间互相厌恶,它们希望互相之间的距离至少为一个定值。现在给定ML个互相喜爱的奶牛对以及它们之间距离的最大值,MD个互相厌恶的奶牛对以及它们之间距离的最小值。
你的任务是计算在满足以上条件的前提下,编号为1和编号为N的奶牛之间距离的最大可能值。
输入描述:
输入文件第一行三个整数N,ML以及MD。
此后ML行,每行包含三个用空格分开的整数A,B和D,其中A,B满足1<=A<b<= n< span="">。表示编号为A和B的奶牛之间的距离至多为D。</b<= n<>
此后MD行,每行包含三个用空格分开的整数A,B和D,其中A,B满足1<=A<b<= n< span="">。表示编号为A和B的奶牛之间的距离至少为D。</b<= n<>
输出描述:
输出文件仅包含一个整数。如果不存在任何合法的排队方式,就输出-1。如果编号1和编号N的奶牛间距离可以任意,就输出-2 。否则输出它们之间的最大可能距离。
输入样例:
4 2 1
1 3 10
2 4 20
2 3 3
输出样例:
27
数据约定:
N<=1000;
ML,MN<=10000;
D<=1000000。
也不知道是为什么,从u->v加一条正权边和从v->u加一条负权边跑出来的结果不一样,。
差分约束系统
不等式的方向
如果是最短路,则有disx - disy <= w(x, y)
反之就要变成大于等于的形式。
和最短路系统吻合
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define maxn 20010using namespace std;int n,ml,md;struct Edge{int to,next,dis;}e[maxn*5];int h[1010],cnt;void add(int u,int v,int d){++cnt;e[cnt].to=v;e[cnt].next=h[u];e[cnt].dis=d;h[u]=cnt;}int que[maxn*30];int vis[maxn],dis[maxn],C[maxn];int SPFA(int S){//memset(vis,0,sizeof vis);int head=0,tail=1;memset(dis,127,sizeof dis);que[head]=S;dis[S]=0;vis[S]=1;while(head!=tail){int u=que[head];for(int i=h[u];i;i=e[i].next){int v=e[i].to,w=e[i].dis;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;C[v]++;if(C[v]>n)return -1;if(!vis[v]){vis[v]=1;que[tail++]=v;}}}head++;vis[u]=0;}if(dis[n]>=dis[n+1]-10000)return -2;return dis[n];}int main(){freopen("layout.in","r",stdin);freopen("layout.out","w",stdout);scanf("%d%d%d",&n,&ml,&md);int u,v,d;for(int i=1;i<=ml;i++){scanf("%d%d%d",&u,&v,&d);add(u,v,d);}for(int i=1;i<=md;i++){scanf("%d%d%d",&u,&v,&d);add(v,u,-d);}for(int i=1;i<n;i++)add(i+1,i,0);printf("%d",SPFA(1));return 0;}
- [cogs 1117]奶牛排队
- 奶牛排队
- COGS [USACO Mar07] 奶牛交通
- 奶牛排队 (Standard IO)
- 奶牛排队 (Standard IO)
- COGS1212. 奶牛排队
- 排队的奶牛
- 【最短路】【水题】【cogs 497】奶牛派对
- [悬线法] COGS 1722 [WC2002]奶牛浴场
- [cogs 896]圈奶牛(凸包)
- COGS 896. 圈奶牛 (凸包)
- [NOIP2010冲刺十二] 奶牛排队
- 8.9 排队的奶牛 2494
- 【USACO 2013 January Gold】奶牛排队
- 排队的奶牛(Cows in a Row)
- vijos1548:奶牛排队——题解
- poj 3169 差分约束(奶牛排队)
- 110_奶牛排队问题 layout (poj 3169)
- 牛顿方法、指数分布族、广义线性模型—斯坦福ML公开课笔记4
- android jni 调用
- ListView分页详解(非常有用)
- 利用struts2,mybatis,spring,三大框架写的一个简单的查询程序
- stm32开发之使用Keil MDK以及标准外设库创建STM32工程
- [cogs 1117]奶牛排队
- 为 RCP 向导页添加上下文敏感的帮助支持
- 3Sum
- Caffe学习笔记2-Caffe的三级结构(Blobs,Layers,Nets)
- leetcode Remove Element
- linux网络自动分析shell脚本
- 一元多项式相加的算法和C++实现
- 控制翻转(IOC)与 依赖注入 (DI)
- 黑马程序员——java复习总结——字符串