51Nod - 1432 模拟 + 贪心
2016-12-27 10:20
211 查看
题意:
n个人,已知每个人体重。独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?Input
第一行包含两个正整数n (0<n<=10000)和m (0<m<=2000000000),表示人数和独木舟的承重。 接下来n行,每行一个正整数,表示每个人的体重。体重不超过1000000000,并且每个人的体重不超过m。
Output
一行一个整数表示最少需要的独木舟数。
Input示例
3 6 1 2 3
Output示例
2
思路:
凭第一感觉可以知道大的要尽量和小的搭配,这样可以使船的数量最少,于是可以设置两个变量l和r,先对重量排好序,对于每个l,都找到一个最大的r和它可以放在一条船上,因为这样的l是递增的,所以不满足的r只能自己用一条船。代码:
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 1e4 + 10; ll a[MAXN]; int main() { ll n, m; cin >> n >> m; for (int i = 1; i <= n; i++) scanf("%I64d", &a[i]); sort (a + 1, a + 1 + n); int l = 1, r = n, ans = 0; while (l < r) { if (a[l] > m) break; while (a[l] + a[r] > m && l < r) --r, ++ans; //printf("%d %d\n", l, r); ++ans; ++l; --r; if (l == r && a[l] <= m) {++ans; break;} } printf("%d\n", ans); return 0; }
相关文章推荐
- 51nod 1432 (贪心)
- 51Nod - 1402 模拟 + 贪心
- 51nod 1432 独木舟 贪心
- 51nod 1432 独木舟 (水题 贪心)
- 51nod 1563 坐标轴上的最大团(今日gg模拟第一题) | 线段覆盖 贪心 思维题
- 51NOD 1432 独木舟 贪心
- [51nod] 1432 独木桥 贪心
- 【模拟】1432 独木舟【51nod】【难度:2级算法题】
- 51nod 1432 独木舟(贪心)
- 【51Nod】1432 - 独木舟(贪心)
- 51Nod 1432 独木舟 (贪心
- 51Nod 1432 独木舟(贪心)
- 51nod 1432 独木舟 贪心
- 51NOD 1432 贪心
- 51NOD 1432 独木舟(贪心+递归)
- 51nod 1432 独木舟(贪心)
- 51Nod 1432 独木舟 贪心
- 51nod 1432 独木舟(贪心)
- 51NOD 1432 独木舟(贪心
- 积分赛 (一)——51Nod - 1432 【贪心】