1432 獨木舟
基準時間限制:1 秒 空間限制:131072 KB 分值: 10 難度:2級算法題
n個人,已知每個人體重。獨木舟承重固定,每隻獨木舟最多坐兩個人,可以坐一個人或者兩個人。顯然要求總重量不超過獨木舟承重,假設每個人體重也不超過獨木舟承重,問最少需要幾隻獨木舟?
Input
第一行包含兩個正整數n (0<n<=10000)和m (0<m<=2000000000),表示人數和獨木舟的承重。
接下來n行,每行一個正整數,表示每個人的體重。體重不超過1000000000,并且每個人的體重不超過m。
Output
一行一個整數表示最少需要的獨木舟數。
Input示例
3 6
1
2
3
Output示例
2
題解:簡單貪心,排序之後從第N個找第一個,兩者小于稱重就同時往裡找,大于稱重說明第N個必須自己走,那麼就找第N-1個和第一個,依次下去。
AC代碼:
1 #include<iostream>
2 #include<algorithm>
3 using namespace std;
4 const int maxn = 10005;
5 long long a[maxn];
6 int n;
7 long long k;
8 int main()
9 {
10 cin>>n>>k;
11 for(int i=1;i<=n;i++)
12 {
13 cin>>a[i];
14 }
15 sort(a+1,a+1+n);
16 int t = 1;
17 int h = n;
18 int sum = 0;
19 while(t<=h)
20 {
21 if(a[h]+a[t]<=k)
22 {
23 sum++;
24 h--;
25 t++;
26 }
27 else
28 {
29 sum++;
30 h--;
31 }
32 }
33 cout<<sum<<endl;
34 return 0;
35 }