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

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
using namespace std;
struct data{int h,t;
}a[75];
int n,h,t,c,ans,f[2][2105][2105],sum[75];
inline bool cmp(data a,data b){return a.h>b.h;}
int main(){scanf("%d",&n);for (int i=1;i<=n;i++) scanf("%d%d",&a[i].h,&a[i].t);sort(a+1,a+n+1,cmp);for (int i=1;i<=n;i++) sum[i]=sum[i-1]+a[i].t;memset(f[0],10,sizeof(f[0]));f[0][0][0]=c=0;for (int i=1;i<=n;i++){c=1-c;memset(f[c],10,sizeof(f[c]));h=a[i].h;t=a[i].t;for (int j=0;j<=sum[i-1];j++)for (int k=0;j+k<=sum[i-1];k++){if (f[1-c][j][k]>100000000) continue;if (j) f[c][j+t][k]=min(f[c][j+t][k],f[1-c][j][k]);else f[c][j+t][k]=min(f[c][j+t][k],f[1-c][j][k]+h);if (k) f[c][j][k+t]=min(f[c][j][k+t],f[1-c][j][k]);else f[c][j][k+t]=min(f[c][j][k+t],f[1-c][j][k]+h);if (sum[i-1]!=j+k) f[c][j][k]=min(f[c][j][k],f[1-c][j][k]);else f[c][j][k]=min(f[c][j][k],f[1-c][j][k]+h);}}ans=2100000000;for (int j=1;j<sum[n];j++)for (int k=1;j+k<sum[n];k++)if (f[c][j][k]<100000000) ans=min(ans,max(j,max(k,sum[n]-j-k))*f[c][j][k]);printf("%d",ans);
}

bzoj1933: [Shoi2007]Bookcase 书柜的尺寸相关推荐

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

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

  2. [BZOJ1933][Shoi2007]Bookcase 书柜的尺寸(DP)

    看到层数只有33,可以推断DP模型的维数一定和33有关. 一个模型:f[i][j][k]f[i][j][k]表示到了第ii本书,第11行的厚度之和为jj,第22行的厚度之和为kk时的最小总高度. 但这 ...

  3. BZOJ 1933 Shoi2007 Bookcase 书柜的尺寸

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

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

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

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

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

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

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

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

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

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

    神奇的dp优化. 考虑6维状态的dp,分别表示三行高和宽,显然MLE&&TLE. 把高排个序,从大到小往架上放,那么若不是重开一行便对高度没有影响. 然后求出宽度的sum,dp[i][ ...

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

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

最新文章

  1. 一键ghost奥运版_超详细的纯净版windows系统重装示例
  2. linux结构体大小端,【转】位结构体+大小端模式
  3. 怎么在谷歌浏览器中安装.crx扩展名的离线Chrome插件?
  4. Spring Boot快速搭建Web开发框架(Hibernate+Thymeleaf)
  5. mysql常用命令添加外键主键约束存储过程索引
  6. ECSHOP4.0 H5端源码运行环境安装
  7. vue前端项目上线配置
  8. Struts2 通配符使用
  9. IE(11)浏览器清理缓存方法
  10. 《微信小程序进阶实战之分答应用开发(中级项目)》(完整版)
  11. 使用JavaScript删除HTML元素
  12. java 线程 设计模式_Java多线程设计模式(四)
  13. 批量查询域名是否注册
  14. 【线性代数】6-5:正定矩阵(Positive Definite Matrices)
  15. [渝粤教育] 中国矿业大学 货币金融学 参考 资料
  16. 名人堂与代金券 (25 分)(C语言)(链表实现)
  17. 码蹄集 - MT3029 - 新月轩就餐
  18. Windows - 百度网盘限速下载慢解决方案(官方提速方法)
  19. 搭建redis集群-(伪分布式)
  20. XiaoHu日志 9/7~9/17

热门文章

  1. 双击放大图片 手指移动图片位置
  2. python生成简单名片二维码(不带图片)
  3. AutoCTS: Automated Correlated Time Series Forecasting
  4. cin、cout的使用
  5. Java/JSP中使用JDBC连接SQL Server 2005(转自 秋忆)
  6. Neo4j 完整版安装——neo4j-3.5.6
  7. 预备作业01 20162316刘诚昊
  8. QQ自定义登录模拟器
  9. 计算机主机后面的usb哪个不可接入,电脑主机上的USB介面前面有两个,后面有四个,但是只能用两个...
  10. mysql不能持久存储数据的是_数据持久化存储