题意:

有6种面积的格子,给出这些格子的数量,然后有6*6的格子去容纳这6种面基,问最少需要几个6*6格子,使得所有类型的小格子被容纳。

思路:

按照面积的从大到小放。

一开始还是太天真,还要用各种1去补,wa了一发…

具体都在代码那里注释了

贴一发瞎写的挫code……….

#include <iostream>
#include <cstdio>
#include<vector>
#include <cstring>
#include <algorithm>
using namespace std;
typedef __int64 LL; int a[10]; int main()
{
while(1)
{
bool flag=false;
for(int i=1;i<=6;i++)
{
scanf("%d",&a[i]);
if(a[i])
flag=true;
}
if(!flag)
break;
int ans=0;
ans+=a[6]; if(a[5])
{
ans+=a[5]; //5 只能一个
if(a[1]<=11*a[5]) //用 1 去填
a[1]=0;
else
a[1]-=11*a[5];
} if(a[4])
{
ans+=a[4];
if(a[2]<=5*a[4]) //如果在那么里面,2 填完,上 1
{
int x=a[4]*36-16*a[4]-a[2]*4; //剩下的 1 的数量
if(a[1]<=x)
a[1]=0;
else
a[1]-=x;
a[2]=0;
}
else //这里填了 4 后剩下的区域都是 2 填
a[2]-=5*a[4];
}
if(a[3])
{
ans+=a[3]/4; //4个3正好填满
int x=a[3]%4;
if(x==1) //剩一个3
{
ans+=1;
if(a[2])
{
if(a[2]<=5) //一个3以后最多填5个2,这里是 2 不够了
{
int y=36-9-a[2]*4;
if(a[1]<=y)
a[1]=0;
else
a[1]-=y;
a[2]=0;
}
else
{
a[2]-=5; //这里是2够的,只能+11 个 1
if(a[1]<=11)
a[1]=0;
else
a[1]-=11;
}
}
}
else if(x==2)
{
ans+=1;
if(a[2]<=3) //两个3以后最多天3个2,这里是不够
{
int y=36-18-a[2]*4; //用1补
if(a[1]<=y)
a[1]=0;
else
a[1]-=y;
a[2]=0;
}
else //2够的话,最多填6个1
{
if(a[1]<=6)
a[1]=0;
else
a[1]-=6;
a[2]-=3;
}
}
else if(x==3)
{
ans+=1;
if(a[2]<=1) //最多只能填1个 2 ,不够
{
int y=9-a[2]*4;
if(a[1]<=y) //用1补
a[1]=0;
else
a[1]-=y;
a[2]=0;
}
else
{
if(a[1]<=5) //2够的话,只能上5个 1
a[1]=0;
else
a[1]-=5;
a[2]-=1;
}
}
}
if(a[2])
{
ans+=a[2]/9; //9个2正好填满
int x=a[2]%9;
if(x) //2*2还有的多
{
ans+=1;
int y=36-x*4; //用1补
if(a[1]<=y)
a[1]=0;
else
a[1]-=y;
}
}
if(a[1])
{
ans+=a[1]/36; //36个1*1正好填满
int x=a[1]%36;
if(x) //不够补。
ans++;
}
printf("%d\n",ans);
}
return 0;
}

POJ1017 【据说是贪心...】的更多相关文章

  1. poj-1017 Packets (贪心)

    http://poj.org/problem?id=1017 工厂生产高度都为h,长和宽分别是1×1 2×2 3×3 4×4 5×5 6×6的6种规格的方形物品,交给顾客的时候需要包装,包装盒长宽高都 ...

  2. 最少拦截系统(杭电1257)(DP)+(贪心)

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. Codeforce 835B - The number on the board (贪心)

    Some natural number was written on the board. Its sum of digits was not less than k. But you were di ...

  4. POJ-2181 Jumping Cows(贪心)

    Jumping Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7329 Accepted: 4404 Descript ...

  5. Jump Game I&&II——入门级贪心算法

    Jump Game I Given an array of non-negative integers, you are initially positioned at the first index ...

  6. BZOJ1150 [CTSC2007] 数据备份Backup 贪心_堆_神题

    Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家 ...

  7. C/c.pp:贪心,二分答案

    说是贪心有点牵强. 其次,答案满足单调性,如果在k次操作能完成那么在k+1次操作内也能完成. 因为大不了你就把多的一次对方操作再进行一次就好了. 怎么操作呢? 我们从头扫这个序列,遇到每一个不匹配位置 ...

  8. 修理牛棚 贪心 USACO

    今天开始终于可以刷USACO的题啦 准备每一道都发一个题解 1010: 1.3.2 Barn Repair 修理牛棚 时间限制: 1 Sec  内存限制: 128 MB提交: 9  解决: 7[提交] ...

  9. hdu4864 贪心

    题意:        给你n太机器,m个任务,每个任务和机器都有两个权值x,y,每个机器只能被一个任务使用,条件是机器的两个权值分别比任务的大于等于,每个任务获得的价值是x*500+y*2,问你最多能 ...

随机推荐

  1. iOS 获取appstore 版本

    项目上线以后一般都涉及到升级.那么iOS 怎样从appstore获取到版本 事实上非常easy NSString *url = [[NSString alloc] initWithFormat:@&q ...

  2. C++学习总结3

    链接上一篇日志,C++学习总结2,下面介绍下C++里面的其他内容 虚函数:一个接口,多种方法. 多态:编译时的多态与运行时的多态. 编译时的多态表现为运算符的重载与函数的重载. 运行时的多态表现为使用 ...

  3. 九度OJ #1437 To Fill or Not to Fil

    题目描写叙述: With highways available, driving a car from Hangzhou to any other city is easy. But since th ...

  4. 关于cocos2d-x 3.0的点击交互处理

    转自:http://blog.csdn.net/fansongy/article/details/12716671 1.概述     游戏也好,程序也好,仅仅有能与用户交互才有意义.手机上的交互大致能 ...

  5. js对象的属性问题

    ES6之前js的对象的属性只能是字符串, <html> <head> <script type="text/javascript"> var a ...

  6. java设计模式----迭代器模式和组合模式

    迭代器模式: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 设计原则: 单一责任:一个类应该只有一个引起变化的原因 组合模式: 允许你将对象组合成树形结构来表现“整体/部分” ...

  7. xcode4中build Settings常见参数解析

    本文转载至 http://shiminghua234.blog.163.com/blog/static/263912422012411103526386/     1.Installation Dir ...

  8. MapReduce算法形式二:去重(HashSet)

    案例二:去重(shuffle/HashSet等方法)shuffle主要针对的是key去重HashSet主要针对values去重

  9. filter、servlet、interceptor的执行顺序

    1. Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链.它与Servlet的区别在于:它不能 ...

  10. Mysql的Merge存储引擎实现分表查询

    对于数据量很大的一张表,i/o效率底下,分表势在必行! 使用程序分,对不同的查询,分配到不同的子表中,是个解决方案,但要改代码,对查询不透明. 好在mysql 有两个解决方案: Partition(分 ...