CF1550A Find The Array(贪心算法)

简介: CF1550A Find The Array(贪心算法)

Let's call an array a  consisting of nn positive (greater than 00) integers beautiful if the following condition is held for every ii from  1 to  n: either ai=1  or at least one of the numbers ai−1  and ai−2  exists in the array as well.


For example:


  • the array [5,3,1] is beautiful: for a1 , the number a1−2=3 exists in the array; for  a2, the number a2−2=1 exists in the array; for  a3, the condition a3=1 holds;
  • the array [1,2,2,2,2] is beautiful: for  a1, the condition a1=1  holds; for every other number  ai, the number ai−1=1  exists in the array;
  • the array [1,4]  is not beautiful: for a2 , neither a2−2=2  nor a2−1=3  exists in the array, and  a2≠1;
  • the array [2]  is not beautiful: for a1 , neither  a1−1=1 nor  a1−2=0 exists in the array, and a1≠1
  • the array [2,1,3] is beautiful: for a1 , the number a1−1=1  exists in the array; for  a2, the condition a2=1  holds; for  a3, the number a3−2=1  exists in the array.


You are given a positive integer ss. Find the minimum possible size of a beautiful array with the sum of elements equal to  s.


Input


The first line contains one integer t  (1≤t≤5000 ) — the number of test cases.


Then t lines follow, the i-th line contains one integer  s (1≤s≤5000 ) for the  i-th test case.


Output


Print tt integers, the  i-th integer should be the answer for the i -th testcase: the minimum possible size of a beautiful array with the sum of elements equal to ss.


Example


Input


4

1

8

7

42


Output


1

3

3

7


Note


Consider the example test:


  1. in the first test case, the array [1] meets all conditions;
  2. in the second test case, the array [3,4,1] meets all conditions;
  3. in the third test case, the array [1,2,4] meets all conditions;
  4. in the fourth test case, the array  [1,4,6,8,10,2,11] meets all conditions.


题目分析就是我们


一个数组 a 是好的当且仅当数组内每一个数  ai 满足:  ai=1 或   ai−1=aj 或  ai−2=aj 。


给出一个好数组的元素之和 x  ,求好数组的元素个数最小值。  


思路



本题用贪心做,每次放的数尽量大,即每个数比前一个数多 2  。如果最后一个数放不下,那么就把最后一个数减小到刚好放下,元素个数不变。


具体实现看代码

 

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int t;
  cin>>t;
  while(t--)
  {
    int n,sum1=0,sum2=0;
    cin>>n;
    for(int i=1;i<=500000;i+=2)
    {
      sum1+=i;
      sum2++;
    if(sum1>=n)
    {
      cout<<sum2<<endl;
      break;
    }
    }
  }
}
相关文章
|
8月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Leetcode Find Minimum in Rotated Sorted Array 题解
对一个有序数组翻转, 就是随机取前K个数,移动到数组的后面,然后让你找出最小的那个数,注意,K有可能是0,也就是没有翻转。
132 0
|
搜索推荐 算法 PHP
PHP 数组(Array) - 排序算法
PHP 数组(Array) - 排序算法
218 0
|
JavaScript 前端开发 索引
Array类型【find】
Array类型【find】
191 0
|
Shell Linux 索引
Linux- 转换 find 命令的返回值为 shell array
本文示例了如何在Linux系统下转换 find 命令的返回值为一个 shell array
430 0
|
算法
LeetCode Find Minimum in Rotated Sorted Array II
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 注意数组中可能存在重复的元素。
141 0
LeetCode Find Minimum in Rotated Sorted Array II
LeetCode 153. Find Minimum in Rotated Sorted Array
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 你可以假设数组中不存在重复元素。
156 0
LeetCode 153. Find Minimum in Rotated Sorted Array
LeetCode contest 200 5476. 找出数组游戏的赢家 Find the Winner of an Array Game
LeetCode contest 200 5476. 找出数组游戏的赢家 Find the Winner of an Array Game

热门文章

最新文章

  • 1
    Java 中数组Array和列表List的转换
    569
  • 2
    JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
    546
  • 3
    通过array.reduce()实现数据汇总、条件筛选和映射、对象属性的扁平化、转换数据格式、聚合统计、处理树结构数据和性能优化,reduce()的使用详解(附实际应用代码)
    1296
  • 4
    通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
    375
  • 5
    通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
    241
  • 6
    多维数组操作,不要再用遍历循环foreach了!来试试数组展平的小妙招!array.flat()用法与array.flatMap() 用法及二者差异详解
    146
  • 7
    别再用双层遍历循环来做新旧数组对比,寻找新增元素了!使用array.includes和Set来提升代码可读性
    173
  • 8
    Array.forEach实战详解:简化循环与增强代码可读性;Array.forEach怎么用;面对大量数据时怎么提高Array.forEach的性能
    124
  • 9
    深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
    428
  • 10
    JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
    790