神奇的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[2][2150][2150],ans=1e9;
struct book {int hi,ti;friend bool operator <(const book &A,const book &B) {return A.hi>B.hi;}
}bk[75];
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d%d",&bk[i].hi,&bk[i].ti);sort(bk+1,bk+n+1);for(int i=1;i<=n;i++) sum+=bk[i].ti;int o=0;memset(f,127/3,sizeof(f));f[0][0][0]=bk[1].hi;for(int i=2;i<=n;i++) {o^=1;for(int j=0;j<=sum;j++) {for(int k=0;k<=sum&&j+k<sum;k++) {f[o][j][k]=min(f[o][j][k],f[o^1][j][k]);if(!j) f[o][j+bk[i].ti][k]=min(f[o][j+bk[i].ti][k],f[o^1][j][k]+bk[i].hi);else f[o][j+bk[i].ti][k]=min(f[o][j+bk[i].ti][k],f[o^1][j][k]);if(!k) f[o][j][k+bk[i].ti]=min(f[o][j][k+bk[i].ti],f[o^1][j][k]+bk[i].hi);else f[o][j][k+bk[i].ti]=min(f[o][j][k+bk[i].ti],f[o^1][j][k]);if(i==n&&j!=0&&k!=0&&f[o][j][k]!=707406378) {ans=min(ans,f[o][j][k]*max(max(j,k),sum-j-k));}}}}printf("%d\n",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/Achenchen/p/7612025.html

BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸相关推荐

  1. BZOJ 1933 Shoi2007 Bookcase 书柜的尺寸

    1933: [Shoi2007]Bookcase 书柜的尺寸 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 638  Solved: 251 [Subm ...

  2. BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸 动态规划

    Description Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大 ,T ...

  3. [BZOJ]1933: [Shoi2007]Bookcase 书柜的尺寸 DP

    Description Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大,To ...

  4. BZOJ 1933 [Shoi2007] Bookcase 书柜的尺寸

    Description Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大,To ...

  5. BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸 ——动态规划

    状态设计的方法很巧妙,六个值 h1,h2,h3,t1,t2,t3,我们发现t1,t2,t3可以通过前缀和优化掉一维. 然后考虑把h留下还是t留下,如果留下h显然t是会发生改变的,一个int存不下. 如 ...

  6. bzoj 1933: [Shoi2007]Bookcase 书柜的尺寸

    题意:给出n本书的高度和厚度,把它们放在三行的书架上(每一行至少一本书),问书架正面的最小面积. 题解:先按高度从大到小排序,保证后面加入的书不会对高度造成影响,再dp.f[i][j][k]f[i][ ...

  7. [Shoi2007]Bookcase 书柜的尺寸 dp

    这道dp算是同类型dp中比较难的了,主要难点在于设置状态上: 如果像平时那样设置,必定爆空间没商量: 下面是一种思路: 先把输入进来的数据按h从大到小排序,这样就可以大大减少状态数, 然后设f[i][ ...

  8. Bzoj1933 [Shoi2007]Bookcase 书柜的尺寸

    Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 554  Solved: 212 Description Tom不喜欢那种一字长龙式的大书架,他只想要一个 ...

  9. bzoj1933: [Shoi2007]Bookcase 书柜的尺寸

    传送门 S前面那一坨就是max(hi) 然后就是大力dp 设f[i][j][k]表示前i本书,第一层长度和为j,第二层长度和为k的最小第三层长度. 显然可以滚掉一维 转移十分简单. #include& ...

最新文章

  1. php中rbac三张表的关系,thinkphp中RBAC数据表分析
  2. 使用 FRP 反向代理实现 Windows 远程连接
  3. linux 下 用户与用户组
  4. [Eclipse]代码已被写入关于如何切换到unix在新行
  5. 使用 ASP.NET 配置类
  6. linux服务器黑屏_xshell连接Linux系统(小红帽7.3)服务器,导致服务器黑屏
  7. C#中NameValueCollection类用法详解
  8. golang生成c-shared so供c语言或者golang调用到例子
  9. Python机器学习 集成算法实例
  10. Spring cloud 微服务架构之Ribbon/Fegin连接超时ReadTimeout问题
  11. 04 ZooKeeperAPI实战
  12. Social Influence as Intrinsic Motivation for Multi-Agent Deep Reinforcement Learning-笔记
  13. 美国大学 计算机,U.S.News美国大学计算机专业排名
  14. 国庆假期,人在囧途,感慨颇多
  15. 题解 【中学高级本-网络流24题】餐巾计划
  16. NMOS和PMOS管
  17. python批量处理word格式_用python批量处理word文档
  18. 小小丁出生——有图有真相
  19. [渝粤教育] 郑州轻工业大学 自动控制原理 参考 资料
  20. 手机墙刷APP下载量骗推广费 10人因涉嫌合同诈骗被捕

热门文章

  1. 白发怎么调理成黑发,白发能调理成黑发可能吗?
  2. 中科大计算机科学夏令营,中科大计算机保研夏令营
  3. discus mysql 性能_百万纪录级mysql数据库以及discuz!优化
  4. 游戏史上30位最有影响力的人
  5. 单频阻抗匹配:采用四分之一波长变换器
  6. Trash Problem
  7. spring security+jwt 登录认证
  8. 【目标检测-YOLO】YOLOv5-v6.0-网络架构详解(第二篇)
  9. 百度AI技术「通用物体与场景识别」开发使用体验
  10. 办公文书处理属于计算机应用中的,电大计算机应用基础总结基础知识单选题