sicily--1134 积木分发
2012-08-08 23:21
357 查看
1.是一道水题
2.利用优先级队列模拟即可
3.“比较”的原则是:需求积木数少的优先给予;若需求一致,则拥有积木数多的优先给予
2.利用优先级队列模拟即可
3.“比较”的原则是:需求积木数少的优先给予;若需求一致,则拥有积木数多的优先给予
#include<iostream> #include<queue> using namespace std; struct Node { int has;//该小朋友拥有的积木数 int need;//需要的积木数 }; struct cmp { bool operator()(const Node &n1, const Node &n2) { if(n1.need != n2.need)//两个小朋友所需要的积木数不相同 { return n1.need > n2.need;//小顶堆 } else//在两个小朋友需要的积木数相同的时候,优先的是拥有较多积木数目的 { return n1.has < n2.has;//大顶堆 } } }; int main() { int kids; int sum; priority_queue<Node, vector<Node>, cmp> Q; while(cin >> kids >> sum && kids != 0) { for(int i = 0; i < kids; i++) { Node temp; cin >> temp.has >> temp.need; Q.push(temp); } while(!Q.empty()) { if(sum < Q.top().need)//拥有的少于需要的 { break; } else//足够给予 { sum = sum + Q.top().has;//回收 Q.pop();//小朋友出列照相 } } if(Q.empty())//全部小朋友都能够出列照相 { cout << "YES" << endl; } else { cout << "NO" << endl; } } return 0; }
相关文章推荐
- Sicily 1134. 积木分发
- sicily 1134 积木分发
- Sicily 1134.积木分发
- <OJ_Sicily>1134积木分发
- [sicily][排序]1134. 积木分发
- Sicily 1134 积木分发
- Sicily1134——积木分发
- Sicily 1134. 积木分发
- Sicily 1134 积木分发
- sicily 1134.积木分发
- Sicily 1134. 积木分发
- Sicily 1134 积木分发
- Sicily 1134 积木分发
- [sicily]1134. 积木分发
- sicily 1134 积木分发
- sicily 1134. 积木分发
- sicily 1134. 积木分发
- sicily1134.积木分发
- Sicily 1134 积木分发
- soj - 1134 - 积木分发