有n只袋鼠。每只袋鼠的大小用乙個整數表示。乙隻小袋鼠能裝進乙隻大袋鼠的條件是,大袋鼠的大小至少是小袋鼠的兩倍。
每只大袋鼠最多可以裝乙隻袋鼠。小袋鼠被裝進大袋鼠之後就不能再裝其它的袋鼠了。
小袋鼠被裝進大袋鼠之後就不能被我們看見了。請找出乙個裝袋鼠的方案,使得被看見的袋鼠最少。
input
單組測試資料。output第一行包含乙個整數n(1≤n≤5*10^5)。
接下來n行,每行乙個整數si,表示第i只袋鼠的大小 (1≤si≤10^5)。
輸出乙個整數,即最少能看見的袋鼠數量。input示例
825output示例7698
42
5
思路: 從小到大排序。乙個袋鼠只能裝乙個袋鼠所以左邊一半只有被裝才可能使得最終的結果最小。
**:
#include#include#include#include#define n 500005
using namespace std;
int a[n];
int vis[n];
int main()
if(vis[j])
if(a[i]>=a[j]*2)
else
}for(i=1;i<=n;i++) if(!vis[i]) cnt++;
printf("%d\n",cnt);
return 0;
}
51nod 1420 數袋鼠好有趣
1420 數袋鼠好有趣 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 有n只袋鼠。每只袋鼠的大小用乙個整數表示。乙隻小袋鼠能裝進乙隻大袋鼠的條件是,大袋鼠的大小至少是小袋鼠的兩倍。每只大袋鼠最多可以裝乙隻袋鼠。小袋鼠被裝進大袋鼠之後就不能再...
51Nod 1420 數袋鼠好有趣
1420 數袋鼠好有趣 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 有n只袋鼠。每只袋鼠的大小用乙個整數表示。乙隻小袋鼠能裝進乙隻大袋鼠的條件是,大袋鼠的大小至少是小袋鼠的兩倍。每只大袋鼠最多可以裝乙隻袋鼠。小袋鼠被裝進大袋鼠之後就不能再裝其它的袋鼠了。小袋鼠...
51nod 1420 數袋鼠好有趣(貪心)
思路 排序,然後讓大的盡量裝大的就好了嘛 includeusing namespace std const int maxn 5 1e5 7 int a maxn int vis maxn int main printf d n ans 1420 數袋鼠好有趣 codeforces 基準時間限制 1...