Hdu 4597记忆化搜索
好久没有做题了,水平已经完全在学弟之下了。
一个吉林邀请赛最水的题目。:(
其实这题一看到数据范围,只可以想到思路,直接爆搜,加个记忆化。
这题虽然A了,但是我还是没太想清楚一些边界情况,心虚着A了。
我的代码如下:
/*************************************************************************
> File Name: 4597.c
> Author: Stomach_ache
> Mail: 1179998621@qq.com
> Created Time: 2014年03月02日 星期日 13时04分27秒
> Propose:
************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h> #define max(x, y) ((x) > (y) ? (x) : (y))
#define min(x, y) ((x) < (y) ? (x) : (y)) int a[], b[], dp[][][][], n, t;
int sum_a[], sum_b[]; int
dfs(int f1, int e1, int f2, int e2) { if (dp[f1][e1][f2][e2] != -)
return dp[f1][e1][f2][e2];
if (f1 > e1 && f2 > e2)
return dp[f1][e1][f2][e2] = ; int res = , sum = ;
if (f1 <= e1) sum += sum_a[e1] - sum_a[f1-];
if (f2 <= e2) sum += sum_b[e2] - sum_b[f2-]; if (f1 <= e1) {
res = max(res, sum - dfs(f1+, e1, f2, e2));
res = max(res, sum - dfs(f1, e1-, f2, e2));
}
if (f2 <= e2) {
res = max(res, sum - dfs(f1, e1, f2+, e2));
res = max(res, sum - dfs(f1, e1, f2, e2-));
} return dp[f1][e1][f2][e2] = res;
} int
main(void) { scanf("%d", &t);
while ( t-- ) {
scanf("%d", &n);
int i;
sum_a[] = sum_b[] = ;
for (i = ; i <= n; i++) {
scanf("%d", a+i);
sum_a[i] = sum_a[i-]+a[i];
}
for (i = ; i <= n; i++) {
scanf("%d", b+i);
sum_b[i] = sum_b[i-]+b[i];
} memset(dp, -, sizeof(dp));
printf("%d\n", dfs(, n, , n));
} return ;
}
Hdu 4597记忆化搜索的更多相关文章
- HDU 4597 记忆化搜索
² 博弈取牌—记忆化搜索 题目描述: 有两副带有数字的牌,(数字>0)两人轮流取,取中了某张牌,自己的分数就加上牌上的数字,但只能从两端取,每人都会用最优的策略使得自己的分数最高.问A先取,他能 ...
- hdu 4722(记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 思路:简单的记忆化搜索,留意一下A==0时的情况就可以了. #include<iostre ...
- hdu 1514 记忆化搜索
题意是给4堆(堆的高度小于等于40)有颜色(颜色的种类小于等于20)的物品,你有一个篮子最多能装5件物品,每次从这4堆物品里面任取一件物品放进篮子里,但是取每堆物品时,必须先取上面的物品,才能取下面的 ...
- hdu 1208 记忆化搜索
题目大意:只能按照格子上的数字*方向走,从左上走到右下Sample Input42331121312313110Sample Output3 直接记忆化搜索,注意是0的情况 #include<c ...
- hdu 4960 记忆化搜索 DP
Another OCD Patient Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot ...
- hdu 2089 记忆化搜索写法(数位dp)
/* 记忆化搜索,第二维判断是否是6 */ #include<stdio.h> #include<string.h> #define N 9 int dp[N][2],digi ...
- HDU 1978 记忆化搜索(dfs+dp)
Y - How many ways Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- hdu 1078(记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1078 //dp[i][j]表示从点i,j处开始能获得的最多cheese #include <io ...
- hdu 1978 记忆化搜索
注意: dp[i][j] 表示(i,j)这个点有多少种方式 mark[i][j]表示这个点是否走过 假设有直接返回dp[i][j] dp的求法为全部梦走到点的dp的和 注意mark ...
随机推荐
- 威胁快报|Solr dataimport成挖矿团伙新型利用方式
概述 近日,阿里云安全团队监测到挖矿团伙利用solr dataimport RCE(CVE-2019-0193)作为新的攻击方式对云上主机进行攻击,攻击成功后下载门罗币挖矿程序进行牟利.该团伙使用的恶 ...
- container中的内容 垂直-水平居中
.container{ display: box; display: -webkit-box; -webkit-box-pack: center; -webkit-box-align: center; ...
- c++ string 字符串
转载 http://www.renfei.org/blog/introduction-to-cpp-string.html 运算符重载 + 和 +=:连接字符串 =:字符串赋值 >.> ...
- JS 中 Tween 的使用
JavaScript Tween算法及缓动效果 Flash做动画时会用到Tween类,利用它可以做很多动画效果,例如缓动.弹簧等等.我这里要教大家的是怎么利用flash的Tween类的算法,来做j ...
- Django--Cookie和Session组件
什么是Cookie: cookie的工作原理是:由服务端产生内容,浏览器收到请求之后保存在本地:当浏览器再次访问的时候,浏览器会自动带上这个cookie,这样服务端就能去通过这个cookie来判断你是 ...
- Linux中如何安装mysql数据库
安装mysql 1.解压源码压缩包 如果服务器可以上网也可以采用在线安装方式,在线安装操作简单具体见下面在线安装步骤 进入源码压缩包所在目录输入#tar -zxvf mysql-5.6.17-linu ...
- (大概是最全的解决方法)使用bandicam录制视频导入pr后音画不同步问题
遇到这个问题大部分都是使用了VBR来录制视频导致的, 搜集了各种能够找到的方法,并没有每个尝试过 一 Handbrake转码 Audio out of sync AFTER importing 解决方 ...
- Leetcode162. Find Peak Element寻找峰值
示例 2: 输入: nums = [1,2,1,3,5,6,4] 输出: 1 或 5 解释: 你的函数可以返回索引 1,其峰值元素为 2: 或者返回索引 5, 其峰值元素为 6. 说明: 你的解法 ...
- 微服务开源生态报告 No.10
「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...
- js的模块化写法
记得前两天自己写一个动画首页,动画很复杂,我用的fullpage虽然相对比较简单,但是每个页面的animation各有差异,需要相对控制,估计有上千行的js代码,写的心情乱糟糟的. 如何让代码量巨大, ...