51nod_1432_独木舟
2018-02-01 14:44
351 查看
51nod_1432_独木舟
思维题题目链接
题目描述
n个人,已知每个人体重。独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?
Input
第一行包含两个正整数n (0<n<=10000)和m (0<m<=2000000000),表示人数和独木舟的承重。接下来n行,每行一个正整数,表示每个人的体重。体重不超过1000000000,并且每个人的体重不超过m。
Output
一行一个整数表示最少需要的独木舟数。
Input示例
3 6 1 2 3
Output示例
2
解题思路
对人的重量w[]从小到大排序,i从前往后遍历,j从后往前遍历,直到会和, w[i]+w[j]>m:给重的分配一个船,因为它不可能和其他人一起坐船了 w[i]+w[j]<=m:给两个人分配一个船 i==j:分配一个船,因为题目要求每个人的重量不超过船重
AC代码
#include<iostream> #include<algorithm> #define ll long long using namespace std; int main() { int n; ll m; ll w[10005]; while (cin >> n >> m) { for (int i = 0; i < n; ++i) { cin >> w[i]; } sort(w, w + n); int ans = 0; for (int i = 0,j=n-1; i<=j;) { if (i == j) { i++; j--; ans++; } else if (w[i] + w[j] > m) { j--; ans++; } else if (w[i] + w[j] <= m) { i++; j--; ans++; } } cout << ans << endl; } return 0; }
相关文章推荐
- 【模拟】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 独木舟(贪心)
- 【51Nod】1432 独木舟
- 51nod 1432 独木舟 贪心
- 51nod 1432 独木舟
- 51NOD 1432 独木舟
- [51nod-1432]独木舟 题解
- 51Nod 1432 独木舟
- 51NOD 1432 独木舟(贪心