CF 373C. Counting Kangaroos is Fun
刚开始看到 Acc 上这题标签线段树的时候我还是很惊讶的,这不就是一个小小的贪心吗?
暴力,暴力怎么做?贪心!贪心!贪心!然后大力出奇迹。
首先我们将这个数组排序。然后,我们可以发现,对于每个大袋鼠可以装的小袋鼠集合,选取集合中最大的袋鼠最优。
我们就可以把数组以 \(\dfrac{n}{2}\) 为界切成两部分,枚举前半段,从 \(\dfrac{n}{2}\to 1\),若能放进目前最大可放的袋鼠就放进去。
令初始 \(ans=n\),若无法成功放进袋子则 \(ans\) 减一。
//373C. Counting Kangaroos is Fun
#include <bits/stdc++.h>
using namespace std;
int n,a[int(5e5+5)],ans;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
sort(&a[1],&a[n+1]);
ans=n;
for(int i=n>>1;i;i--)
{
if(a[ans]>=(a[i]<<1))
{
ans--;
}
}
printf("%d\n",ans);
return 0;
}
/*
* CF
* https://codeforces.com/problemset/problem/373/C
* C++20 -O0
* 2022.10.6
*/
事实证明,不能啥都按 Acc 标签上的来。

浙公网安备 33010602011771号