博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ1017 【据说是贪心...】
阅读量:5255 次
发布时间:2019-06-14

本文共 3701 字,大约阅读时间需要 12 分钟。

题意:

有6种面积的格子,给出这些格子的数量,然后有6*6的格子去容纳这6种面基,问最少需要几个6*6格子,使得所有类型的小格子被容纳。
思路:
按照面积的从大到小放。
一开始还是太天真,还要用各种1去补,wa了一发…

具体都在代码那里注释了

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

#include 
#include
#include
#include
#include
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;}

转载于:https://www.cnblogs.com/keyboarder-zsq/p/5934379.html

你可能感兴趣的文章
POJ2115 C Looooops
查看>>
单例模式
查看>>
NPOI处理Word文本中上下角标
查看>>
Android笔记 Handler
查看>>
设计模式-(17)策略模式 (swift版)
查看>>
如何阅读大型前端开源项目的源码(转)
查看>>
error:Your local changes to the follwing files would be overwritten by merge
查看>>
java.util.Arrays类详解
查看>>
C# Hashtable
查看>>
idea搭建tocmat
查看>>
NYOJ-626-intersection set(二分查找)
查看>>
YaoLingJump开发者日志(二)
查看>>
数据结构之中缀式计算
查看>>
zoopkeeper
查看>>
shell脚本内sudo无需输入密码
查看>>
Java final关键字特点
查看>>
Ubuntu下安装Python3.4及用python编译py文件
查看>>
android渠道包自动化验证 .
查看>>
S3C2440 偷学
查看>>
[LeetCode] Max Points on a Line
查看>>