【链接】 我是链接,点我呀:)
【题意】

如果a[i]*2<=a[j]那么i袋鼠可以装进j袋鼠里面
每只袋鼠都只能装一只袋鼠

【题解】

假设最后的方案是(ai,bi)
这里(ai,bi)表示下标为ai的袋鼠可以装进下标为bi的袋鼠里面
(这里袋鼠已经按照大小从小到大排序了)
则我们会发现,如果有(a1,b1),(a2,b2)...(ak,bk)这些方案的话(且这些方案合法)
我们总能让这个方案变成
a1~ak=1,2,3...k
b1~bk=n-k+1,n-k+2,n-k+3...n
因为对于每个(ai,bi)
ai只会减小,bi只会增大
那么下标为ai的袋鼠肯定还是小于下标为bi的袋鼠.
所以我们可以这么认为:
我们只会选择体型最小的x只袋鼠和体型最大的x只袋鼠进行配对装载
显然x<=n/2
我们可以二分x的值
然后看看a[i]<a[n-i+1]对于i∈[1..x]是否成立
或者可以这样
因为只会在1..n/2这个区间里选择被装载的袋鼠
所以我们可以贪心的从大到小给a[n],a[n-1]..a[n/2+1]这些"大袋鼠"分配它们装载的小袋鼠.
比如给a[n]分配"小"袋鼠的时候,我们可以试试a[n/2],如果不行,那么显然a[n/2]不能分配给任何一只其他袋鼠了(大的都不行,小的肯定也不行了),则我们继续试a[n/2-1]...以此类推

另外一种错误的思路:
从大到小给每只袋鼠a[i]分配一个最大的且它能装得下的袋鼠a[j].
这种思路错误在于a[j]可能还可以给更小的袋鼠a[k]分配,
但是你把a[j]装下去了,可能除了a[j],a[i]之外没有其他袋鼠能装得下a[k]了。
比如例子:2 2 4 9
答案是2,但如果按照刚才说的错误思路的话,得到的答案会是3,因为9装了4之后,没有人能装2了

【代码】

import java.io.*;
import java.util.*;public class Main {static InputReader in;static PrintWriter out;public static void main(String[] args) throws IOException{//InputStream ins = new FileInputStream("E:\\rush.txt");InputStream ins = System.in;in = new InputReader(ins);out = new PrintWriter(System.out);//code start from herenew Task().solve(in, out);out.close();}static int N = (int)5e5;static class Task{int n;int s[];public void solve(InputReader in,PrintWriter out) {s = new int[N+10];n = in.nextInt();for (int i = 1;i <= n;i++) {s[i] = in.nextInt();}Arrays.sort(s, 1,n+1);int x = 0;int j = n;for (int i = n/2;i >= 1;i--) {if (s[i]*2<=s[j]){x++;j--;}}out.println(n-x*2 + x);}}static class InputReader{public BufferedReader br;public StringTokenizer tokenizer;public InputReader(InputStream ins) {br = new BufferedReader(new InputStreamReader(ins));tokenizer = null;}public String next(){while (tokenizer==null || !tokenizer.hasMoreTokens()) {try {tokenizer = new StringTokenizer(br.readLine());}catch(IOException e) {throw new RuntimeException(e);}}return tokenizer.nextToken();}public int nextInt() {return Integer.parseInt(next());}}
}

【Codeforces 372A】Counting Kangaroos is Fun相关推荐

  1. 【CodeForces - 144C】Anagram Search(尺取,滑窗问题,处理字符串计数)

    题干: A string t is called an anagram of the string s, if it is possible to rearrange letters in t so ...

  2. 【CodeForces - 574B】Bear and Three Musketeers (枚举边,思维,优秀暴力)

    题干: Do you know a story about the three musketeers? Anyway, you will learn about its origins now. Ri ...

  3. 【CodeForces - 608C】Chain Reaction (二分 或 dp ,思维)

    题干: 题目大意: 题意是在一条直线上坐落着不同位置的灯塔,每一个灯塔有自己的power level,当作是射程范围.现在从最右边的灯塔开始激发,如果左边的灯塔在这个灯塔的范围之内,那么将会被毁灭.否 ...

  4. 「一题多解」【CodeForces 85D】Sum of Medians(线段树 / 分块)

    题目链接 [CodeForces 85D]Sum of Medians 题目大意 实现一个setsetset,支持插入,删除,求∑a5k+3∑a5k+3\sum a_{5k+3}.注意,setsets ...

  5. 【CodeForces 997C】Sky Full of Stars(组合计数)

    题目链接:[CodeForces 997C]Sky Full of Stars 官方题解:Codeforces Round #493 - Editorial 题目大意:有一个n×nn×nn\times ...

  6. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  7. 【codeforces 508B】Anton and currency you all know

    [题目链接]:http://codeforces.com/contest/508/problem/B [题意] 给你一个奇数; 让你交换一次数字; 使得这个数字变成偶数; 要求偶数要最大; [题解] ...

  8. 【codeforces 711B】Chris and Magic Square

    [题目链接]:http://codeforces.com/contest/711/problem/B [题意] 让你在矩阵中一个空白的地方填上一个正数; 使得这个矩阵两个对角线上的和; 每一行的和,每 ...

  9. 【codeforces 807C】Success Rate

    [题目链接]:http://codeforces.com/contest/807/problem/C [题意] 给你4个数字 x y p q 要求让你求最小的非负整数b; 使得 (x+a)/(y+b) ...

  10. 【codeforces 766E】Mahmoud and a xor trip

    [题目链接]:http://codeforces.com/contest/766/problem/E [题意] 定义树上任意两点之间的距离为这条简单路径上经过的点; 那些点上的权值的所有异或; 求任意 ...

最新文章

  1. 使用Native API 创建进程
  2. Dom方法,解析XML文件
  3. LeetCode 496. 下一个更大元素 I 解题思路及C++实现
  4. Linux上安装Bugfree系统
  5. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第4章-具有随机扰动的多智能体系统脉冲一致性
  6. JS+HTML画图的几种方法
  7. Not using the local TSLint version found for XXX
  8. 打破行业壁垒!阿里云OpenSearch开启个性化搜索里程碑
  9. 68 个人脸landmark 点分布图
  10. Java简单ztree树
  11. 面试字节跳动社招,我工资涨了60%,附带面经
  12. LoadRunner 11简单使用
  13. 在.net framework程序中承载asp.net core
  14. gsonformat安装怎么使用_json解析—Gson以及GsonFormat插件的运用
  15. [每天进步一点点~] px、rpx、pt之间的转换
  16. matlab2014如何获得hostid,hostid.c/获取主机标识
  17. NTFS分区和FAT32分区区别
  18. 春分时节,迎一场春暖花开
  19. xml文件解析的三种方式
  20. 摄像头视频监控是如何与流媒体服务器云平台连接的?

热门文章

  1. Credential Harvester Attack Method获得用户信息
  2. 《面向对象分析与设计》一3.7 例题
  3. 数组之concat注意事项-不更改原数组
  4. 机器学习入门——加州房价问题
  5. Golang创建DLL
  6. pancake-frontend(薄饼)二次开发
  7. mac php 单元测试,PHPUnit单元测试
  8. 【每日一P】简单实用的调色原理
  9. android导出微信朋友圈怎么发文字,微信朋友圈气泡字怎么弄 微信朋友圈气泡文字生成教程...
  10. HDU 6638 Snowy Smile 线段树+最大子段和