当前位置:网站首页>HOJ 2245 浮游三角胞(数学啊 )

HOJ 2245 浮游三角胞(数学啊 )

2022-07-07 20:57:00 全栈程序员站长

大家好,又见面了,我是全栈君。

Time Limit: 500 MS Memory Limit: 50000 K Total Submit: 129(38 users) Total Accepted: 66(34 users) Rating: Special Judge: No

Time Limit: 500 MS

Memory Limit: 50000 K

Total Submit: 129(38 users)

Total Accepted: 66(34 users)

Rating:

Special Judge: No

Time Limit: 500 MS

Memory Limit: 50000 K

Total Submit: 129(38 users)

Total Accepted: 66(34 users)

Rating:

Special Judge: No

Description

如图所看到的。Zoidtrip是一个休闲向小游戏…… 玩家须要操纵一个以斜向下四十五度速度v不停前进的三角胞,不停地避开水平障碍物,每次点击屏幕能够变换行进方向。[能够将斜向左(右)45°变换为斜向右(左)45°] 如今,有n层障碍物。第i层障碍物能够从横坐标l[i]~r[i]的范围内穿过去(包含l[i]与r[i]),第i层障碍物与第i-1层障碍物之间的距离为d[i]。 请问,假定在能够无限变换方向的条件下,最多能够前进至第几层? 我们规定玩家出生位置为第0层、横坐标为0的地方。 你能够在随意实数时刻进行方向变换。

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]” 因此d[1]是第一层和第零层的距离。 例子1解释例如以下: 我们能够出生位置向右下移动至第一层坐标为1的地方。 接下来能够继续一直向右下移动至第二层坐标为6的地方。 但不管怎样也无法移动至第三层的8~10之间。 例子2说明例如以下: (0,0)->(1,1)->(2,2)->(3,1)->(4,3) 因此到达第四层。

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;
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116288.html原文链接:https://javaforall.cn

原网站

版权声明
本文为[全栈程序员站长]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/2043303