Problem Q
produces products packed in square packets of the same height h and
of the sizes 1*1, 2*2, 3*3, 4*4, 5*5, 6*6. These products are
always delivered to customers in the square parcels of the same
height h as the products have and of the size 6*6. Because of the
expenses it is the interest of the factory as well as of the
customer to minimize the number of parcels necessary to deliver the
ordered products from the factory to the customer. A good program
solving the problem of finding the minimal number of parcels
necessary to deliver the given products according to an order would
save a lot of money. You are asked to make such a program.
consists of several lines specifying orders. Each line specifies
one order. Orders are described by six integers separated by one
space representing successively the number of packets of individual
size from the smallest size 1*1 to the biggest size 6*6. The end of
the input file is indicated by the line containing six zeros.
file contains one line for each line in the input file. This line
contains the minimal number of parcels into which the order from
the corresponding line of the input file can be packed. There is no
line in the output file corresponding to the last ``null'' line of
the input file.
1
0
0
,6*6装货物的箱子只有6*6的,求用的最小箱子数;
,5 ,4的只能装一个,5 的还能装1的,4的还能装1 2的,3的比较麻烦能装1 2 3的,一个个的讨论,剩下1
2的,判断是否大于零就行了,因为装起来比较简单;
0 0 4 0 0 1
7 5 1 0 0 0
36 9 4 1 1 1
0 9 4 1 1 0
0 0 4 0 0 0
36 0 0 0 0 0
0 9 0 0 0 0
79 96 94 30 18 14
53 17 12 98 76 54
83 44 47 42 80 3
15 26 13 29 42 40
41 61 36 90 54 66
78 56 445 45 23 65
13 4 8 29 45 3
15 75 45 98 34 53
40 9 0 2 0 0
41 9 0 2 0 0
44 0 0 0 4 0
0 2 3 0 0 0
37 7 2 0 1 0
12 2 0 1 0 0
13 2 0 1 0 0
0 0 0 0 0 0
Output:
2
1
6
4
1
1
1
86
231
137
115
219
245
79
197
3
4
4
2
3
1
2
#include
#include
using namespace std;
int main()
{
//freopen("in.txt", "r", stdin);
int
ans[7]={0},sizen[7]={0,1,2,3,4,5,6};
int
null=0;
while(~scanf("%d%d%d%d%d%d",&ans[1],&ans[2],&ans[3],&ans[4],&ans[5],&ans[6]))
{
if(ans[1]==0&&ans[2]==0&&ans[3]==0&&ans[4]==0&&ans[5]==0&&ans[6]==0)
break;
null=0;
null+=ans[6];//因为装了6*6的就没有别的空间了;
//装5*5的东西
null+=ans[5];//一个5*5的肯定需要一个箱子装
if(ans[1]<=11*ans[5])//还有空装1*1的盒子不要浪费
{
ans[1]=0;
}
else
{
ans[1]-=11*ans[5];
}
//printf("null=%d\n",null);
//printf("a[1]=%d a[2]=%d a[3]=%d a[4]=%d a[5]=%d
a[6]=%d\n",ans[1],ans[2],ans[3],ans[4],ans[5],ans[6]);
//装4*4的东西
null+=ans[4];//一个4*4的肯定需要一个箱子装,余下的能成5个2*2
//或20个1*1的
int content=20*ans[4];//这是剩余的盒子空间;
if(ans[2]<=5*ans[4])//先装2*2的盒子
{
int content=20*ans[4];//这是剩余的盒子空间;
content-=ans[2]*4;//剩下的体积
if(ans[1]<=content)//现在装1*1的盒子
{
ans[1]=0;
}
else
{
ans[1]-=content;
}//剩下几平方米就能装几个1*1的;
ans[2]=0;
}
else
{
ans[2]-=5*ans[4];
}
ans[4]=0;
//printf("null=%d\n",null);
//printf("a[1]=%d a[2]=%d a[3]=%d a[4]=%d a[5]=%d
a[6]=%d\n",ans[1],ans[2],ans[3],ans[4],ans[5],ans[6]);
//装3*3的
null+=ans[3]/4;
ans[3]=ans[3]%4;//每四个3*3能装满一个箱子;
if(ans[3]>0)
{
null+=1;
if(ans[2]<=7-ans[3]*2)//先装2*2的盒子
{
int content=36-ans[3]*9-ans[2]*4;//这是剩余的盒子空间;
if(ans[1]<=content)//现在装1*1的盒子
{
ans[1]=0;
}
else
{
ans[1]-=content;
}//剩下几平方米就能装几个1*1的;
ans[2]=0;
}
else
{
int content=36-ans[3]*9-(7-ans[3]*2)*4;
if(ans[1]<=content)//现在装1*1的盒子
{
ans[1]=0;
}
else
{
ans[1]-=content;
}//剩下几平方米就能装几个1*1的;
ans[2]-=(7-ans[3]*2);
}
ans[3]=0;
//printf("null=%d\n",null);
//printf("a[1]=%d a[2]=%d a[3]=%d a[4]=%d a[5]=%d
a[6]=%d\n",ans[1],ans[2],ans[3],ans[4],ans[5],ans[6]);
}
//装2*2的
if(ans[2]>0)
{
null+=ans[2]/9;
ans[2]%=9;
if(ans[2]>0)
{
null+=1;
int content=36-ans[2]*4;
if(ans[1]<=content)//现在装1*1的盒子
{
ans[1]=0;
}
else
{
ans[1]-=content;
}//剩下几平方米就能装几个1*1的;
}
ans[2]=0;
//printf("null=%d\n",null);
//printf("a[1]=%d a[2]=%d a[3]=%d a[4]=%d a[5]=%d
a[6]=%d\n",ans[1],ans[2],ans[3],ans[4],ans[5],ans[6]);
}
//装1*1的
if(ans[1]>0)
{
null+=ans[1]/36;
ans[1]%=36;
if(ans[1])
null+=1;
ans[1]=0;
//printf("null=%d\n",null);
//printf("a[1]=%d a[2]=%d a[3]=%d a[4]=%d a[5]=%d
a[6]=%d\n",ans[1],ans[2],ans[3],ans[4],ans[5],ans[6]);
}
printf("%d\n",null);
}
}
Problem Q的更多相关文章
- Problem Q: C语言习题 计算该日在本年中是第几天
Problem Q: C语言习题 计算该日在本年中是第几天 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 4572 Solved: 2474[Subm ...
- 1249 Problem Q
问题 Q: 比大小 时间限制: 1 Sec 内存限制: 128 MB 提交: 159 解决: 66 [提交][状态][讨论版] 题目描述 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如 ...
- Problem Q: 多项式求和x+(x^2)/2!+(x^3)/3!+...
#include<stdio.h> #include<math.h> int main() { float x,i; scanf("%f",&x); ...
- Problem Q: 零起点学算法12——求2个日期之间的天数
#include<stdio.h> int main() { int a1,b1,c1,a2,b2,c2,s; scanf("%d-%d-%d",&a1,&am ...
- 证明与计算(1): Decision Problem, Formal Language L, P and NP
0x01 从判定问题到形式语言 这篇讲知识证明的wiki([1]): https://en.wikipedia.org/wiki/Proof_of_knowledge 里面有一句话: Let x be ...
- Q - Phalanx
题目链接:https://vjudge.net/contest/68966#problem/Q 分析:这里的对称并不是指的是关于原矩阵(也就是最大的那一个)主对角线对称,而是对于每一个小的矩阵来说,当 ...
- 二分图水一波~~~~d带你飞
Current Time: 2016-03-11 17:45:36 Contest Type: Public Start Time: 2016-03-04 13:00:00 Contest Statu ...
- 菜鸟带你飞______DP基础26道水题
DP 158:11:22 1205:00:00 Overview Problem Status Rank (56) Discuss Current Time: 2015-11-26 19:11:2 ...
- [kuangbin带你飞]专题二十 斜率DP
ID Origin Title 20 / 60 Problem A HDU 3507 Print Article 13 / 19 Problem B HDU 2829 Lawr ...
随机推荐
- 以下内容对于灵活修改textField中文本以及占位文本属性进行了完整的封装,加入项目中可以节约开发时间。
textField对占位文本设置属性有限,在项目中需要改变占位文本的属性以及位置,需要自己对控件进行封装 封装方法如下: 在LDTextField.m 文件中: #import <UIKit/U ...
- day16<集合框架+>
集合框架(去除ArrayList中重复字符串元素方式) 集合框架(去除ArrayList中重复自定义对象元素) 集合框架(LinkedList的特有功能) 集合框架(栈和队列数据结构) 集合框架(用L ...
- Codevs1380没有上司的舞会_KEY
没有上司的舞会 1380 没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系 ...
- 彻底弄懂AngularJS中的transclusion
点击查看AngularJS系列目录 彻底弄懂AngularJS中的transclusion AngularJS中指令的重要性是不言而喻的,指令让我们可以创建自己的HTML标记,它将自定义元素变成了一个 ...
- Java客户端调用.NET的WebService
项目需要去调用.NET的WebSrevice,本身是Java,研究了半天,终于有些头绪,记下来. 1,新建.NET WebService.只在原方法上加上一个string类型的参数str [WebMe ...
- hadoop 基本命令
hdfs相关 1.查看HDFS文件目录 hadoop fs -ls / mapreduce相关 1.查看mapred job mapred job -list hadoop job -list Use ...
- 终极解决方案 at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) 报空指针
java.lang.NullPointerException at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) 出现这种问题,可能有多方 ...
- Collecting Bugs poj2096 概率DP
Collecting Bugs Time Limit: 10000MS Me ...
- 将 C# 枚举反序列化为 JSON 字符串 基础理论
该转换过程需要引用 Newtonsoft.JSON,这其中的转换过程还是蛮有意思的. 一.定义枚举 /// <summary> /// 托寄物品枚举 /// </summary> ...
- 语音识别完成诗句的查询功能,iOS AVSpeechSynthesis语音输出结果的诗歌APP
前言 当前的APP的查询都是使用手动输入,不仅效率低,而且查询的语句的限制比较大,不能够方便的扩展. 如果能方便的扩展查询语句,那么APP的使用就会有很大的灵活性.可以设计各种问句和语句,可以方便的和 ...