POJ1017 【据说是贪心...】
题意:
有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 【据说是贪心...】的更多相关文章
- poj-1017 Packets (贪心)
http://poj.org/problem?id=1017 工厂生产高度都为h,长和宽分别是1×1 2×2 3×3 4×4 5×5 6×6的6种规格的方形物品,交给顾客的时候需要包装,包装盒长宽高都 ...
- 最少拦截系统(杭电1257)(DP)+(贪心)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 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 ...
- POJ-2181 Jumping Cows(贪心)
Jumping Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7329 Accepted: 4404 Descript ...
- Jump Game I&&II——入门级贪心算法
Jump Game I Given an array of non-negative integers, you are initially positioned at the first index ...
- BZOJ1150 [CTSC2007] 数据备份Backup 贪心_堆_神题
Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家 ...
- C/c.pp:贪心,二分答案
说是贪心有点牵强. 其次,答案满足单调性,如果在k次操作能完成那么在k+1次操作内也能完成. 因为大不了你就把多的一次对方操作再进行一次就好了. 怎么操作呢? 我们从头扫这个序列,遇到每一个不匹配位置 ...
- 修理牛棚 贪心 USACO
今天开始终于可以刷USACO的题啦 准备每一道都发一个题解 1010: 1.3.2 Barn Repair 修理牛棚 时间限制: 1 Sec 内存限制: 128 MB提交: 9 解决: 7[提交] ...
- hdu4864 贪心
题意: 给你n太机器,m个任务,每个任务和机器都有两个权值x,y,每个机器只能被一个任务使用,条件是机器的两个权值分别比任务的大于等于,每个任务获得的价值是x*500+y*2,问你最多能 ...
随机推荐
- [Servlet&JSP] 标准标签
在JSP的规范中提供了一些标准标签(Standard Tag),全部的容器都支持这些标签,它能够协助编写JSP时降低Scriptlet的使用. 全部的标准标签都使用jsp:作为前置.这些标准标签是在J ...
- invlpg 指令简单介绍
invlpg 指令简单介绍 void tlb_invalidate(pde_t *pgdir, void *va) { // Flush the entry only if we're modifyi ...
- free命令具体解释——Linux性能分析
一.使用格式 语法格式:free [-b | -k | -m] [-o] [-s delay ] [-t] [-l] [-V] [-b | -k | -m] :选择数据的单位-b字节.-k千字节.-m ...
- C#读取指定路径下的Config配置文件
ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = @"F:\App1. ...
- Oracle启动和关闭服务
Oracle须要启动和关闭的服务: 1.OracleOracle_homeTNSListener 相应于数据库的监听程序 2.OracleServiceSID ...
- TinyXML:属性
TiXmlAttribute: 代表XML中的属性,TiXmlAttribute中定义了一系列对属性的操作 TiXmlAttribute的友元类: friend class TiXmlAttribut ...
- 数组index
1. 数组index与数组名的位置关系 a[b] = *(a + b) = *(b + a) = b[a] int a[5] = {1, 2, 3, 4, 5}; printf("% ...
- VS2008转VS2013时遇到的问题
最近我们要把DPM进行行人检测嵌入到我们的项目里,需要一个高级版本的VS,于是我们要把2008转换成2013,至于为什么没有换成最高级的版本,可能担心会遇到有更多的麻烦吧,毕竟我们的DPM源码是在20 ...
- ajax返回页面停留跳转
ajax返回数据后,页面停留跳转. 原理:利用匿名函数自动运行的特性和定时器来完成. (function(){ ; // 设置停留时间单位秒 var href =data.url; //设置跳转的ur ...
- SpringMVC -- 第一个简单的程序
学习springMVC,我们来记录下第一个HelloWord的程序 首先.我们组织须要的jar包 commons-logging-1.1.3.jar spring-aop-4.1.7.RELEASE. ...