删除元素

时间限制:1000 ms  |  内存限制:65535 KB
描述

题意很简单,给一个长度为n的序列,问至少删除序列中多少个数,使得删除后的序列中的最大值<= 2*最小值

输入
多组测试数据,每组测试数据包含两行。
第一行一个整数n( n <= 10^5),序列中元素的个数。
第二行依次输入n个数a1,a2……an,(1 <= ai <= 10^9)以空格分开。
输出
输出占一行,至少要删除数的个数。
样例输入
6
5 4 3 3 8 6
样例输出
1

解题思路:先对n个数从小到大排序,然后枚举删除一些元素后剩余集合中最小的数Min,二分求出原集合大于2*Min的数的个数,然后即可求的当前要删除的元素个数,比较取最优的即可。

#include<stdio.h>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int Binary(int k, int n)
{int l = k, r = n;while(l < r){int mid = (l + r) / 2;if(a[mid] > 2*a[k])r = mid;elsel = mid + 1;}return  n - r;
}
int main()
{int n;while(~scanf("%d",&n)){int i, j;for(i = 0; i < n; i++)scanf("%d",&a[i]);sort(a,a+n);int ans = 1<<30;for(i = 0; i < n; i++){int s = i;s += Binary(i,n);ans = min(ans,s);}printf("%d\n",ans);}return 0;
}
//先排序,然后枚举删除一些元素后剩余集合中最小的数Min
//二分求原集合中大于2*Min的数的个数,进而即可求得当前要删除的元素个数
//比较去最优的即可

NYOJ练习题 删除元素(二分查找)相关推荐

  1. nyoj 776 删除元素

    删除元素 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 题意很简单,给一个长度为n的序列,问至少删除序列中多少个数,使得删除后的序列中的最大值<= 2*最小值 输 ...

  2. java数组二分查找的简单例题_Java基础-练习 数组元素二分查找(折半查找)

    图解: 二分折半查找使用前提是数组是有序. 题目分析: 通过观察发现,本题目要实现查找指定数值在元素有序的数组中存储的位置(索引),返回该位置(索引). 我们使用数组最中间位置的元素值与要查找的指定数 ...

  3. 二分查找算法(随机, 最左, 最右)

    二分查找算法 1. 普通二分查找 2.二分查找最左(第一次出现) 二分查找最左模板题 3.二分查找最右(最后一次出现) 4.二分查找练习题 1.定义 二分查找算法是一种效率较高的查找算法,每次查找能把 ...

  4. C语言二分查找算法[基础算法]

    该算法一般适用于查找数组元素 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少; 其缺点是要求待查表为有序表,且插入删除困难. 适用于不经常变动而查找频繁的有序列表. ...

  5. Leetcode(5)——遍历,并查集,回溯法和二分查找

    格式: 题号+题名+简单思路+code 遍历 深度优先遍历和广度优先遍历 很多dfs可以用Union Find解决 T130: 被围绕的区域 DFS的写法 func solve(board [][]b ...

  6. 【二分查找】有这一篇足够了

    目录 1.二分查找是干啥的 2. 力扣中的一些练习题 2.1 二分查找(两种方法定义 target 是在一个在左闭右闭的区间里,也就是[left, right] ) 2.2 第一个错误的版本 2.3 ...

  7. 二分查找(普通、找第一个、找最后一个)

    二分查找 二分查找在做算法题的时候经常使用到,一般会用于排序后的数组中的查找目标元素 二分查找的核心思想是「减而治之」,即「不断缩小问题规模」. 涉及到三种情况 (1)无重复数据的已排序数组寻找目标元 ...

  8. leetcode算法之二分查找

    LeetCode算法之二分查找 前言 对于算法一直抱有恐惧感,觉得没有算法我也写了这么多代码,但周遭的环境让我感觉目前身为一名浅薄知识的敲代码的人,是需要去不断的汲取一些知识,所以就像大学学习英语单词 ...

  9. 动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

     1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /**** ...

最新文章

  1. 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 ICLR 2021...
  2. C++ 覆盖方法、重载方法的理解
  3. NLP:语言模型与n元语法
  4. c语言的跳线帽,电脑主板上跳线帽有什么作用图文介绍
  5. 0c-38-ARC快速入门
  6. [leetcode]63. 不同路径 II
  7. uva 10755 Garbage Heap
  8. cvCanny() 边缘检测
  9. 使用python爬虫增加浏览量
  10. SuperMap iDesktop常见问题解答集锦 (二)
  11. 还说治理类项目不性感?这个DAO上线半年吸金700万美元
  12. 推荐几个最值得关注的可以投稿赚钱的微信公众号
  13. php 各种经典算法
  14. Convert Kilometers to Miles 2010.3.6
  15. JavaScript 进阶 35 -- 构造函数、原型对象、实例之间的关系详解
  16. ffmpeg安装过程记录
  17. 安卓app之按键美化
  18. 28 电子商务风险控制
  19. bzoj1202 狡猾的商人[并查集]
  20. 第三方支付平台BeeCloud

热门文章

  1. keepalived 构建主备mysql
  2. 青岛西海岸新区将建大数据交易中心
  3. FFmpeg编码扩展之————编码库的扩展(libfdk-aac)
  4. (二)线程同步_3---在类中使用相互独立的属性同步
  5. type=InnoDB ENGINE=InnoDB
  6. Tricks with Direct Memory Access in Java
  7. 一个需要原创精神的年代
  8. C#服务中Process的应用!
  9. 五年五件事,助我踏上寻梦路-追梦五年
  10. 三个免费图片网站:特别适合场景图