刷题——Layout POJ
来源:互联网 发布:matlab画图编程例题 编辑:程序博客网 时间:2024/06/06 02:12
/*
一堆牛从1开始按序号排成一排,
有一些牛之间有最大距离,有一些之间有最小距离,牛可以挤在一起,即距离可以为0
问,牛1到牛n的距离的最大距离
则,设d[]为牛1到各牛的距离,由上述条件可得
d[i+1]-d[i]>=0
d[BL[i]]-d[AL[i]]<=DL[i]
d[AD[i]]-d[BD[i]]>=DD[i]
d[N]=d[N]-d[N-1]+d[N-2]-d[N-2]+......+d[2]-d[1]
d[N]:MAX=MAX(d[N-1]-d[N])+......+MAX(d[2]-d[1])
*/
#include <stdio.h>
#include <algorithm>
using namespace std;
#define INF 2*1e8
int N,ML,MD;
int AL[10005],BL[10005],DL[10005];
int AD[10005],BD[10005],DD[10005];
int d[1005];
void solve(){
fill(d+1,d+N+1,INF);
d[1]=0;
for(int k=0;k<N;k++){
for(int i=1;i+1<=N;i++){
if(d[i+1]!=INF)d[i]=min(d[i],d[i+1]);
}
for(int i=0;i<ML;i++){
if(d[AL[i]]!=INF)d[BL[i]]=min(d[BL[i]],d[AL[i]]+DL[i]);
}
for(int i=0;i<MD;i++){
if(d[BD[i]]!=INF)d[AD[i]]=min(d[AD[i]],d[BD[i]]-DD[i]);
}
}
if(d[1]<0)printf("-1\n");
else if(d[N]==INF)printf("-2\n");
else printf("%d\n",d[N]);
}
int main(){
while(~scanf("%d %d %d",&N,&ML,&MD)){
for(int i=0;i<ML;i++){
scanf("%d %d %d",&AL[i],&BL[i],&DL[i]);
}
for(int i=0;i<MD;i++){
scanf("%d %d %d",&AD[i],&BD[i],&DD[i]);
}
solve();
}
return 0;
}
一堆牛从1开始按序号排成一排,
有一些牛之间有最大距离,有一些之间有最小距离,牛可以挤在一起,即距离可以为0
问,牛1到牛n的距离的最大距离
则,设d[]为牛1到各牛的距离,由上述条件可得
d[i+1]-d[i]>=0
d[BL[i]]-d[AL[i]]<=DL[i]
d[AD[i]]-d[BD[i]]>=DD[i]
d[N]=d[N]-d[N-1]+d[N-2]-d[N-2]+......+d[2]-d[1]
d[N]:MAX=MAX(d[N-1]-d[N])+......+MAX(d[2]-d[1])
*/
#include <stdio.h>
#include <algorithm>
using namespace std;
#define INF 2*1e8
int N,ML,MD;
int AL[10005],BL[10005],DL[10005];
int AD[10005],BD[10005],DD[10005];
int d[1005];
void solve(){
fill(d+1,d+N+1,INF);
d[1]=0;
for(int k=0;k<N;k++){
for(int i=1;i+1<=N;i++){
if(d[i+1]!=INF)d[i]=min(d[i],d[i+1]);
}
for(int i=0;i<ML;i++){
if(d[AL[i]]!=INF)d[BL[i]]=min(d[BL[i]],d[AL[i]]+DL[i]);
}
for(int i=0;i<MD;i++){
if(d[BD[i]]!=INF)d[AD[i]]=min(d[AD[i]],d[BD[i]]-DD[i]);
}
}
if(d[1]<0)printf("-1\n");
else if(d[N]==INF)printf("-2\n");
else printf("%d\n",d[N]);
}
int main(){
while(~scanf("%d %d %d",&N,&ML,&MD)){
for(int i=0;i<ML;i++){
scanf("%d %d %d",&AL[i],&BL[i],&DL[i]);
}
for(int i=0;i<MD;i++){
scanf("%d %d %d",&AD[i],&BD[i],&DD[i]);
}
solve();
}
return 0;
}
阅读全文
0 0
- 刷题——Layout POJ
- poj 3169——Layout
- 3169Layout——poj
- 差分约束——Layout ( POJ 3169 )
- POJ 3169 Layout——差分约束
- Layout POJ
- Layout POJ
- Layout POJ
- Layout POJ
- UIView——layout
- ExpanedListVIew——Layout
- poj 3169 Layout
- poj 3169 Layout
- poj 3169 Layout
- POJ 3169 Layout
- poj 3169 layout
- POJ 3169 Layout
- poj 3169 Layout
- hadoop集群搭建
- -----找规律 hdu 6090-Rikka with Graph
- 使用java实现windows与linux文件互相传递
- 最少转机-图的广度优先遍历
- 自定义微信登录扫码样式解决办法
- 刷题——Layout POJ
- 搞学术离不开的那些数学—概率论与数理统计
- 数据库相关知识点总结
- 微信小程序实战(二)---实现搜索页面
- Codeforces Round #411 A.Fake NP【数论有关因数结论+经验】
- MySQL--操作简记(where过滤,通配符过滤数据)
- OSS图片直接下载
- 数据库相关知识点总结
- activity横竖屏切换的生命周期