大家好,又见面了,我是全栈君。
题目链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2245
|
||||||
Description | ||||||
如图所看到的。Zoidtrip是一个休闲向小游戏…… |
||||||
Input | ||||||
多组測试数据。 每组測试数据第一行为两个正整数 n和v。 接下来n行,每行3个整数l[i] , r[i] , d[i]。 ( N <= 2000000。0 <= 全部数据 < 2^31 ) |
||||||
Output | ||||||
对于每组数据。输出一行,包括一个整数,代表最多前进至的层数。 | ||||||
Sample Input | ||||||
3 7 1 3 1 4 10 5 8 10 1 4 1 1 1 1 2 5 10 1 1 1 3 5 2 |
||||||
Sample Output | ||||||
2 4 |
||||||
Hint | ||||||
“第i层障碍物与第i-1层障碍物之间的距离为d[i]” 例子1解释例如以下: 我们能够出生位置向右下移动至第一层坐标为1的地方。 但不管怎样也无法移动至第三层的8~10之间。
例子2说明例如以下: |
||||||
Source | ||||||
哈尔滨理工大学第五届ACM程序设计竞赛 |
PS:
把 三角胞在每一层能走到的且满足能避开障碍物的最左和最右的距离找出来!
代码例如以下:
#include <cstdio> #include <iostream> #include <algorithm> using namespace std; #define LL long long #define maxn 2000047 LL l[maxn], r[maxn], d[maxn]; int main() { LL n, v; while(scanf("%lld%lld",&n,&v)!=EOF) { LL L = 0,R = 0; int ans = 0; for(int i=0; i<n; i++) { scanf("%lld%lld%lld",&l[i],&r[i],&d[i]); } for(int i = 0; i < n; i++) { if(l[i] > r[i]) { LL t = r[i]; r[i] = l[i]; l[i] = t; } L-=d[i]; R+=d[i]; L = max(l[i],L); R = min(r[i],R); if(L > R) { break; } ans++; } if(v == 0) ans = 0; printf("%d\n",ans); } return 0; }
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116288.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...