AT_abc388_c [ABC388C] Various Kagamimochi
洛谷链接
AtCoder链接
题目
有
给定大小分别为
你从
思路
由于
既然直接求解不好求,那么我们就换一种思路。我们先选定一个年糕作为叠年糕中上面的年糕,设它的大小为
这样,我们只要求出第一个符合要求的年糕的下标,从而求出符合要求的年糕的数量即可。
这里,我用 C++ 自带的 lower_bound 函数(不会用的可自行上网查询)去二分查找这个下标。
代码
十年 OI 一场空,不开 long long 见祖宗。
#include <bits/stdc++.h>
using namespace std;
long long n, a[500010], res, pos;
int main()
{
scanf("%lld", &n);
for (int i = 0; i < n; i ++ )
scanf("%lld", &a[i]);
for (int i = 0; i < n; i ++ )
{
pos = lower_bound(a, a + n, a[i] * 2) - a;
res += n - pos;
}
cout << res << '\n';
return 0;
}