1134. 积木分发(贪心算法,先满足需求最小的)
2013-01-02 19:53
363 查看
/*1134. 积木分发(贪心) 题目大意:有n个小朋友,每个人持有a个积木,需要b个积木才能完成 主持人有s个积木,问如何才能保证全部小朋友才能完成积木 任务。弄完的小朋友必须归还积木,包括手中持有的积木。 思路:采用贪心算法,先分给需要最少积木的小朋友。依次类推 若到最后,无法完成输入No。 */ #include <stdlib.h> #include <iostream> #include <memory.h> using namespace std; int main() { int n; long long left; int isVisit[10000]; long long childInfo[10000][2]; long min; int minIndex; bool ok = true; while(cin >> n >> left && n!=0){ ok = true; memset(isVisit, 0, sizeof(isVisit)); for(int i=0; i<n; i++) cin >> childInfo[i][0] >> childInfo[i][1]; for(int i=1; i<= n; i++){ min = 1073741428; minIndex = -1; for(int j=0; j< n; j++){ if(isVisit[j] == 0){ if(min > childInfo[j][1]){ min = childInfo[j][1]; minIndex = j; } } } if(left < min){ ok = false; break; } //已经弄完的小朋友标识为1 isVisit[minIndex] = 1; //每个小孩用完后,交还手中持有的积木数量 left = left + childInfo[minIndex][0]; } if(ok) cout << "YES" << endl; else cout << "NO" << endl; } system("pause"); return 0; }
相关文章推荐
- Sicily 1134 积木分发
- 1134. 积木分发
- sicily--1134 积木分发
- Sicily 1134. 积木分发
- Sicily 1134. 积木分发
- Sicily1134——积木分发
- sicily 1134.积木分发
- [sicily]1134. 积木分发
- sicily 1134. 积木分发
- 1134. 积木分发
- sicily 1134. 积木分发
- soj - 1134 - 积木分发
- sicily1134.积木分发
- sicily 1134 积木分发
- <OJ_Sicily>1134积木分发
- sicily 1134 积木分发
- 1134. 积木分发
- Sicily 1134. 积木分发
- Sicily 1134 积木分发
- Sicily 1134.积木分发