思路:转化为求最短路。建图比较麻烦,每一个平台拆成两个点,上下两个平台之间距离不超过maxlen的点加边。
#include<iostream> #include<cstdio> #include<string> #include<algorithm> using namespace std; #define maxn 2100 #define maxcost 99999999 int maxlen,sx,sh,n,st,ed; class node { public: int lx,rx,h; }; node p[1005]; class map { public : int to,len; int next; }; map g[10000]; int head[2100],cnt; bool cmp(node &a,node &b) { if(a.h >b.h )return true; return false; }; void add(int u,int v,int len) { g[++cnt].to =v; g[cnt].len =len; g[cnt].next=head[u]; head[u]=cnt; } void build()//建图 { int i,j; for(i=0;i<n;i++) { bool l=false,r=false; j=i+1; while((l==false||r==false)&&p[i].h -p[j].h <=maxlen&&j<n) { if(p[j].lx <=p[i].lx &&p[j].rx >=p[i].lx &&l==false) { l =true; add(2*i,2*j,p[i].lx -p[j].lx ); add(2*i,2*j+1,p[j].rx -p[i].lx ); } if(p[j].lx <=p[i].rx &&p[j].rx >=p[i].rx &&r==false) { r=true; add(2*i+1,2*j,p[i].rx -p[j].lx ); add(2*i+1,2*j+1,p[j].rx -p[i].rx ); } j++; } if(p[i].h <=maxlen) { if(l==false) add(2*i,ed,0); if(r==false) add(2*i+1,ed,0); } } } int vis[maxn],dist[maxn],par[maxn]; int dij() { int i,min,k,j,dis,v; for(i=0;i<=ed;i++) { vis[i]=0; par[i]=0; dist[i]=maxcost; } for(i=head[st];i;i=g[i].next ) { v=g[i].to ; dist[v]=g[i].len ; } vis[st]=1;dist[st]=0; for(i=0;i<=ed;i++) { min=maxcost;k=st; for(j=0;j<=ed;j++) if(dist[j]<min&&vis[j]==0) { min=dist[j]; k=j; } vis[k]=1; for(j=head[k];j;j=g[j].next ) { v=g[j].to ; dis=dist[k]+g[j].len ; if(vis[v]==0&&dist[v]>dis) { dist[v]=dis; par[v]=k; } } } return dist[ed]; } int main() { int test,i; cin>>test; while(test--) { cin>>n>>sx>>sh>>maxlen; for(i=0;i<n;i++) { scanf("%d%d%d",&p[i].lx,&p[i].rx,&p[i].h); } sort(p,p+n,cmp); memset(head,0,sizeof(head)); cnt=0; i=0; st=2*n+2; ed=2*n+3; while(i<n) { if(p[i].lx <=sx&&p[i].rx >=sx) { add(st,2*i,sx-p[i].lx ); add(st,2*i+1,p[i].rx -sx); break; } i++; } if(i==n) printf("%d\n",sh); else { build(); printf("%d\n",dij()+sh); } } return 0; }
您还没有登录,请您登录后再发表评论
poj 2488——dfs深度优先遍历 //给行数列数,求问能否遍历,给出字典序的一种遍历
poj题目,帮助jimmy,经典动态规划
c表示有多少种珍珠 ai 表示第i种珍珠所需的数量 pi 表示第i种珍珠的价钱 每买一种珍珠都需要付额外的10 * pi的钱,便宜的珍珠可以用贵的珍珠来代替,求最少的钱的总数。
POJ 是“北京大学程序在线评测系统”(Peking University Online Judge)的缩写,是个提供编程题目的网站,兼容Pascal、C、C++、Java、Fortran、Python等多种语言。可以按照分类,在POJ上做题。
POJ 1006 源代码——中国剩余定理分析POJ 1006 源代码——中国剩余定理分析POJ 1006 源代码——中国剩余定理分析
POj 1001源代码——高精度乘单精度POj 1001源代码——高精度乘单精度POj 1001源代码——高精度乘单精度POj 1001源代码——高精度乘单精度
北大POJ2996-Help Me with the Game 解题报告+AC代码
网上整理的一些poj刷题指南。 poj地址:http://poj.org
poj 2820 古代密码 http://poj.grids.cn/problem?id=2820 可直接运行
POJ中级图算法所有题目【解题报告+AC代码】 我的所有POJ解题报告 http://blog.csdn.net/lyy289065406/article/details/6642573
The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public highways. So the traffic is difficult in Flatopia. The Flatopian government is aware of this problem....
ACM/icpc的练习题目分类,非常全面的关于poj题目的分类
北大POJ2676-Sudoku 解题报告+AC代码
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
北大POJ3414-Pots 解题报告+AC代码
PKU 、POJ ACM/ICPC300多题的代码,还有各种典型问题的分类代码
http://poj.grids.cn/problem?id=2774 POJ 2774 木棒加工 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目是给定了。当然,我们希望得到的小段越长越好,你的任务是计算能够...
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
经典的0-1背包问题. 适合新手学习. 原题网址:http://poj.grids.cn/problem?id=2773
poj2880 输入一个英文句子,长度不超过40个字符。编写程序,输出句子中最长的一个单词。 http://poj.grids.cn/problem?id=2880 可直接运行
相关推荐
poj 2488——dfs深度优先遍历 //给行数列数,求问能否遍历,给出字典序的一种遍历
poj题目,帮助jimmy,经典动态规划
c表示有多少种珍珠 ai 表示第i种珍珠所需的数量 pi 表示第i种珍珠的价钱 每买一种珍珠都需要付额外的10 * pi的钱,便宜的珍珠可以用贵的珍珠来代替,求最少的钱的总数。
POJ 是“北京大学程序在线评测系统”(Peking University Online Judge)的缩写,是个提供编程题目的网站,兼容Pascal、C、C++、Java、Fortran、Python等多种语言。可以按照分类,在POJ上做题。
POJ 1006 源代码——中国剩余定理分析POJ 1006 源代码——中国剩余定理分析POJ 1006 源代码——中国剩余定理分析
POj 1001源代码——高精度乘单精度POj 1001源代码——高精度乘单精度POj 1001源代码——高精度乘单精度POj 1001源代码——高精度乘单精度
北大POJ2996-Help Me with the Game 解题报告+AC代码
网上整理的一些poj刷题指南。 poj地址:http://poj.org
poj 2820 古代密码 http://poj.grids.cn/problem?id=2820 可直接运行
POJ中级图算法所有题目【解题报告+AC代码】 我的所有POJ解题报告 http://blog.csdn.net/lyy289065406/article/details/6642573
The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public highways. So the traffic is difficult in Flatopia. The Flatopian government is aware of this problem....
ACM/icpc的练习题目分类,非常全面的关于poj题目的分类
北大POJ2676-Sudoku 解题报告+AC代码
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
北大POJ3414-Pots 解题报告+AC代码
PKU 、POJ ACM/ICPC300多题的代码,还有各种典型问题的分类代码
http://poj.grids.cn/problem?id=2774 POJ 2774 木棒加工 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目是给定了。当然,我们希望得到的小段越长越好,你的任务是计算能够...
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
经典的0-1背包问题. 适合新手学习. 原题网址:http://poj.grids.cn/problem?id=2773
poj2880 输入一个英文句子,长度不超过40个字符。编写程序,输出句子中最长的一个单词。 http://poj.grids.cn/problem?id=2880 可直接运行