BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸
神奇的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 书柜的尺寸相关推荐
- 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 ...
- BZOJ 1933 [Shoi2007] Bookcase 书柜的尺寸
Description Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大,To ...
- BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸 ——动态规划
状态设计的方法很巧妙,六个值 h1,h2,h3,t1,t2,t3,我们发现t1,t2,t3可以通过前缀和优化掉一维. 然后考虑把h留下还是t留下,如果留下h显然t是会发生改变的,一个int存不下. 如 ...
- bzoj 1933: [Shoi2007]Bookcase 书柜的尺寸
题意:给出n本书的高度和厚度,把它们放在三行的书架上(每一行至少一本书),问书架正面的最小面积. 题解:先按高度从大到小排序,保证后面加入的书不会对高度造成影响,再dp.f[i][j][k]f[i][ ...
- [Shoi2007]Bookcase 书柜的尺寸 dp
这道dp算是同类型dp中比较难的了,主要难点在于设置状态上: 如果像平时那样设置,必定爆空间没商量: 下面是一种思路: 先把输入进来的数据按h从大到小排序,这样就可以大大减少状态数, 然后设f[i][ ...
- Bzoj1933 [Shoi2007]Bookcase 书柜的尺寸
Time Limit: 5 Sec Memory Limit: 64 MB Submit: 554 Solved: 212 Description Tom不喜欢那种一字长龙式的大书架,他只想要一个 ...
- bzoj1933: [Shoi2007]Bookcase 书柜的尺寸
传送门 S前面那一坨就是max(hi) 然后就是大力dp 设f[i][j][k]表示前i本书,第一层长度和为j,第二层长度和为k的最小第三层长度. 显然可以滚掉一维 转移十分简单. #include& ...
最新文章
- php中rbac三张表的关系,thinkphp中RBAC数据表分析
- 使用 FRP 反向代理实现 Windows 远程连接
- linux 下 用户与用户组
- [Eclipse]代码已被写入关于如何切换到unix在新行
- 使用 ASP.NET 配置类
- linux服务器黑屏_xshell连接Linux系统(小红帽7.3)服务器,导致服务器黑屏
- C#中NameValueCollection类用法详解
- golang生成c-shared so供c语言或者golang调用到例子
- Python机器学习 集成算法实例
- Spring cloud 微服务架构之Ribbon/Fegin连接超时ReadTimeout问题
- 04 ZooKeeperAPI实战
- Social Influence as Intrinsic Motivation for Multi-Agent Deep Reinforcement Learning-笔记
- 美国大学 计算机,U.S.News美国大学计算机专业排名
- 国庆假期,人在囧途,感慨颇多
- 题解 【中学高级本-网络流24题】餐巾计划
- NMOS和PMOS管
- python批量处理word格式_用python批量处理word文档
- 小小丁出生——有图有真相
- [渝粤教育] 郑州轻工业大学 自动控制原理 参考 资料
- 手机墙刷APP下载量骗推广费 10人因涉嫌合同诈骗被捕