• SSLZYC 溜冰


    题目大意:
    一个国际溜冰比赛的赛道长L米。在起点选手的速度是1米/秒,但速度是可以改变的,在每一米的速度可以是前一米的速度加1、减1,或者等于前一米的速度。在滑行的过程中,选手会遇到N个转弯处,第i个转弯处位于距离出发点D[i]米处。为了安全,选手到达第i个转弯处的速度不能超过S[i]米/秒。选手到达终点时的速度没有最大限制。请你帮忙计算选手溜冰过程中最大的速度是多少?
    下面的例子,距开始7米处限速为3、11米处限速为1、13米处限速为8,如下图:
    这里写图片描述


    思路:
    没思路。。。。。。
    这道题一看就是暴力模拟,分两种情况:
    (1)前一个拐弯点一直上升到下一个拐弯点。
    (2)前一个拐弯点先上升后下降到下一个拐弯点。
    就可以利用n+2(起点和终点也算)个拐弯点确定答案。


    代码:

    #include <cstdio>
    #include <iostream>
    using namespace std;
    
    int n,m,maxn,x,a[100001],b[100001];
    
    void sorts(int l,int r)  //快排
    {
        int i=l;
        int j=r;
        int z=b[(i+j)/2];
        do
        {
            while (b[i]<z) i++;
            while (b[j]>z) j--;
            if (i<=j)
            {
                swap(a[i],a[j]);
                swap(b[i],b[j]);
                i++;
                j--;
            } 
        }
        while(i<=j);
        if (i<r) sorts(i,r);
        if (j>l) sorts(l,j);
    }
    
    int main()
    {
        freopen("skate.in","r",stdin);
        freopen("skate.out","w",stdout);
        scanf("%d%d",&n,&m);
        for (int i=1;i<=m;i++)
        {
            scanf("%d%d",&b[i],&a[i]);
        }
        sorts(1,m); 
        a[0]=1; 
        b[0]=0; 
        a[m+1]=n+1; 
        b[m+1]=n;  //初始化
        for (int i=m;i>=1;i--) 
         a[i]=min(a[i],a[i+1]+b[i+1]-b[i]);  //判断:若上一个转弯点一直减速也无法低于下一个转弯点的速度就更改上一个转弯点的最大速度
        for (int i=1;i<=m+1;i++)
        {
            if (a[i]-a[i-1]>=b[i]-b[i-1]) 
            {
                if (a[i]>a[i-1]+b[i]-b[i-1]) a[i]=a[i-1]+b[i]-b[i-1];  //一直加速的情况
                maxn=max(maxn,a[i]);
            }
            else 
            {
                x=(int)(b[i]-b[i-1]+a[i]+a[i-1])/2;  //先加速后减速的情况
                maxn=max(maxn,x); 
            }
        }
        printf("%d\n",maxn);
        return 0;
    }
  • 相关阅读:
    汇编结合vc6的使用
    QT textbroswer textedite Qlist的常用的操作函数
    QT Qdialog的对话框模式以及其关闭
    QT生成的exe在其他电脑打开
    c++实现服务器和多个客户端的实时群聊通信
    c++ 实时通信系统(基础知识TCP/IP篇)
    c++的并发操作(多线程)
    六种Socket I/O模型幽默讲解
    c++字符串的输入
    字符串 与其他数据类型的转换,以及字符创的常用操作
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/9313120.html
Copyright © 2020-2023  润新知