状态设计的方法很巧妙,六个值 h1,h2,h3,t1,t2,t3,我们发现t1,t2,t3可以通过前缀和优化掉一维。

然后考虑把h留下还是t留下,如果留下h显然t是会发生改变的,一个int存不下。

如果按照h降序排序,然后计算的时候存总的高度值,就很方便转移了。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; #define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define inf 0x3f3f3f3f int dp[2][2105][2105],n,sumt,prst[80];
struct Book{int h,t;}a[80];
bool cmp(Book x,Book y)
{return x.h>y.h;}
int main()
{
int now=1,pre=0;
memset(dp[now],0x3f,sizeof dp[now]);
dp[now][0][0]=0;
scanf("%d",&n);
F(i,1,n) scanf("%d%d",&a[i].h,&a[i].t),sumt+=a[i].t;
sort(a+1,a+n+1,cmp);
F(i,1,n) prst[i]=prst[i-1]+a[i].t;
F(i,0,n-1)
{
now^=1;pre^=1;
memset(dp[now],0x3f,sizeof dp[now]);
F(j,0,sumt) F(k,0,sumt) if (dp[pre][j][k]!=inf)
{
if (j!=0)
dp[now][j+a[i+1].t][k]=min(dp[now][j+a[i+1].t][k],dp[pre][j][k]);
else
dp[now][j+a[i+1].t][k]=min(dp[now][j+a[i+1].t][k],dp[pre][j][k]+a[i+1].h);
if (k!=0)
dp[now][j][k+a[i+1].t]=min(dp[now][j][k+a[i+1].t],dp[pre][j][k]);
else
dp[now][j][k+a[i+1].t]=min(dp[now][j][k+a[i+1].t],dp[pre][j][k]+a[i+1].h);
if (prst[i]-j-k!=0)
dp[now][j][k]=min(dp[now][j][k],dp[pre][j][k]);
else
dp[now][j][k]=min(dp[now][j][k],dp[pre][j][k]+a[i+1].h);
}
}
int ans=inf;
F(i,0,sumt) F(j,0,sumt)
if (dp[now][i][j]!=inf)
if (i*j*(prst[n]-i-j)!=0)
{
ans=min(ans,max(i,max(j,prst[n]-i-j))*dp[now][i][j]);
}
printf("%d\n",ans);
}

  

最新文章

  1. 李洪强iOS经典面试题141-报错警告调试
  2. 对&quot;QQGame-大家来找茬&quot;的辅助工具的改进
  3. Hibernate 应用
  4. Mathematics:Dead Fraction(POJ 1930)
  5. UCOS 解读代码
  6. HDfs命令
  7. ajax往后台传json格式数据报415错误
  8. ASP.NET小知识
  9. Android HTTPS(3) IOException: Hostname 解决方案
  10. xcode4的环境变量,Build Settings参数,workspace及联编设置
  11. java_jdbc_batch处理_主键id获取
  12. Android主题换肤 无缝切换
  13. Codeforces Round #258 (Div. 2) 小结
  14. Android 开发笔记___存储方式__共享参数__sharedprefences
  15. win10利用自带的IIS搭建ftp遇到瓶颈,离线求解!!!
  16. python定时执行任务的三种方式
  17. pymongo 使用方法(增删改查)
  18. 动态令牌验证遇到的问题(判断用户长按backspace键)
  19. [android] 开启新的activity获取他的返回值
  20. git关于文件权限修改引起的冲突及忽略文件权限的办法

热门文章

  1. COGS 1144. [尼伯龙根之歌] 精灵魔法
  2. ping 不通。无法访问目标主机
  3. 【iview input 回车刷页面bug】input 就一个的时候 有form的时候 回车会刷页面,如果就一个input,可以不要form,或者form里面两个input 将一个input v-show false 就可以了
  4. layui 数据table隐藏表头
  5. java实现中文或其他语言及标点符号等转换成unicode字符串,或unicode的16进制码转换回文字或符号等
  6. Android Studio 中安装 apk 被拆分成多个 slice,如何禁止?
  7. Java中的线程--Lock和Condition实现线程同步通信
  8. TCP头校验和计算算法详解
  9. mongodb详细教程
  10. linux中复制文件夹的所有文件到指定目录