Codeforces Round #154 (Div. 2) B题(Physics Practical)

本文讨论了Codeforces Round #154 (Div. 2) B题的解决方案,该题要求通过删除最少的元素,使得剩余序列中满足y≤2*x的最小值对(x, y)存在。解题方法是先对序列排序,然后使用二分查找配合枚举计算所需删除的元素数量。博主反思自己的解题过程,表达了对比赛成绩的失望以及对错误策略的懊悔。" 111725539,10296810,Python3脚本检测HTTP/2支持,"['Python开发', '网络协议', '服务器配置', 'HTTP/2']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目来源:http://codeforces.com/problemset/problem/253/B

题意:给定一个序列,问删除最少的数,使得剩下的数中的最小值x和最小值y

使得y<=2*x;

思路:二分查找啊。。。先排序,然后枚举每个数num[i],并以num[i]作为新序列的第一个

元素,计算可以构成的序列的长度;然后用n减去新序列的长度就是需要删除的数量了;

感慨:又只过了一题啊,rating掉到谷底了啊,尼玛啊。。第二题稍微想了下就乱搞啊,

而且还是错误的方法。。真心SB啊。。用这篇博客记录再次被虐的一天。。。

//author Joy

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<cctype>
#include<algorithm>
#include<iostream>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<vector>
#define arrSize 100100
#define strSize 10100
#define gridSize 510
using namespace std;

const int MAXINF=1000000;
const int MININF=-1000000;
/*---------------分割线---------------*/
int bs(int a[], int l, int h, int v)
{
    int m;
    while ( l < h )
    {
        m = ( l + h ) >> 1;
        if (a[m] < v) l=m+1;
        else h=m;
    }
    return l;
}

int num[arrSize];

int main()
{
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    int n;
    while (~scanf("%d",&n))
    {
        int i,res=MAXINF;
        for (i=0;i<n;i++)
            scanf("%d",&num[i]);
        sort(num,num+n);

        for (i=0;i<n;i++)
        {
            int p=bs(num,i,n-1,num[i]*2);
            int q=p;
            //往上找 
           	while(p<=n-1&&num[i]*2>=num[p])
           		p++;
      		if (n-p+i<res)
                res=n-p+i;
            //往下找 
			while(q>i&&num[i]*2<num[q])
				q--;
            if (n-q+i<res)
                res=n-q+i;
        }
        printf("%d\n",res);
    }
    return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值