uva311 - Packets(贪心)
题目大意:给出1*1, 2*2,3 *3, 4*4, 5*5, 6*6的箱子的个数,如今有若干个6*6的箱子,问最少用多少个箱子能够将给定的箱子都装进去。
解题思路:对于6 * 6的箱子,每一个都要耗费一个箱子。
对于5 * 5的箱子, 装完这个后还能再装11个1 * 1.
对于 4 * 4的箱子,装完这个后还能装5个2 * 2,然后2 * 2 的不够能够用1 * 1 的补足。
对于3 * 3 的箱子,情况有3:
1个3 * 3的箱子, 5 个 2 * 2 的箱子, 7个 1 * 1;
同上诉格式:2 3 6
3 1 5
对于须要2的,不足的话就用1的.
代码:
#include <stdio.h> const int N = 6;
int packets[N];
//补足2*2的空缺
void need () { if (packets[1] < 0) { packets[0] += packets[1] * 4;
packets[1] = 0;
}
}
//推断3*3的特殊的情况
void judge (int a, int b) { packets[1] -= a;
packets[0] -= b;
need();
} int solve () { int sum = packets[5];
int temp;
for (int i = N - 2; i >= 1; i--) { if (i == 4) { sum += packets[i];
packets[0] -= 11 * packets[i]; } else if (i == 3) { sum += packets[i];
packets[1] -= packets[i] * 5;
need(); } else if (i == 2) { sum += packets[i] / 4;
packets[i] %= 4;
if (packets[i] == 3) { sum++;
judge(1,5);
} else if (packets[i] == 2) { sum++;
judge(3,6);
} else if (packets[i] == 1) { sum++;
judge(5,7);
}
} else { temp = packets[1] * 4;
if (packets[0] > 0)
temp += packets[0];
sum += (temp + 35)/ 36;
}
}
return sum;
} int main () { int count;
while (1) { count = 0;
for (int i = 0; i < N; i++) { scanf ("%d", &packets[i]);
count += packets[i];
}
if (!count)
break; printf ("%d\n", solve());
}
return 0;
}
uva311 - Packets(贪心)的更多相关文章
- UVA 311 Packets 贪心+模拟
题意:有6种箱子,1x1 2x2 3x3 4x4 5x5 6x6,已知每种箱子的数量,要用6x6的箱子把全部箱子都装进去,问需要几个. 一开始以为能箱子套箱子,原来不是... 装箱规则:可以把箱子都看 ...
- poi 1017 Packets 贪心+模拟
Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 48349 Accepted: 16392 Descrip ...
- A - Packets 贪心
A factory produces products packed in square packets of the same height h and of the sizes 1*1, 2*2, ...
- Poj 1017 Packets(贪心策略)
一.题目大意: 一个工厂生产的产品用正方形的包裹打包,包裹有相同的高度h和1*1, 2*2, 3*3, 4*4, 5*5, 6*6的尺寸.这些产品经常以产品同样的高度h和6*6的尺寸包袱包装起来运送给 ...
- POJ 1O17 Packets [贪心]
Packets Description A factory produces products packed in square packets of the same height h and of ...
- poj 1017 Packets 贪心
题意:所有货物的高度一样,且其底面积只有六种,分别为1*1 2*2 3*3 4*4 5*5 6*6的,货物的个数依次为p1,p2,p3,p4,p5,p6, 包裹的高度与货物一样,且底面积就为6*6,然 ...
- POJ1017&&UVA311 Packets(中文题面版)
感谢有道翻译--- Description A工厂生产的产品是用相同高度h的方形包装,尺寸为1* 1,2 * 2,3 * 3,4 * 4,5 * 5,6 6.这些产品总是以与产品高度h相同,尺寸为66 ...
- poj 1017 Packets 裸贪心
Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43189 Accepted: 14550 Descrip ...
- POJ 1017 Packets【贪心】
POJ 1017 题意: 一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为 1*1, 2*2, 3*3, 4*4, 5*5, 6*6. 这些产品通常 ...
随机推荐
- nyist0j 35 表达式求值
题目链接:表达式求值 该题以前做过但是WA了,今天终于把他解决了,各种悲剧啊,又是考虑不周到啊................... 所以贴出来纪念一下,并作为一个警示 /**** ps:注意当遇到 ...
- 专访CEO何朝曦:深信服高速成长的秘诀
在深信服公司深圳总部的办公室里,要迅速找到几位高管的工位远远不如找一位女员工的座位那样容易. 深信服CEO何朝曦先生 公司里虽然女孩很少,但几乎每位女员工的工位上都有一盆绿植.相比之下,从公司CEO何 ...
- speex 回声消除的用法
speex 回声消除的用法 分类: speex AEC 回声消除 2012-11-13 11:24 1336人阅读 评论(0) 收藏 举报 speex的回声消息 就是speex_echo_cancel ...
- UVA - 10129Play on Words(欧拉路)
UVA - 10129Play on Words Some of the secret doors contain a very interesting word puzzle. The team o ...
- [置顶] js模板方法的思路及实现
在js中如何实现设计模式中的模板方法? 思路的产生必然要求熟悉js,如何实现?就很简单了,都知道在js中如果定义两个相同名称的方法,前一个方法就会被后一个方法覆盖掉,使用此特点就可以实现模板方法. 例 ...
- centos6.5设备mysql5.6
1. 首先检查版本号number # uname -a 要么 # cat /etc/redhat-release CentOS release 6.6 (Final) 2. 下载并安装Mysql的yu ...
- Android项目开发五-《星星生活志》1.使用MediaRecorder录制音频
Android设备实现录制音频的简单demo 转载请注明; http://blog.csdn.net/u013670933/article/details/26089487 代码例如以下: publi ...
- 基于thinkphp的uploadify上传图功能
php Action server端 <?php /* * To change this template, choose Tools | Templates * and open the ...
- 编译ycm库
在安装完YCM之后,重新打开vim还会出现如下的报错信息:ycm_client_support.[so|pyd|dll] and ycm_core.[so|pyd|dll] not detected; ...
- js后缀判断
var extension=fileName.substring(fileName.lastIndexOf('.')+1);