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;
    }
    }
  }
}
相关文章
|
9月前
|
机器学习/深度学习
CF1552A Subsequence Permutation(string排序大法)
CF1552A Subsequence Permutation(string排序大法)
26 0
|
9月前
|
算法 应用服务中间件 AHAS
CF1321C Remove Adjacent(周围串删除)(贪心算法)
CF1321C Remove Adjacent(周围串删除)(贪心算法)
33 0
|
10月前
|
JavaScript 前端开发 索引
Array类型【find】
Array类型【find】
65 0
|
11月前
|
人工智能
CF1660C Get an Even String(贪心)
CF1660C Get an Even String(贪心)
79 0
|
vr&ar
CF482B. Interesting Array(线段树)
CF482B. Interesting Array(线段树)
50 1
CF1181B.Split a Number(贪心+高精度)
CF1181B.Split a Number(贪心+高精度)
66 0
CF1286B.Numbers on Tree(构造 dfs)
CF1286B.Numbers on Tree(构造 dfs)
73 0
|
算法 容器
常用查找算法 find() find_if() adjacent_find() binary_search() count() count_if()
常用查找算法 find() find_if() adjacent_find() binary_search() count() count_if()
【1048】Find Coins (25 分)
【1048】Find Coins (25 分) 【1048】Find Coins (25 分)
90 0
|
机器学习/深度学习 人工智能
LeetCode之Find All Numbers Disappeared in an Array
LeetCode之Find All Numbers Disappeared in an Array
81 0