OJ2178RP俱乐部

Posted farway17

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OJ2178RP俱乐部相关的知识,希望对你有一定的参考价值。

2178 -- RP俱乐部(Solution)

题目大意 :(n) 个人,每个人有两个属性 (RP)(ID) ,保证 (RP)(ID) 互不相同。第 (i) 个人与前 (i-1) 个人中 (RP) 与他差值最小的人比赛(如果差值相同则选择 (RP) 更小的)。求每场比赛双方的 (ID) 。(最开始有一个人(ID=1, RP=10^9)((nle2 imes 10^5,, ID,RPleq10^9))

Tag: STL

Analysis By LC:

将每个人的信息存入 ( m set) ,利用 ( m set) 中的 ( m lower\_bound) 找到第一个大于和第一个小于即可。

Code By LC :

#include<cstdio>
#include<set>
#include<algorithm>
using namespace std;
inline int _read()
{
    char c; int x=0;
    for(;c<'0'||c>'9';c=getchar());
    for(;c>='0'&&c<='9';c=getchar())x=(x<<1)+(x<<3)+c-'0';
    return x;
}
const int N=200005;
struct Node
{
    int id,rp;
}a[N];
bool operator < (Node x, Node y)
{
    if(x.rp==y.rp) return x.id>y.id;
    return x.rp<y.rp;
}
set<Node> s;
int main()
{
    int n=_read(); s.insert((Node){1,1000000000});
    for(int i=1;i<=n;i++)
    {
        Node u;
        u.id=_read(),u.rp=_read();
        printf("%d ",u.id);
        auto x=s.lower_bound(u);
        if(x->rp==u.rp||x==s.begin()) printf("%d
",x->id);
        else
        {
            auto y=x; y--;
            if(u.rp-y->rp>x->rp-u.rp) printf("%d
",x->id);
            else printf("%d
",y->id);
        }
        s.insert(u);
    }
}

以上是关于OJ2178RP俱乐部的主要内容,如果未能解决你的问题,请参考以下文章

湍流基于matlab kolmogorov结合次谐波补偿大气湍流相位屏含Matlab源码 2178期

BZOJ 2178 圆的面积并 ——Simpson积分

5V 200MA无线门铃电源IC方案LP2178A非隔离

5V 200MA无线门铃电源IC方案LP2178A非隔离

HDU 2178 猜数字

九度oj 题目1397:查找数段