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. 这些产品通常 ...
随机推荐
- HUB主要芯片方案
HUB主要品牌:慧荣.擎泰.联盛 安国.创惟 创惟GL850G简介:拥有低耗电.温度低及接脚数减少等产品特性.它支援4个下游连接埠,采用48 pin LQFP封装,可完全支援USB 2.0/1.1规 ...
- android网络通讯数据封装之 json
Demo程序包括客户端和服务端 客户端按json数据格式封装数据传至服务端. 服务端为简单的servlet程序,负责接收客户端传到json数据,然后按原数据返回客户端. 实例代码如下: public ...
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
在 Build 开发者大会上推出VM 扩展程序的其中一个称为"自定义脚本扩展程序",它支持 PowerShell.如果这是您第一次访问这些博客,可能需要查看以前的博客,请单击 ...
- Java知识点复习
总结下java的知识点 final 关键字-方法:不能被子类重写(override)-变量:不能被修改-类:不可以被继承,派生子类 finally 关键字与try/catch语句配合使用,即使有异常抛 ...
- Linux2.6中的Slab层
还记得一个进程创建的时候是什么给它分配的“进程描述符”吗?没错,是slab分配器,那么,这个slab分配器是个什么东西呢? 分配和释放数据结构是所有内核中最普遍的操作之一.为了 ...
- UVA122-Trees on the level(链二叉树)
Trees on the level Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Sub ...
- oracle execute immediate
declare aa ,); l_cnt ); i_yr ; i_curCode ) :='001'; i_vDate date := ...
- c++中string::function集合
string append() 1.直接添加另一个完整的字符串: str1.append(str2); 2.添加另一个字符串的某一段字串: str1.append(str2, 11, 7); ...
- java web分享ppt大纲 -- servlet包
概述 servlet相关代码所在包: javax.servlet javax.servlet.http 常用的功能模块 Servlet,filter,listener 常用的相关类: servlet ...
- docNet基础学完感想
开学后的一个多月因为要准备acm省赛,所以docnet视频基本没看了!不过,虽然在省赛前每天都在做题,赛前刷了80多题吧!!但是比赛的时候就3题,渣啊!只做出了3个水题,后面两个小时搞两题就是出不来, ...