51nod 1596 搬货物
2017-07-25 22:58
267 查看
先全都扔到优先队列里(最小堆),然后出队最小的两个,如果相等的话,合成一个新的再扔到队列里。如果不相等,则把出队那两个其中较小的扔一个单独的数组array里,另一个大一点的再扔回队列里,直到队列为空。array的尺寸就是结果。
我做的时候最后一个没再放回队列,所以是array.size()+1
我做的时候最后一个没再放回队列,所以是array.size()+1
#include <bits/stdc++.h> using namespace std; typedef long long LL; int main() { ios::sync_with_stdio(false); LL n; LL good; cin >> n; priority_queue<LL,vector<LL>,greater<LL>> que; vector<LL> remain; while(n--) { cin >> good; que.push(good); } LL a,b; while(!que.empty()) { a = que.top(); que.pop(); if(que.empty()) { que.push(a); break; } b = que.top(); if(a == b) { que.pop(); que.push(a+1); } else remain.push_back(a); } cout << remain.size()+1 << endl; return 0; }
相关文章推荐
- 51nod-1596 搬货物
- 51NOD 1596 搬货物
- 51nod 1596 搬货物
- 51Nod 1596 搬货物
- 51nod 1596搬货物 解题报告
- 51nod 1596 搬货物 2的倍数的运算+优先队列处理
- 51Nod-1596-搬货物
- 51nod 1596 搬货物
- 51Nod 1596 搬货物
- 51nod 1596 搬货物
- 51Nod - 1596 搬货物
- 【51nod 1596 搬货物】+ dp
- 51nod 1596 搬货物
- 51Nod 1596 搬货物
- 51Nod 1596 搬货物
- 51nod 1596 搬货物
- 51nod 1596 搬货物 【思维题】
- 51NOD - 1596 搬货物 | CF587 A. Duff and Weight Lifting【思维+二进制】
- 51nod 1596 搬货物
- 51nod 1596 搬货物