数袋鼠好有趣
来源:互联网 发布:八百字淘宝导购 编辑:程序博客网 时间:2024/05/01 11:41
有n只袋鼠。每只袋鼠的大小用一个整数表示。一只小袋鼠能装进一只大袋鼠的条件是,大袋鼠的大小至少是小袋鼠的两倍。
每只大袋鼠最多可以装一只袋鼠。小袋鼠被装进大袋鼠之后就不能再装其它的袋鼠了。
小袋鼠被装进大袋鼠之后就不能被我们看见了。请找出一个装袋鼠的方案,使得被看见的袋鼠最少。
Input
单组测试数据。第一行包含一个整数n(1≤n≤5*10^5)。接下来n行,每行一个整数si,表示第i只袋鼠的大小 (1≤si≤10^5)。
Output
输出一个整数,即最少能看见的袋鼠数量。
Input示例
825769842
Output示例
5
#include <iostream>#include <algorithm>#include <cstdio>using namespace std;const int MAXN = 5e5;int input[MAXN];int search(int left, int right, int k){int result = -1;while (left < right-1){int mid = left + (right-left)/2;if (input[mid] >= k){right = mid;}else{left = mid;}}if (input[left] >= k){result = left;}else if (input[right] >= k){result = right;}return result;}int main(int argc, const char * argv[]){ int n; cin >> n; for (int i = 0; i < n; i++) { cin >> input[i]; } sort(input, input + n); int right = search(0, n, 2 * input[0]);if (right == -1){cout << n << endl;return 0;} int count = 0; for (int i = 0; i < n / 2; i++) {while (right < n){if (input[right] >= 2*input[i]){break;}right++;} if (right < n) { count++;right++; }else{break;} } cout << n - count << '\n'; return 0;}
阅读全文
0 0
- 数袋鼠好有趣
- 数袋鼠好有趣
- 1420 数袋鼠好有趣
- 1420 数袋鼠好有趣
- 51nod 1420 数袋鼠好有趣
- 51nod1420 数袋鼠好有趣
- 51nod 1420 数袋鼠好有趣
- 51nod oj 1420 数袋鼠好有趣【贪心】
- 51Nod-1420-数袋鼠好有趣
- 51nod 1420 数袋鼠好有趣【贪心】
- 51nod 1420 数袋鼠好有趣(贪心)
- 51nod 1420 数袋鼠好有趣(贪心)
- 呵呵,好有趣(一)
- 有趣的数
- NYOJ - 有趣的数
- NYOJ85 有趣的数
- 有趣的数
- 85 有趣的数
- 数据结构排序算法
- 整数与字符串互转
- Python设计模式-桥接模式
- 20170623
- C语言实现简易网络进程及线程间通信
- 数袋鼠好有趣
- 根据bootmode设置usb的config(for Android)
- Appium之Appium1.6.x 安装配置及问题资料汇总
- MDM USB How-to
- android增删改查以及通知栏和定时任务简单的实现
- 修改pip install时,默认的安装源
- 学习mybatis框架中遇到org.apache.ibatis.exceptions.PersistenceException: 问题解决
- LeetCode(2)
- Android代码混淆加密配置(Proguard文件解析)