题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1126

题解:一道基础的dp就是简单的递推可以设dp[height_left][height_right],但是这样显然回boom内存,所以不妨直接考虑两座塔之间的差于是便有了dp[i][j]表示考虑到第几个时两座塔差值是多少,然后就是递推了,要么加积木嫁到高的塔上要么就嫁到底的塔上要么都不嫁,这样递推方程就好写了。如果这样还是boom内存的话可以考虑用滚动优化i这一维。

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int M = 5e5 + ;
int a[] , dp[][M];
int main() {
int t;
scanf("%d" , &t);
int Case = ;
while(t--) {
int n;
scanf("%d" , &n);
int sum = ;
for(int i = ; i <= n ; i++) {
scanf("%d" , &a[i]);
sum += a[i];
}
sum /= ;
memset(dp , - , sizeof(dp));
dp[][] = ;
int flag = ;
for(int i = ; i <= n ; i++) {
flag = i % ;
for(int j = ; j <= sum ; j++) {
dp[flag][j] = max(dp[flag ^ ][j] , dp[flag][j]);
if(dp[flag ^ ][j] != -) {
dp[flag][j + a[i]] = max(dp[flag][j + a[i]] , dp[flag ^ ][j] + a[i]);
if(j >= a[i]) {
dp[flag][j - a[i]] = max(dp[flag][j - a[i]] , dp[flag ^ ][j]);
}
else {
dp[flag][a[i] - j] = max(dp[flag][a[i] - j] , dp[flag ^ ][j] - j + a[i]);
}
}
}
}
if(dp[flag][] > ) {
printf("Case %d: %d\n" , ++Case , dp[flag][]);
}
else {
printf("Case %d: impossible\n" , ++Case);
}
}
return ;
}

最新文章

  1. instanceof, isinstance,isAssignableFrom的区别
  2. nodejs渲染模板
  3. DEV中dx:ASPxPopupControl 控件的使用(在窗口关闭或隐藏时,清楚文本框中的内容)
  4. URLDecoder与URLEncoder
  5. mouseenter(fn)和mouseleave、mouseover和mouseout的的区别
  6. php.ini xdebug
  7. 配置yii访问远程数据库
  8. mysql的时间函数
  9. IE9中jquery发生Object未定义原因及解决办法
  10. Jsp笔记(1)
  11. Hadoop之RPC简单使用(远程过程调用协议)
  12. ElasticSearch 插件jdbc import(1)-----定时执行
  13. python之读取配置文件模块configparser(二)参数详解
  14. HashMap源码分析(一)
  15. Classification
  16. Javascript高级编程学习笔记(7)—— 函数
  17. 挖坑:handoop2.6 开启kerberos(全流程学习记录)
  18. js json转字符串
  19. Visual Studio启用64位 IIS Express 解决 x64位的dll 而出现 未能加载文件或程序集“xxxxxxxx”或它的某一个依赖项。试图加载格式不正确的程序。
  20. Android实现不同Active页面间的跳转

热门文章

  1. 【Android】Android sdk content loader 0%
  2. Java内存模型的基础
  3. xpath beautiful pyquery三种解析库
  4. lvs模式及算法
  5. Spring cloud Feign不支持对象传参解决办法[完美解决]
  6. [Spring cloud 一步步实现广告系统] 14. 全量索引代码实现
  7. Netty学习(四)-TCP粘包和拆包
  8. 【0728 | 预习】第三篇 Python基础
  9. python基础知识 01
  10. java秒杀系列(2)- 页面静态化技术