数袋鼠好有趣

2024-01-13 19:38
文章标签 有趣 袋鼠

本文主要是介绍数袋鼠好有趣,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个题目需要将袋鼠按照体型从大到小排序之后,将前一半体型较大的与后面一半体型较小的比较,如果前者是后者体型的两倍(或更大)就将袋鼠的数目减一,最后输出剩余袋鼠数量

这时我用的几组测试数据:

6

9 8 6 4 3 1 输出 3

5

9 4 1 1 1 输出3

有n只袋鼠。每只袋鼠的大小用一个整数表示。一只小袋鼠能装进一只大袋鼠的条件是,大袋鼠的大小至少是小袋鼠的两倍。

每只大袋鼠最多可以装一只袋鼠。小袋鼠被装进大袋鼠之后就不能再装其它的袋鼠了。

小袋鼠被装进大袋鼠之后就不能被我们看见了。请找出一个装袋鼠的方案,使得被看见的袋鼠最少。


Input
单组测试数据。 
第一行包含一个整数n(1≤n≤5*10^5)。 
接下来n行,每行一个整数si,表示第i只袋鼠的大小 (1≤si≤10^5)。
Output
输出一个整数,即最少能看见的袋鼠数量。
Sample Input
8
2
5
7
6
9
8
4
2
Sample Output
5
队列实现:

#include<stdio.h>
#include<queue>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{return a>b;
}
int reco[500005]={0};
int main()
{int n,num,i,cnt=0;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&reco[i]);}sort(reco+1,reco+n+1,cmp);queue<int> q_max,q_min;if(n&1)num=n+1;elsenum=n;for(i=1;i<=num/2;i++)q_max.push(reco[i]);for(;i<=n;i++)q_min.push(reco[i]);while(1){while(q_max.front()>=2*q_min.front()){cnt++;q_max.pop();q_min.pop();if(q_max.empty()||q_min.empty())break;}if(q_max.empty()||q_min.empty())break;while(q_max.front()<2*q_min.front()){cnt++;q_min.pop();if(q_max.empty()||q_min.empty())break;}if(q_max.empty()||q_min.empty())break;}printf("%d",q_max.size()+q_min.size()+cnt);return 0;
}
数组实现:

#include<stdio.h>
#include<stdlib.h>
#include<queue>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{return a>b;
}
int reco[500005]={0};
int main()
{int n,num,i,j,ans;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&reco[i]);}sort(reco+1,reco+n+1,cmp);num=n,ans=n;if(num&1)num++;for(i=num/2+1,j=1;j<=num/2&&i<=n;i++){if(reco[j]>=2*reco[i]){j++;ans--;}}	printf("%d",ans);return 0;
}





这篇关于数袋鼠好有趣的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/602560

相关文章

从网易校招编程题谈起,轻松理解有趣的0-1背包问题

从网易的一道算法题开始 最近在准备春招实习,偶然做到网易的一道编程题,一方面找了很多博客看的云里雾里,这里特别写下解题的思路和逻辑,一方面加深印象,另一方面供需要的你学习参考。好了,话不多说,开始吧。本文提供思路,并给出Java代码实现例子,供大家参考。 先睹为快 来源:网易2017春招笔试真题编程题 时间限制:1秒 空间限制:32768K 一种双核CPU的两个核能够同时的处理任务,现在有

类与接口的一个有趣程序例子

面向对象编程中,类和接口是最基础的两个概念了。下面写一个简单的程序,分别演示使用基类与接口如何编写程序。程序很简单,不用过多解释,直接上代码了。广大程序员兄弟们一定能够明白是什么意思吧。 先是类的方式。 <?php/*** 类模式老婆* Wife基类*/class Wife {public function Cook($howToCook, $vegetableArray) {$this-

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?!

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?! 1 背景概述 最近协助一个小兄弟排查了某作业使用 sqoop 采集 oracle 数据的失败问题,问题现象,问题原因和解决方法都挺直观,但在此过程中发现了一个有趣的 Oracle JDBC 驱动包命名问题,不留意还真不好发现,故在次跟大家分享下。 2 问题现象 某 sqoop import 作

为数据安全护航,袋鼠云在数据分类分级上的探索实践

在大数据时代,数据具有多源异构的特性,且价值各异,企业需依据数据的重要性、价值指数等予以区分,以利采取不同的数据保护举措,避免数据泄露。故而,数据分类分级管理属于数据安全保护中极为重要的环节之一。 什么是数据分类分级? 从业务角度或数据管理的方向来考量数据分类,涵盖行业维度、业务领域维度、数据来源维度、共享维度、数据开放维度等等。与此同时,依据这些维度,把具有相同属性或特征的数据,按照特定的原

printf有趣的\033

目录(?)[-] printf有趣的033 代码分析 printf有趣的\033 1 2 3 4 5 int main ( int argc , char * * argv ) {          printf ( "\033[44;37;5m hello world\033[0m\n" ) ;          retu

有趣且重要的JS知识合集(22)树相关的算法

0、举例:树形结构原始数据  1、序列化树形结构  /*** 平铺序列化树形结构* @param tree 树形结构* @param result 转化后一维数组* @returns Array<TreeNode>*/export function flattenTree(tree, result = []) {if (tree.length === 0) {return result}

有趣的傅里叶变换与小波变换对比(Python)

不严谨的说,时域和频域分析就是在不同的空间看待问题的,不同空间所对应的原子(基函数)是不同的。你想一下时域空间的基函数是什么?频域空间的基函数是什么?一般的时-频联合域空间的基函数是什么?小波域空间的基函数是什么? 有的空间域比较容易分析,有的空间域不容易分析。 举个例子吧,首先加载一个双曲Chirp信号,数据的采样频率为2048Hz,第一个Chirp信号持续时间为0.1~0.68秒,第二个C

有趣网站推荐-Rainymood

听着下雨声,内心会平静许多,不知道你是否会有这种感受。 下雨声可以帮助人们放松神经,专注思考,或者只是享受一段安静的时刻,在繁忙的工作和生活间隙。 本期推荐网站Rain Mood 干净简洁的网站,只为听雨声而来。 开始播放,闭上眼,享受片刻的宁静吧。 网址: Rainy Mood • #1 Rain Sounds • Sleep & Study

PHP的两个特性导致waf绕过注入(有趣的知识点)

1、HPP HTTP参数污染 HTTP参数污染指的是,在URL中提交相同键值的两个参数时,服务器端一般会进行一些处理。比如Apache就要以最后一个参数为准,比如: user.php?id=111&id=222 如果输出$_GET数组,则id的值只会取222,即URL上提交的多余值覆盖了前一个值。 2、一个CTF题目 http://drops.wooyun.

技本功丨智能监控,在袋鼠云日志运用中都经历了什么……

作者:大鹏,袋鼠云日志团队后端开发工程师   传统监控范围小,智能监控效率高,你说到底怎么用?大鹏给你来支招~ 传统监控是通过对监控项设置一个固定值(阈值),当监控项指标超过这个阈值时就通知人们关注这个指标项。传统监控一般适用于一定范围波动的业务指标: 比如磁盘的使用率,CPU的使用率等,当指标超过一定值时就意味着系统可能出现故障,但是遇到波动范围比较大的场景时;比如某银