博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 1260 工程规划 (差分约束)
阅读量:4969 次
发布时间:2019-06-12

本文共 1281 字,大约阅读时间需要 4 分钟。

/*Ti≤Tj+b意味Ti的最大值为Tj+b;Tj≥Ti-b意味Tj的最大值为Ti-b;因此,根据题中给出的m个不等式,逐步调整各个Ti的最小值和最大值。设high[i]为Ti当前的最大值,low[i]为Ti当前的最小值。high[j]为Tj当前的最大值,low[j]为Tj当前的最小值。若high[i]-high[j]>b,则high[i]=high[j]+b(根据Ti≤Tj+b),若low[i]-low[j]
#include
#include
#define maxn 5010using namespace std;int n,m,l[maxn],r[maxn],x[maxn],y[maxn],z[maxn],can;void Get_lr(){ for(int i=2;i<=n;i++) l[i]=-100000,r[i]=100000;//绝对值不够大不行 不是简单地 -100 - 100 //每两个是100 一共1000个 1000*100 }int main(){ scanf("%d%d",&n,&m); Get_lr(); for(int i=1;i<=m;i++) scanf("%d%d%d",&x[i],&y[i],&z[i]); while(1) { int falg=0,f=0; for(int i=1;i<=m;i++) { if(r[x[i]]>r[y[i]]+z[i]) r[x[i]]=r[y[i]]+z[i],f++; if(l[y[i]]
r[i]) { falg=1;break; } if(falg)break; if(f==0) { can=1;break; } } if(!can) { printf("NO SOLUTION\n"); return 0; } int cd=0x3f3f3f3f; for(int i=1;i<=n;i++)cd=min(cd,l[i]);//调整结果 恰好有零 for(int i=1;i<=n;i++)printf("%d\n",l[i]-cd); return 0;}

 

转载于:https://www.cnblogs.com/yanlifneg/p/5596929.html

你可能感兴趣的文章
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>
【7-9 有重复的数据I (20 分)】【此题卡输入,需要自己写个输入挂】
查看>>
JRebel安装部署,激活
查看>>
OPENSSL使用方法
查看>>
下载GO的开源开发工具LITEIDE
查看>>
接口操作XML
查看>>
idhttp访问DATASNAP有密码验证的中间件
查看>>
libmidas.so.2
查看>>
开发WINDOWS服务程序
查看>>
httpencode编码
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>
DELPHI搭建centos开发环境
查看>>
IdHTTPServer允许跨域访问
查看>>
DELPHI开发LINUX包
查看>>
更新.net core 3.0,dotnet ef命令无法使用的解决办法
查看>>
React躬行记(13)——React Router
查看>>
前端利器躬行记(1)——npm
查看>>
前端利器躬行记(2)——Babel
查看>>
前端利器躬行记(3)——webpack基础
查看>>