神奇的dp优化。

考虑6维状态的dp,分别表示三行高和宽,显然MLE&&TLE。

把高排个序,从大到小往架上放,那么若不是重开一行便对高度没有影响。

然后求出宽度的sum,dp[i][j]表示第一行放了i的宽度,二行放了j的宽度,三行放了sum-i-j宽度的最小的高度值。

先把所有书放在第三行,然后从第二本开始转移,考虑往其他行移的情况。

避免MLE要滚动数组。

注意最后更新答案时保证i>0&&j>0&&sum-i-j>0且dp[i][j]!=INF;

//Twenty
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<vector>
#include<ctime>
typedef long long LL;
using namespace std;
int n,sum,f[][][],ans=1e9;
struct book {
int hi,ti;
friend bool operator <(const book &A,const book &B) {
return A.hi>B.hi;
}
}bk[];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d%d",&bk[i].hi,&bk[i].ti);
sort(bk+,bk+n+);
for(int i=;i<=n;i++) sum+=bk[i].ti;
int o=;
memset(f,/,sizeof(f));
f[][][]=bk[].hi;
for(int i=;i<=n;i++) {
o^=;
for(int j=;j<=sum;j++) {
for(int k=;k<=sum&&j+k<sum;k++) {
f[o][j][k]=min(f[o][j][k],f[o^][j][k]);
if(!j) f[o][j+bk[i].ti][k]=min(f[o][j+bk[i].ti][k],f[o^][j][k]+bk[i].hi);
else f[o][j+bk[i].ti][k]=min(f[o][j+bk[i].ti][k],f[o^][j][k]);
if(!k) f[o][j][k+bk[i].ti]=min(f[o][j][k+bk[i].ti],f[o^][j][k]+bk[i].hi);
else f[o][j][k+bk[i].ti]=min(f[o][j][k+bk[i].ti],f[o^][j][k]);
if(i==n&&j!=&&k!=&&f[o][j][k]!=) {
ans=min(ans,f[o][j][k]*max(max(j,k),sum-j-k));
}
}
}
}
printf("%d\n",ans);
return ;
}

最新文章

  1. Java初学随笔
  2. photoshopcc基础教程
  3. ASP.NET MVC 4 Optimization的JS/CSS文件动态合并及压缩
  4. [转]html5 js 访问 sqlite 数据库的操作类
  5. do while(false)实用技巧
  6. C语言位运算详解
  7. leetcode 239 Sliding Window Maximum
  8. Apache POI 解析 microsoft word 图片文字都不放过
  9. poj2373
  10. 如何唯一确定一台iOS设备
  11. 无法打开 configsource 文件
  12. 服务器编程入门(4)Linux网络编程基础API
  13. keepalived: Compile &amp; startup
  14. 依赖反转原则DIP 与 asp.net core 项目结构
  15. shell 数值运算
  16. JavaWeb项目中web.xml有关servlet的基本配置
  17. Android_view的生命周期
  18. ssr.js数据模拟工具
  19. bzoj1212 L语言
  20. 使用Callable和Future接口创建线程

热门文章

  1. day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态
  2. 20170702-变量说明,静态方法,类方法区别,断点调试,fork,yield协程,进程,动态添加属性等。。
  3. 基于Element-UI的el-table,input框输入实现排序功能
  4. Git中.gitignore忽略规则
  5. iOS 5 ARC 入门
  6. 前端笔记:animate+easing用法(hexo next主题自定义动画)
  7. selector是在文件夹drawable中进行定义的xml文件转载 https://www.cnblogs.com/fx2008/p/3157040.html
  8. 三种方法实现MNIST 手写数字识别
  9. icon 的前生今世 &amp; iconfont 的晋级之路
  10. 总结windows cmd 查看进程,端口,硬盘信息