bzoj1933: [Shoi2007]Bookcase 书柜的尺寸
传送门
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 书柜的尺寸相关推荐
- Bzoj1933 [Shoi2007]Bookcase 书柜的尺寸
Time Limit: 5 Sec Memory Limit: 64 MB Submit: 554 Solved: 212 Description Tom不喜欢那种一字长龙式的大书架,他只想要一个 ...
- [BZOJ1933][Shoi2007]Bookcase 书柜的尺寸(DP)
看到层数只有33,可以推断DP模型的维数一定和33有关. 一个模型:f[i][j][k]f[i][j][k]表示到了第ii本书,第11行的厚度之和为jj,第22行的厚度之和为kk时的最小总高度. 但这 ...
- BZOJ 1933 Shoi2007 Bookcase 书柜的尺寸
1933: [Shoi2007]Bookcase 书柜的尺寸 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 638 Solved: 251 [Subm ...
- BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸 动态规划
Description Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大 ,T ...
- [BZOJ]1933: [Shoi2007]Bookcase 书柜的尺寸 DP
Description Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大,To ...
- [Shoi2007]Bookcase 书柜的尺寸 dp
这道dp算是同类型dp中比较难的了,主要难点在于设置状态上: 如果像平时那样设置,必定爆空间没商量: 下面是一种思路: 先把输入进来的数据按h从大到小排序,这样就可以大大减少状态数, 然后设f[i][ ...
- BZOJ 1933 [Shoi2007] Bookcase 书柜的尺寸
Description Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大,To ...
- BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸
神奇的dp优化. 考虑6维状态的dp,分别表示三行高和宽,显然MLE&&TLE. 把高排个序,从大到小往架上放,那么若不是重开一行便对高度没有影响. 然后求出宽度的sum,dp[i][ ...
- BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸 ——动态规划
状态设计的方法很巧妙,六个值 h1,h2,h3,t1,t2,t3,我们发现t1,t2,t3可以通过前缀和优化掉一维. 然后考虑把h留下还是t留下,如果留下h显然t是会发生改变的,一个int存不下. 如 ...
最新文章
- 一键ghost奥运版_超详细的纯净版windows系统重装示例
- linux结构体大小端,【转】位结构体+大小端模式
- 怎么在谷歌浏览器中安装.crx扩展名的离线Chrome插件?
- Spring Boot快速搭建Web开发框架(Hibernate+Thymeleaf)
- mysql常用命令添加外键主键约束存储过程索引
- ECSHOP4.0 H5端源码运行环境安装
- vue前端项目上线配置
- Struts2 通配符使用
- IE(11)浏览器清理缓存方法
- 《微信小程序进阶实战之分答应用开发(中级项目)》(完整版)
- 使用JavaScript删除HTML元素
- java 线程 设计模式_Java多线程设计模式(四)
- 批量查询域名是否注册
- 【线性代数】6-5:正定矩阵(Positive Definite Matrices)
- [渝粤教育] 中国矿业大学 货币金融学 参考 资料
- 名人堂与代金券 (25 分)(C语言)(链表实现)
- 码蹄集 - MT3029 - 新月轩就餐
- Windows - 百度网盘限速下载慢解决方案(官方提速方法)
- 搭建redis集群-(伪分布式)
- XiaoHu日志 9/7~9/17
热门文章
- 双击放大图片 手指移动图片位置
- python生成简单名片二维码(不带图片)
- AutoCTS: Automated Correlated Time Series Forecasting
- cin、cout的使用
- Java/JSP中使用JDBC连接SQL Server 2005(转自 秋忆)
- Neo4j 完整版安装——neo4j-3.5.6
- 预备作业01 20162316刘诚昊
- QQ自定义登录模拟器
- 计算机主机后面的usb哪个不可接入,电脑主机上的USB介面前面有两个,后面有四个,但是只能用两个...
- mysql不能持久存储数据的是_数据持久化存储