topcoder SRM598 div1
来源:互联网 发布:人工智能技术排名第一 编辑:程序博客网 时间:2024/06/08 05:37
250pt:
题意:提供每一件物品的重量item[i], 100<=item[i]<=300,一个容器只能最多承重300(inclusive),问最少要多少个容器
分析:贪心。除了三个都是100的能放在一个容器里,其他的最多两个。这样对100的个数(更确切的说是有多少组3个100)进行枚举讨论。注意,并不是有3个100就一定这三个放在一个容器里,比如100,100,100,180,180,180,更好的方案是100+180一组,所以要讨论3个100是否放一个容器的情况。 剩下的就是先排序,用两个指针从头和尾贪心遍历,如果头尾相加<300,那么这两个在同一个容器,不然尾单独一个容器,尾往前进一格。
代码:
int BinPacking::minBins(vector <int> item) {int cnt = 99999999;int zero = count(item.begin(),item.end(),100);for(int z=0;z<=zero/3;z++){int sum = z;vector<int> temp;for(int i=0;i<item.size();i++){if(item[i]!=100)temp.push_back(item[i]);}int zeroNumberIntoTemp = zero-z*3;while(zeroNumberIntoTemp--)temp.push_back(100);sort(temp.begin(),temp.end());int i=0;int j = temp.size()-1;while(i<j){if(temp[i]+temp[j]<=300){sum++;i++;j--;}else{j--;sum++;}}if(i==j)sum++;cnt = min(sum,cnt);}return cnt;}
- topcoder SRM598 div1
- Topcoder.SRM527.Div1.T2
- topcoder SRM500 div1 Level3
- topcoder SRM495 div1 level2
- topcoder SRM495 div1 level3
- Topcoder SRM552 Div1 500
- TopCoder SRM480 DIV1 Practise
- Topcoder--SRM144 div1
- topcoder srm609 div1
- TOPCODER--SRM615 div1 AmebaDiv1
- Topcoder Srm 648 DIV1
- Topcoder Srm 649 DIV1
- topcoder SRM500 div1 Level3
- TopCoder 603 div1 & div2
- Topcoder Srm 654 DIV1
- TopCoder SRM674 div1 250
- TopCoder SRM604 DIV1 250
- TopCoder SRM606 DIV1 250
- Android Theme详细内容概述
- 只允许输入数字的input
- Q4M使用手册
- Hadoop管理员的十个最佳实践
- IE10&11安装失败出现9C59代码之解决方案,
- topcoder SRM598 div1
- c#、winfrom 给程序添加命令行参数
- 最近整合Spring3 和Hibernate 4的总结
- 简单生成遮罩层的代码示例
- 割点模板
- varnish配置实战
- hdu 4127 Flood-it! 搜索
- VS 2010把行数显示出来
- mac os 利用ssh 搭建git server服务器详细教程,以及git基本用法(上)