C++-POJ1017-Packets
2024-09-06 21:31:22
贪心算法,思路见代码
本来想搜索,结果有O(1)的算法,我佛了
其实每一种6x6的方案可以打表预处理,然后dp or search
但是既然可以贪心何乐而不为呢?
#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
/*
//体积为4,5,6的有一个就需要一个箱子,体积为3的需要(c+3)/4个箱子
//剩余的空间我们采取贪心的策略,先放2x2的箱子,4x4的箱子还剩下boxD*5个2x2的空间
//对于3x3底面积的需要分情况讨论
//3x3的箱子装完了还剩下3个,留下了1个2x2的空间
//3x3的箱子装完了还剩下2个,留下了3个2x2的空间
//3x3的箱子装完了还剩下2个,留下了5个2x2的空间
//解决了2x2的空间还剩下1x1的,总体积减去所有其他箱子的体积,就剩下1x1的空间了。
*/
int main() {
for(int a,b,c,d,e,f,ans; scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f)&&(a+b+c+d+e+f);) {
ans=(c+)/+d+e+f;
int left2x2=d*;
if(c%==)left2x2+=;
else if(c%==)left2x2+=;
else if(c%==)left2x2++;
if(b>left2x2)ans+=((b-left2x2)+)/;
int left1x1=*ans-*b-*c-*d-*e-*f;
if(a>left1x1)ans+=((a-left1x1)+)/;
cout<<ans<<endl;
}
return ;
}
最新文章
- DX12龙书第6章习题
- String path = request.getContextPath(); String basePath = request.getScheme() + ";://"; + request.getServerName() + ";:"; + request.getServerPort() + path + ";/";;作用!!!!!
- Android原生(Native)C开发之一:环境搭建篇
- Javascript模块化规范
- Linux内核分析--操作系统是如何工作的
- 2016 Multi-University Training Contest 4 Bubble Sort(树状数组模板)
- 背景CSS
- objective-c中点语法的使用
- TCP三次握手和http过程
- BZOJ 1008 [HNOI2008]越狱
- Linux学习之第十九、条件判断
- Bash环境配置文件
- Django实现简单分页功能
- 设计一个有getMin功能的栈(1)
- Yii2框架RBAC(Role-Based Access Control)的使用
- 写一个python的服务监控程序
- over(partition by)开窗函数的使用
- 使用组件构建Android应用程序
- JSTL 标签库 使用(web基础学习笔记十九)
- gitlab一次代码回滚引起的bug...
热门文章
- C#设计模式学习笔记:(1)单例模式
- 编程中的幂等性 —— HTTP幂等性
- 网络共享服务(二)之NFS
- SEO中10个常用的查询指令
- PAT (Advanced Level) Practice 1011 World Cup Betting (20 分) (找最值)
- PAT (Advanced Level) Practice 1008 Elevator (20 分) (模拟)
- 大json直接序列化成dataset
- PHPMailer发送邮件遇坑小记
- idea 2018.1.2激活方法,有效期至2099年
- linux常见目录介绍