topcoder SRM 622 DIV2 BoxesDiv2
2014-06-04 00:20
483 查看
注意题目这句话,Once you have each type of candies in a box, you want to pack those boxes into larger boxes, until only one box remains.
两个box合并后必须放入更大一个盒子
题目的有点类似huffman的前部分,此题用堆去做,由于priority_queue是用堆实现的,故可以直接使用
每次从堆中选取最小的两个进行合并即可
两个box合并后必须放入更大一个盒子
题目的有点类似huffman的前部分,此题用堆去做,由于priority_queue是用堆实现的,故可以直接使用
每次从堆中选取最小的两个进行合并即可
#include <iostream> #include <queue> #include <vector> #include <algorithm> using namespace std; class BoxesDiv2{ public: int round_up(int x){ for(int i = 0; i <=10 ; ++ i){ if( 1<<i >= x ) return 1<<i; } return 1<<11; } int findSize(vector<int> candyCounts){ priority_queue<int,vector<int>,greater<int> > boxQueue; for(int i = 0 ; i < candyCounts.size(); ++ i){ boxQueue.push(round_up(candyCounts[i])); } while(boxQueue.size() != 1){ int a = boxQueue.top();boxQueue.pop(); int b = boxQueue.top();boxQueue.pop(); boxQueue.push(max(a,b)*2); } return boxQueue.top(); } };
相关文章推荐
- topcoder SRM 622 DIV2 FibonacciDiv2
- TopCoder SRM 612 DIV1 900
- TopCoder SRM 144 DIV1 BinaryCode
- Topcoder SRM 666 DIV 1
- TopCoder SRM 701 div1. 900 FibonacciStringSum - 矩阵乘法
- [TopCoder] SRM 578 DIV 2, Wolf In Zoo, Solution
- topcoder srm 704 div1
- [TopCoder] SRM 580 DIV 2, 250p, 500p, 1000p, Solution
- TopCoder 250 points 3-SRM 145 DIV 1 84.71/250 33.88%
- TopCoder 250 points 19-SRM 153 DIV 1 84.72/250 33.89%
- TopCoder SRM 669 DIV 1
- Topcoder SRM 585 DIV2 解题报告 //缺1000
- TopCoder 300 points 27-SRM 157 DIV 1 90/300 30%
- topcoder srm 490 div1
- topcoder srm 695 div1 -3
- topcoder srm 691 div1 -3
- Topcoder SRM 651 div1 250 题解 (概率dp)
- topcoder SRM 593 DIV2 RaiseThisBarn
- Topcoder SRM 709 DIV 2 500pt Permatchd2 solution
- [TopCoder] SRM 579 DIV 2, Marble Positioning, Solution