现在的位置: 首页 > 综合 > 正文

hdu 3219 Jammed Traffic

2013年01月23日 ⁄ 综合 ⁄ 共 978字 ⁄ 字号 评论关闭

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3219

题目意思:某人去上班,上班的路上分为n段每段都有标志,也就是总共n+1处标志,第一个标志是他上车的地方,第n+1个标志就是他工作的地方也就是目的地。在每某段 i 中给定某个时间段,在这段时间里为交通阻塞期,正常通过第 i 段需花费 a[i]的时间,若赶上阻塞期则需多花费b[i]的时间。

告诉你每段的情况,问你后他能否准时到达工作地。

这个题有几个注意事项:在阻塞期的开始和结束时间为开区间,到达的时间为闭区间,另外这里的时间都为一天内的情况,若时间大于24点说明晚了一天。

代码如下:


#include <iostream>
#include <cstdio>

using namespace std;


int zhengc[101],yanchi[101];
int times[101],timee[101];
int ts,te;

int main(){
	int n;
	while(scanf("%d",&n)&&n){
		int a,b,c,d,i;
		for(i=1;i<=n;i++){
			scanf("%d%d",&zhengc[i],&yanchi[i]);
			yanchi[i]+=zhengc[i];
			scanf("%d:%d %d:%d",&a,&b,&c,&d);
			times[i]=a*60+b;
			timee[i]=c*60+d;
		}
		scanf("%d:%d %d:%d",&a,&b,&c,&d);
		ts=a*60+b;
		te=c*60+d;
		bool mark=true;
		int tt;
		for(i=1;i<=n;i++){
			tt=ts+zhengc[i];
			if(tt>=1440){
				mark=false;
				break;
			}
            if(tt<=times[i] || ts>=timee[i]){
				ts+=zhengc[i];
				if(ts>=te || ts>=1440){
					mark=false;
					break;
				}
			}else{
				ts+=yanchi[i];
				if(ts>=te || ts>=1440){
					mark=false;
					break;
				}
			}
		}
		if(mark){
			if(ts<te){
				printf("Lucky YY!\n");
			}else{
				printf("Poor YY!\n");
			}
		}else{
			printf("Poor YY!\n");
		}
	}
	return 0;
}

抱歉!评论已关闭.