A. Find The Array
題目:https://codeforces.com/contest/1550/problem/A
Let’s call an array a consisting of n positive (greater than 0) integers beautiful if the following condition is held for every i 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 s. 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 t 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 s.
Example
input
4
1
8
7
42
output
1
3
3
7
Note
Consider the example test:
in the first test case, the array [1] meets all conditions;
in the second test case, the array [3,4,1] meets all conditions;
in the third test case, the array [1,2,4] meets all conditions;
in the fourth test case, the array [1,4,6,8,10,2,11] meets all conditions.
一道。。。簡單的構造序列題。。我竟然用回溯法搞了半天還超時。。。。菜到家了
題目意思:
給你一個n,要你求一個最短的序列和等于n,里面的元素要滿足ai = 1 或 ai - 1,ai - 2的數已經在序列里面。。
可以構造成 1+3+5+7+…+2d-1 = n^2,通過這個我們知道至少要根號s個數,那么令根號s=d(取上整),則1+3+5+…+2d-3 = (d-1)的平方,而且1 <= s - (d-1)的平方 <= 2d-1, 通過這個式子就可以找到最小的序列數,(這里的s應該指的是你輸入的數,加個根號取上整就是最小序列數,因此我們可以反過來,當遇到一個數的平方大于s時那么這個數就是要求的結果)
AC代碼:
#include <iostream> using namespace std;int main(){int t;cin >> t;while(t--){int n;cin >> n;int ans = 1;while(ans*ans < n){ans+=1;}cout << ans << endl;}return 0; }總結
以上是生活随笔為你收集整理的A. Find The Array的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手绘html模板,网页设计中的手绘运用
- 下一篇: 校园综合能效管理平台建设的意义-Susi