题解 AT5748 【Robot Arms】

\(Solution:\)

这道题基本上可以说是一道原题,详细内容参考这里,我们只需要稍微改动一部分就可以了,那就是在定义起点和终点的时候稍微算一下就可以了。那么为什么需要用每个区间的截止位置排序呢?因为当当前区间的截止为止越靠前后面留的空间也就越大,可以放下的区间也就越多,所以我们需要按每个区间的截止为止从小到大排序。

\(code:\)

#include//万能头文件
using namespace std;//标准数据库
inline int read()//快速读入
{
    int x=0;bool f=1;char c=getchar();
    if(c==EOF) return 0;
    while(c<'0' || c>'9'){if(c=='-') f=0;c=getchar();}
    while(c>='0' && c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
    return f?x:-x;
}
struct node//定义结构体
{
    int st,ed;//记录该区域起点与终点的数值
    bool operator < (const node &x)const//重载运算符
    {
        return ed=t)//如果下一个区间的开头大于当前区间结尾
        {
            ans++;//计数器++
            t=a[i].ed;//更新结束位置
        }
    }
    printf("%d\n",ans);//输出答案,因为是AT的题,所以记得换行
    return 0;
}

如果这篇文章给予了你帮助,那你就点个赞再走吧,Thanks♪(・ω・)ノ

PS:这回说明不过少了吧

你可能感兴趣的:(题解 AT5748 【Robot Arms】)