Hdu-6252 2017CCPC-Final J.Subway Chasing 差分约束
题意:有2个人,都去坐地铁,但是他们相差了X分钟,但是他们也一直在通讯,于是你就知道,你在AB站点中间的时候,他在CD中间,(B一定等于A+1或者A,同理D也是),问你每2个站之间需要的时间的一种方案使得满足上面那些话,满足不了输出IMPOSSIBLE.(站台从1到N,N<=2000)
题解:典型的差分约束 我们回忆一下,对于不等式a-b<=x 我们build(a,b,x);
那么对于本题
if (a==b && c==d) { build(d,a,-x); build(b,c,x); }
if (a==b && c!=d) { build(d,a,-x-1); build(b,c,x-1); }
if (a!=b) { build(d,a,-x-1); build(b,c,x-1); }
由于要保证图的连通性,记得加一个超级源点,向每个点加1条边
而且是车站,实际问题,每相邻2个站之间,至少需要1分钟.
顺便用了dfs版的spfa板子,跑得飞快
#include<bits/stdc++.h>
#define N 2005
#define M 10005
const long long inf=0x3f3f3f3f3f3f3f3f;
typedef long long lld;
using namespace std;
struct rec
{
int go,next;
long long v;
}eg[M];
int head[N],que[N],nn,k,a,b,c,p,n,du[N];
lld dis[N];
bool used[N];
void read(int &a)
{
a=;
char c=getchar();
while (c<=) c=getchar();
while (c>) a=a*+c-'',c=getchar();
}
void build(int a,int b,long long c)
{
p++;
eg[p].go=b;
eg[p].next=head[a];
eg[p].v=c;
head[a]=p;
}
stack<int>S;
int spfa()
{
for (int i=;i<=n;i++)
{
S.push(i);
du[i]=;
used[i]=;
dis[i]=;
}
while (!S.empty())
{
int v=S.top();
S.pop();
used[v]=;
for (int u=head[v];u;u=eg[u].next )
if (dis[eg[u].go]>dis[v]+eg[u].v)
{
dis[eg[u].go]=dis[v]+eg[u].v;
if ((++du[eg[u].go])>nn)
{
printf("IMPOSSIBLE");
return ;
}
if (!used[eg[u].go]) S.push(eg[u].go ) ;
}
}
return ;
}
int T,x,d,tt;
int main()
{
int tt=;
scanf("%d",&T);
while (T--)
{
p=;
memset(que,,sizeof(que));
memset(used,,sizeof(used));
memset(du,,sizeof(du));
memset(head,,sizeof(head));
while (!S.empty()) S.pop();
read(nn);read(k);read(x);
for (int i=;i<=k;i++)
{
read(a);read(b);read(c);read(d);
if (a==b && c==d)
{
build(d,a,-x);
build(b,c,x);
}else
if (a==b && c!=d)
{
build(d,a,-x-);
build(b,c,x-);
}else
{
build(d,a,-x-);
build(b,c,x-);
}
}
n=nn+;
for (int i=;i<=nn;i++) build(n,i,);
for (int i=;i<nn;i++) build(i+,i,-);
tt++;
printf("Case #%d: ",tt);
int why=spfa();
if (why) for (int i=;i<=nn;i++) printf("%lld ",dis[i]-dis[i-]);
printf("\n");
}
return ;
}
Hdu-6252 2017CCPC-Final J.Subway Chasing 差分约束的更多相关文章
- hdu 4598 Difference(奇圈判定+差分约束)
这是通化邀请赛的题,当时比赛的时候还完全没想法呢,看来这几个月的训练还是有效果的... 题意要求(1) |ai| < T for all i (2) (vi, vj) in E <=& ...
- hdu 1531(差分约束)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1531 差分约束的题之前也碰到过,刚好最近正在进行图论专题的训练,就拿来做一做. ①:对于差分不等式,a ...
- I - 动物狂想曲 HDU - 6252(差分约束)
I - 动物狂想曲 HDU - 6252 雷格西桑和路易桑是好朋友,在同一家公司工作.他们总是一起乘地铁去上班.他们的路线上有N个地铁站,编号从1到N.1站是他们的家,N站是公司. 有一天,雷格西桑起 ...
- POJ 1364 / HDU 3666 【差分约束-SPFA】
POJ 1364 题解:最短路式子:d[v]<=d[u]+w 式子1:sum[a+b+1]−sum[a]>c — sum[a]<=sum[a+b+1]−c−1 ...
- hdu 4598 差分约束
思路:首先就是判断是否有奇环,若存在奇环,则输出No. 然后用差分约束找是否符合条件. 对于e(i,j)属于E,并且假设顶点v[i]为正数,那么v[i]-v[j]>=T--->v[j]-v ...
- HDU 3666 THE MATRIX PROBLEM (差分约束)
题意:给定一个最大400*400的矩阵,每次操作可以将某一行或某一列乘上一个数,问能否通过这样的操作使得矩阵内的每个数都在[L,R]的区间内. 析:再把题意说明白一点就是是否存在ai,bj,使得l&l ...
- 差分约束 HDU - 1384 HDU - 3592 HDU - 1531 HDU - 3666
Intervals Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- HDU 3666 THE MATRIX PROBLEM (差分约束 深搜 & 广搜)
THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu 3666(差分约束,手动栈解决超时问题)
THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
随机推荐
- 多种效果进度指示层效果iOS源码项目
该源码是一个多种效果进度指示层效果源码案例,源码KVNProgress,KVNProgress提供多种效果的进度指示层,有半透明效果,也支持全屏显示.指示层还高度支持自定义,可以按自己的需求定制.效果 ...
- C# 从小到大排列
"; ; var ss = ""; ;i<str.Length;i++) { var s0 = str[i].ToString(); var s1 = (js).T ...
- matlab学习下拉菜单
用matlab添加listbox控件 修改string和value值,value为几就对应第几行字符串 添加button按钮,将string值改为“选择x轴参数”,字体大小为10 再添加一个按钮,将s ...
- BZOJ2251 [2010Beijing Wc]外星联络 后缀数组 + Height数组
Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in", "r", stdin ...
- Dell R720修改远程管理口的密码
今天有个客户需要通过远程管理口来查看系统事件日志,但是他们把初始密码改过并且还给忘记了.后来我决定进操作系统(cent os)进行修改.整个过程很简单,进入系统后只需要三个步骤就解决问题了 1.安装软 ...
- 9.在idea中创建Maven项目
1.新建maven WEB项目 打开-File-New-Project 点击NEXT 2.选择项目组,并给项目命名 3.选择maven路径 添加的配置为 archetypeCatalog=intern ...
- WOJ 1538 B - Stones II
Problem 1538 - B - Stones IITime Limit: 1000MS Memory Limit: 65536KB Total Submit: 416 Accepted: 63 ...
- 向现有的磁盘组加入/删除ASM磁盘
ASM磁盘组支持动态扩展,我们可以向现有的磁盘组动态加入新的磁盘,新磁盘加入后,Oracle通过后台RBAL进行Rebalance,将当前的数据均衡到新增加的磁盘上.Drop磁盘亦会Rebalance ...
- 百度之星2014初赛 - 1002 - Grids
先上题目: Grids Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- 洛谷——P1361 小猫爬山
https://www.luogu.org/problem/show?pid=1361#sub 题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲 ...