(1).
上述代码返回在升序排序的序列a中第一个大于等于 t 的元素的地址.
示例:
(2)
上述代码返回在升序排序的序列a中第一个大于等于 t 的元素的下标.
示例:
P2249 【深基13.例1】查找
P2249 【深基13.例1】查找 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
输入 n 个不超过 1e9 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a1,a2,…,an,然后进行 m 次询问。对于每次询问,给出一个整数 q,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 −1 。
第一行 2 个整数 n 和 m,表示数字个数和询问次数。
第二行 n 个整数,表示这些待查询的数字。
第三行 m 个整数,表示询问这些数字的编号,从 1 开始编号。
输出一行,m 个整数,以空格隔开,表示答案。
输入
11 3 1 3 3 3 5 7 9 11 13 15 15 1 3 6
输出
1 2 -1
数据保证,1≤n≤1e6,0≤ai,q≤1e9,1≤m≤1e5
AC Code:
(1)
上述代码返回在升序排序的序列a中第一个大于 t 的元素的地址.
示例:
(2)
上述代码返回在升序排序的序列a中第一个大于 t 的元素的下标.
题目描述
今天,羊村要举行一次“知识竞赛”,很多羊都去参加了,村长见羊太多,决定先举行预选,选出一些人,再参加比赛,给出一个正整数M,求S=1+2+3+…+N的值中,符合条件S<=M的最大的N的值。如给出M的值为7,则N为3,因为1+2+3=6,1+2+3+4=10,所以符合S<=M的条件下,N的最大值为3。对于给定的M的值,喜羊羊很快就说出了符合条件的N的值。现在请你编写一个解决这个问题的程序。
输入
只有一个数,就是M的值。(M<=1000000000)
输出
只有一个数,就是符合题目条件的N的最大值。
样例输入
7
样例输出
3
思路:
开辟数组a表示数列每一项的值,sum数组表示前n项的和,s=(n+1)*n/2>n*n/2;所以N<=1e5.
AC Code:
P1102 A-B 数对 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:
A-B=C => A=B+C ,那么我们可以对于每一个确定的B,查找符合条件的A的个数
参考代码:
翻转Vector:
std::vector nums(10);
for (int i = 0; i < 10; i++)
std::cin >> nums[i];
std::reverse(nums.begin(), nums.end());
for (int i = 0; i < 10; i++)
std::cout << nums[i] << ' ';
翻转数组:
int nums[10];
for (int i = 0; i < 10; i++)
std::cin >> nums[i];
std::reverse(nums, nums + 10);
for (int i = 0; i < 10; i++)
std::cout << nums[i] << ' ';
翻转字符串:
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::string s;
std::cin >> s;
std::reverse(s.begin(), s.end());
std::cout << s;
这里的去重不是删除重复元素,而是把多余的元素堆在后面.要先排序再去重才可以实现.
std::vector vec(10);
for (int i = 0; i < 10; i++)
std::cin >> vec[i];
std::sort(vec.begin(), vec.end());
int m = std::unique(vec.begin(), vec.end()) - vec.begin();
std::cout << m << '\n';
int a[10];
for (int i = 0; i < 10; i++)
std::cin >> a[i];
std::sort(a, a + 10);
int n = std::unique(a, a + 10) - a;
std::cout << n << '\n';
m 和 n 记录的是去重后的元素个数.
std::vector vec(10);
for (int i = 0; i < 10; i++)
std::cin >> vec[i];
std::random_shuffle(vec.begin(), vec.end());
for (int i = 0; i < 10; i++)
std::cout << vec[i] << ' ';
int vec[10];
for (int i = 0; i < 10; i++)
std::cin >> vec[i];
std::random_shuffle(vec, vec + 10);
for (int i = 0; i < 10; i++)
std::cout << vec[i] << ' ';