【来源】:

2008年哈尔滨区域赛题目

【题目链接】:

http://acm.hdu.edu.cn/showproblem.php?pid=2452

【参考博客】:

https://blog.csdn.net/watermuch/article/details/9465185

【题意】:

真的要好好检讨,英语不好,这个题就别想做了。

意译一波,就是船是有两位领导  进行领航,一位叫做V,另一位叫G。

给出一幅有向无环图,每一个节点都有一个权值,如果经过这个节点都会获得对应的权值。

从一个入度为0的节点开始,到某个出度为0的节点停止。

但是两个人的想法不同:

V想要权值和尽可能大,G想要权值和尽可能小。

最后问,给出一个F,如果在一波操作之后获得的权值和大于等于F则”V胜利“,否则就”G荣誉“。


【题解】:

在图上跑DAG最长路,边记录对应的dp值,边跑,如果当前领航的人是谁,就分别写出对应的走法。

一定需要记忆化搜索,主要是因为多个起点,记忆化尽可能减少复杂度。


【代码】:

 #include<bits/stdc++.h>
using namespace std;
const int N = 1e4+; vector<int>G[N];
int dp[N][],w[N],du[N];
int n,m,f; /*
多组输入,记住要清空
*/
void Init(){
for(int i=;i<=n;i++){
du[i] = dp[i][] = dp[i][] = ;
G[i].clear();
}
}
/*
DAG记忆化搜索
dp[i][1/0]
对于第i个节点来说:
[1]——V在领航,他想要权值最大化。
[0]——G在领航,他想要权值最小化。 */ int dfs(int u,int cur){ cur %= ;
if( dp[u][cur] ) return dp[u][cur]; int Size = G[u].size() ;
if( Size == ) return w[u] ; int maxz = - , minz = 0x3f3f3f3f;
for(int i=;i<Size;i++){
int to = G[u][i];
/*
请注意V,G交替领航,当前位置来说,下一个点是最大化还是最小化、
1——Max
0——Min
*/
if( cur ){
maxz = max( maxz , dfs(to,cur+) ) ;
}else{
minz = min( minz , dfs(to,cur+) ) ;
}
} /*
但是过程中的节点的权值都会被记录并返回到上面的for里面。 */
if( cur ) return dp[u][cur] = maxz + w[u] ;
else return dp[u][cur] = minz + w[u] ;
}
int main()
{
while(~scanf("%d%d%d",&n,&m,&f)){
Init();
for(int i=;i<=n;i++) scanf("%d",&w[i]);
for(int i=,u,v;i<=m;i++){
scanf("%d%d",&u,&v);
G[u].push_back(v);
du[v] ++ ;
}
/*
∵V先手领航
∴他的目标就是让自己的值最大化,使其大于等于f.
*/
int maxz = - ;
for(int i=;i<=n;i++){
//题目要求要从入度为0的节点开始.
if( !du[i] ){
maxz = max( maxz , dfs(i,) ) ;
}
}
if( maxz >= f ) puts("Victory");
else puts("Glory");
}
return ;
}

【记忆化搜索】Navy maneuvers的更多相关文章

  1. HDU2452 Navy maneuvers 记忆化搜索

    这题目意思能忍?读了半年,乱七八糟的 记忆化搜索 拖拖的,dp[i][0]代表以获得最小值为目标的船以i为起点.dp[i][1]代表以获得最大值为目标的船以i为起点.接下来暴力枚举入度为0的点为起点, ...

  2. [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索

    1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...

  3. 【BZOJ-3895】取石子 记忆化搜索 + 博弈

    3895: 取石子 Time Limit: 1 Sec  Memory Limit: 512 MBSubmit: 263  Solved: 127[Submit][Status][Discuss] D ...

  4. hdu3555 Bomb (记忆化搜索 数位DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  5. zoj 3644(dp + 记忆化搜索)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4834 思路:dp[i][j]表示当前节点在i,分数为j的路径条数,从 ...

  6. loj 1044(dp+记忆化搜索)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26764 思路:dp[pos]表示0-pos这段字符串最少分割的回文 ...

  7. DP(记忆化搜索) + AC自动机 LA 4126 Password Suspects

    题目传送门 题意:训练指南P250 分析:DFS记忆化搜索,范围或者说是图是已知的字串构成的自动机图,那么用 | (1 << i)表示包含第i个字串,如果长度为len,且st == (1 ...

  8. HDU1978 记忆化搜索

    How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  9. bzoj4562: [Haoi2016]食物链--记忆化搜索

    这道题其实比较水,半个小时AC= =对于我这样的渣渣来说真是极大的鼓舞 题目大意:给出一个有向图,求入度为0的点到出度为0的点一共有多少条路 从入读为零的点进行记忆化搜索,搜到出度为零的点返回1 所有 ...

随机推荐

  1. 最近公共祖先lca模板

    void dfs(int x,int root){//预处理fa和dep数组 fa[x][0]=root; dep[x]=dep[root]+1; for(int i=1;(1<<i)&l ...

  2. 解决Linux下Firefox无法启动的问题

    在linux下使用Firefox连接被测系统的GUI,一次偶然操作导致linux系统运行缓慢,Firefox无法正常操作,从system monitor 杀掉所有java进程将Firefox强行关闭. ...

  3. 使用 PM2 将 Node.js 的集群变得更加容易

    介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...

  4. mysql授权指定ip远程登录

    use user //更新用户表: UPDATE `user` SET `Host` = '175.6.6.230' where `Host` = '175.6.6.230'; //授权用户表: GR ...

  5. vscode 设置 eclipse 快捷键

    点击安装之后,默认就是要ecliplse快捷键了 注意:部分快捷键可能会由于和原来的冲突而失效,例如快速在“下面插入行” ,我还是不能使用ecliplse的Shift+Enter,而要用Ctrl+En ...

  6. 代理模式之Cglib代理

    Cglib代理,也叫做子类代理.在内存中构建一个子类对象从而实现对目标对象功能的扩展. l  JDK的动态代理有一个限制,就是使用动态代理的对象必须实现一个或多个接口.如果想代理没有实现接口的类,就可 ...

  7. Handle的特点

    handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程), 也就是说Handler对象初始化后,就默认与对它初始 ...

  8. Mybati example generatorConfig.xml 配置详解

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  9. Sass安装与Webstorm File Watcher配置

    一.Sass安装 ruby安装 mac系统默认安装了ruby,可以直接跳过此步骤,linux和windows需要安装ruby环境. windows安装ruby环境: 到ruby官网下载自己系统适用的版 ...

  10. maven项目无法导入Oracle的jdbc连接jar包【我】

    导入一个maven项目,启动一直报错 找不到Oracle的jdbc连接驱动Class, 用Eclipse导入 ojdbc14.jar 连接包,各种方法都无效,无法引入到部署后的lib目录中,可以直接放 ...