好久没有做题了,水平已经完全在学弟之下了。

一个吉林邀请赛最水的题目。:(

其实这题一看到数据范围,只可以想到思路,直接爆搜,加个记忆化。

这题虽然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记忆化搜索的更多相关文章

  1. HDU 4597 记忆化搜索

    ² 博弈取牌—记忆化搜索 题目描述: 有两副带有数字的牌,(数字>0)两人轮流取,取中了某张牌,自己的分数就加上牌上的数字,但只能从两端取,每人都会用最优的策略使得自己的分数最高.问A先取,他能 ...

  2. hdu 4722(记忆化搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 思路:简单的记忆化搜索,留意一下A==0时的情况就可以了. #include<iostre ...

  3. hdu 1514 记忆化搜索

    题意是给4堆(堆的高度小于等于40)有颜色(颜色的种类小于等于20)的物品,你有一个篮子最多能装5件物品,每次从这4堆物品里面任取一件物品放进篮子里,但是取每堆物品时,必须先取上面的物品,才能取下面的 ...

  4. hdu 1208 记忆化搜索

    题目大意:只能按照格子上的数字*方向走,从左上走到右下Sample Input42331121312313110Sample Output3 直接记忆化搜索,注意是0的情况 #include<c ...

  5. hdu 4960 记忆化搜索 DP

    Another OCD Patient Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Ot ...

  6. hdu 2089 记忆化搜索写法(数位dp)

    /* 记忆化搜索,第二维判断是否是6 */ #include<stdio.h> #include<string.h> #define N 9 int dp[N][2],digi ...

  7. HDU 1978 记忆化搜索(dfs+dp)

    Y - How many ways Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  8. hdu 1078(记忆化搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1078 //dp[i][j]表示从点i,j处开始能获得的最多cheese #include <io ...

  9. hdu 1978 记忆化搜索

    注意: dp[i][j] 表示(i,j)这个点有多少种方式       mark[i][j]表示这个点是否走过  假设有直接返回dp[i][j]    dp的求法为全部梦走到点的dp的和 注意mark ...

随机推荐

  1. 分布式事务中间件 Fescar—RM 模块源码解读

    前言 在SOA.微服务架构流行的年代,许多复杂业务上需要支持多资源占用场景,而在分布式系统中因为某个资源不足而导致其它资源占用回滚的系统设计一直是个难点.我所在的团队也遇到了这个问题,为解决这个问题上 ...

  2. VS 快捷键和正则替换

    本文在VS2017中可用 1.注释 :Ctrl  K C 取消注释: Ctrl K U 2.整理代码格式: Ctrl K D 或者 Ctrl K F 3.快速切换不同的代码窗口  Ctrl+Tab 4 ...

  3. PAT甲级——A1048 Find Coins

    Eva loves to collect coins from all over the universe, including some other planets like Mars. One d ...

  4. 010-利用Selenium+python自动输入博客账号密码登录

    from selenium import webdriver import time def OpenUrl(): # 访问网址 driver.get(url) def Login(): # 查询登录 ...

  5. js 中直接调用和new的区别

    var test = new Test(); // 这里的 test 是什么?  是一个 Test 对象吗?错!这里 test 是一个函数——Test 中返回的 function() { return ...

  6. PetaPoco 基础操作

    //初始化数据库连接 var db=new PetaPoco.Database("connectionStringName"); //查询单个值 long count=db.Exe ...

  7. tensorflow中张量的理解

    自己通过网上查询的有关张量的解释,稍作整理. TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中 ...

  8. phonegap geolocation android 问题

    很纠结的 phonegap 使用定位的时候 android 获取地址异常的慢,为什么呢? 经过分析 如果android 只开启gprs 上网功能 可以立即获取到经纬度 如果只开启wifi 根本就获取不 ...

  9. Django项目:CRM(客户关系管理系统)--54--45PerfectCRM实现账号快速重置密码

    # gbacc_ajax_urls.py # ————————42PerfectCRM实现AJAX全局账号注册———————— from django.conf.urls import url fro ...

  10. bzoj 1034 [ZJOI2008]泡泡堂BNB——贪心

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1034 原来觉得和 bzoj4977跳伞求生 有点像(虽然还没做). 所以对于a[ ]从小到大 ...