• VK Cup 2016


    B. Bear and Displayed Friends

    题目连接:

    http://www.codeforces.com/contest/658/problem/B

    Description

    Limak is a little polar bear. He loves connecting with other bears via social networks. He has n friends and his relation with the i-th of them is described by a unique integer ti. The bigger this value is, the better the friendship is. No two friends have the same value ti.

    Spring is starting and the Winter sleep is over for bears. Limak has just woken up and logged in. All his friends still sleep and thus none of them is online. Some (maybe all) of them will appear online in the next hours, one at a time.

    The system displays friends who are online. On the screen there is space to display at most k friends. If there are more than k friends online then the system displays only k best of them — those with biggest ti.

    Your task is to handle queries of two types:

    "1 id" — Friend id becomes online. It's guaranteed that he wasn't online before.
    "2 id" — Check whether friend id is displayed by the system. Print "YES" or "NO" in a separate line.
    Are you able to help Limak and answer all queries of the second type?

    Input

    The first line contains three integers n, k and q (1 ≤ n, q ≤ 150 000, 1 ≤ k ≤ min(6, n)) — the number of friends, the maximum number of displayed online friends and the number of queries, respectively.

    The second line contains n integers t1, t2, ..., tn (1 ≤ ti ≤ 109) where ti describes how good is Limak's relation with the i-th friend.

    The i-th of the following q lines contains two integers typei and idi (1 ≤ typei ≤ 2, 1 ≤ idi ≤ n) — the i-th query. If typei = 1 then a friend idi becomes online. If typei = 2 then you should check whether a friend idi is displayed.

    It's guaranteed that no two queries of the first type will have the same idi becuase one friend can't become online twice. Also, it's guaranteed that at least one query will be of the second type (typei = 2) so the output won't be empty.

    Output

    For each query of the second type print one line with the answer — "YES" (without quotes) if the given friend is displayed and "NO" (without quotes) otherwise

    Sample Input

    4 2 8
    300 950 500 200
    1 3
    2 4
    2 3
    1 1
    1 2
    2 1
    2 2
    2 3

    Sample Output

    NO
    YES
    NO
    YES
    YES

    Hint

    题意

    有一个人在聊天,现在有n个人,这个屏幕上最多显示k个人,有q次询问。

    这个屏幕最多显示k个人,如果有超过k个人在线,那么就只会显示前k个权值最大的人

    现在有q次询问,有两个操作

    1 x x人上线

    2 y 问y在不在屏幕上

    题解:

    用一个权值树状数组去维护这个人是目前的第几名就好了

    不过这道题没有下线操作,所以感觉离线去做更简单一点……

    代码

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 2e5+6;
    
    int a[maxn];
    int lowbit(int x)
    {
        return x&(-x);
    }
    void update(int x,int v)
    {
        for(int i=x;i<maxn;i+=lowbit(i))
            a[i]+=v;
    }
    int get(int x)
    {
        int tot = 0;
        for(int i=x;i;i-=lowbit(i))
            tot+=a[i];
        return tot;
    }
    pair<int,int> C[maxn];
    int ha[maxn],flag[maxn];
    int main()
    {
        int n,k,q;
        scanf("%d%d%d",&n,&k,&q);
        for(int i=1;i<=n;i++)
        {
            int x;scanf("%d",&x);
            C[i]=make_pair(x,i);
        }
        sort(C+1,C+1+n);
        for(int i=n;i>=1;i--)
            ha[C[i].second]=n-i+1;
        for(int i=1;i<=q;i++)
        {
            int op,x;
            scanf("%d%d",&op,&x);
            if(op==1)
            {
                flag[x]=1;
                update(ha[x],1);
            }
            else
            {
                if(flag[x]==0)
                    printf("NO
    ");
                else
                {
                    int p = get(ha[x]);
                    if(p<=k)printf("YES
    ");
                    else printf("NO
    ");
                }
            }
        }
    }
  • 相关阅读:
    K2 BPM_携手东航物流,领跑全球航空物流业_全球领先的工作流引擎
    K2 BPM_如何将RPA的价值最大化?_全球领先的工作流引擎
    Sqlserver 增删该查----查
    U3D Resources AssetBundle资源打包
    Sqlserver 触发器
    Sqlserver 游标
    U3D 协程和www
    U3D 数据在安卓设备上的存储,加载
    U3D SQLite数据库
    U3D 装备的添加和移除(Unity3D)
  • 原文地址:https://www.cnblogs.com/qscqesze/p/5331767.html
Copyright © 2020-2023  润新知