hdu4597play games【记忆化搜索】
2015-12-22 11:43
246 查看
继续作死就是不想写C#大作业 嘤嘤嘤 继虚拟机安不上、数据库连不上、网不好使之后,居然codeblocks都罢工==
这是一个长得像博弈的记忆化搜索(当然有人说是用博弈写的,代码居然还是这;还有人用区间dp写的 ,等学到那里再说)开始我就各种纠结怎么表示、怎么递归状态啊 。二呵呵的写了两个函数分别调用表示两个人依次取数的过程,仨人还得写仨函数呗→_→既然每个人都默认是聪明的,那么他俩每步取得过程都是按当前最优!几个人都是一样的!
Dp值表示剩下这些数里能取的最大值,继续的讲解我再想……估计今天又不想写大作业了
这是一个长得像博弈的记忆化搜索(当然有人说是用博弈写的,代码居然还是这;还有人用区间dp写的 ,等学到那里再说)开始我就各种纠结怎么表示、怎么递归状态啊 。二呵呵的写了两个函数分别调用表示两个人依次取数的过程,仨人还得写仨函数呗→_→既然每个人都默认是聪明的,那么他俩每步取得过程都是按当前最优!几个人都是一样的!
Dp值表示剩下这些数里能取的最大值,继续的讲解我再想……估计今天又不想写大作业了
/****** hdu4597 2015.12.20-12.21 93MS 4892K 1240 B C++ *****/ #include <iostream> #include<cstdio> #include<cstring> using namespace std; int sum,t,n,num1[30],num2[30],dp[30][30][30][30]; int dfs(int la,int ra,int lb,int rb,int sum) { if(dp[la][ra][lb][rb]) return dp[la][ra][lb][rb]; if(la>ra&&lb>rb) return 0; int maxn=0; if(la<=ra) { maxn=max(maxn,sum-dfs(la+1,ra,lb,rb,sum-num1[la])); maxn=max(maxn,sum-dfs(la,ra-1,lb,rb,sum-num1[ra])); } if(lb<=rb) { maxn=max(maxn,sum-dfs(la,ra,lb+1,rb,sum-num2[lb])); maxn=max(maxn,sum-dfs(la,ra,lb,rb-1,sum-num2[rb])); } dp[la][ra][lb][rb]=maxn; return maxn; } int main() { // freopen("cin.txt","r",stdin); scanf("%d",&t); while(t--) { scanf("%d",&n); sum=0; for(int i=1;i<=n;i++) { scanf("%d",&num1[i]); sum+=num1[i]; } for(int i=1;i<=n;i++) { scanf("%d",&num2[i]); sum+=num2[i]; } memset(dp,0,sizeof(dp)); dfs(1,n,1,n,sum); printf("%d\n",dp[1] [1] ); } return 0; }
相关文章推荐
- PHP 7.0 升级备注
- 关于UITableView的一些细碎知识点总结
- md5密码加盐
- 工厂模式-简单工厂模式
- iOS中UIWebView的一个需求:获得js图片请求完成的回调时机
- 做人的工作
- 一个系统
- git生成SSH key
- OC-KVO
- elasticsearch的store属性跟_source字段
- Ext.js5表单—(triggers触发器)(baseCSSPrefix)(specialkey)利用Ext.js提供的框架创建自己的表单(查询表单)(51)
- (C#)Winform修改DateTimePicker控件的背景色Winform中日期控件DateTimePicker默认是不能修改背景色和边框色的
- scala语法 基础2
- 盐值加密-MD5
- 【SSH快速进阶】——Hibernate 多对一映射 和 一对多映射
- POJ1037A decorative fence(动态规划+排序计数+好题)
- Java API —— HashMap类 & LinkedHashMap类
- 有些星座天生不适合干有些事情,如果一定要为之恐怕就会落到饿死的地步了!你知道自己这个星座有哪些事情是容易让自己饿死的吗?
- 在Linux系统中安装web端的远程连接工具Wetty
- Tab不同子对话框间函数互相调用