题解绝地求生

Posted kcn999

tags:

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

题目描述

        小飞最近迷上了一个叫绝地求生的游戏。不过他的技术并不好,假设他的战斗力是x。不过,他的战斗力是由心情来定的,每天都不同。现有一群(1≤n≤100000)也是玩绝地求生的朋友,他们也有战斗力。小飞想找一些比自己强的人玩,提高自己的战斗力,如:小烨,小祖,小明等。

       小飞一共玩了m天,假设其他人的战斗力不变。问:小飞每天可以找到多少比自己强的人。

 

输入输出格式

输入格式

        第一行,输入一个n,表示有n个朋友;(1≤n≤100000)

        第二行输入n个朋友的战斗力;每个朋友战斗力不超过long int(已有序);

        第三行输入一个m,表示有m天;(1≤m≤100000)

        接下来m行,表示小飞每天的战斗力;(小飞战斗力不超过int范围)。

 

输出格式 

       共m行,每一行小飞每天找到的人数。

 

输入输出样例

输入样例

5

1 1 3 5 5

3

0

2

5

 

输出样例

5

3

0

 

题解

       二分查找模板题,暴力即可。

技术图片
#include<iostream>
using namespace std;
int n,m,a[100005],k[100005],mid;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    cin>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>k[i];
    }
    for(int i=1;i<=m;i++)
    {
        for(int low=0,high=n+1;;)
        {
            mid=(low+high)/2;
            if(mid==low||mid==high)
            {
                cout<<n-mid;
                break;
            }
            else if(a[mid]<=k[i])
            {
                if(a[mid+1]>k[i])
                {
                    cout<<n-mid;
                    break;
                }
                else
                {
                    low=mid;
                }
            }
            else
            {
                if(a[mid-1]<=k[i])
                {
                    cout<<n-mid+1;
                    break;
                }
                else
                {
                    high=mid;
                }
            }
        }
        if(i<m) cout<<endl;
    }
    return 0;
} 
参考程序

 

以上是关于题解绝地求生的主要内容,如果未能解决你的问题,请参考以下文章

绝地求生全军出击电脑版怎么玩?绝地求生全军出击安卓模拟器攻略

网吧上网小心绝地求生账号被盗

你不知道的《绝地求生》,外挂战的实质是货币战争

绝地求生怎么才能自己设置自定义服务器?

绝地求生bug大全

《木筏求生》怎么存档 木筏求生绝地生存Raft存档位置介绍