首页 > 其他分享 >P1719

P1719

时间:2023-05-18 22:55:06浏览次数:29  
标签:include int cin 距离 ++ result P1719

#include <iostream>
#include <cmath>
using namespace std;
#define N 300004
int d[N];
int distance(int n);
int main()
{
    //把每个要删除的数字的位置记录下来
    //并且计算出他们到自己前面的2的次方的距离
    //找到距离非0的位置,看前面有几个距离为0,若数量大于自己的距离,直接删除,若小于,则要取最大
    int n, k, j = 0, result = 0, t;
    cin >> n >> k;
    for (int i = 0; i < n; i++)
    {
        cin >> t;
        if (t == k)
            d[j++] = distance(i + 1); //记录每个值到最近的2的次方的距离+1 即删除该数所需的操作数
    }
    for (int i = 0; i < j; i++) //从左到右扫描指定值
    {
        if (!d[i] || d[i] < result)
            result++;
        else
            result = max(result, d[i]);
    }
    cout << result << endl;
}
int distance(int n)
{
    for (int i = 0; i < n; i++)
    {
        if (pow(2, i) == n)
            return 0;
        else if (pow(2, i) > n)
            return n - pow(2, i - 1) + 1;
    }
}

 

标签:include,int,cin,距离,++,result,P1719
From: https://www.cnblogs.com/lhf123/p/17413548.html

相关文章