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

题意:给出一个图,n个点,m条边,保证无环,每个点有一个权值。指定一个点作为起点,Victory和Glory轮流选择下一个走到的点,将走过的点的权值相加,走到不能再向前为止。如果它们都选最用策略,问Victory能不能使权值和大于等于f,如果可以则Victory赢,否则Glory赢。

思路:

记忆化搜索,以u为起点时,Victory希望权值和dp[u]最大,Glory希望dp[u]最小。

用二维数组,dp[0][u]表示以u为起点能取得的最小值,dp[1][u]为能取得的最大和。

因为Victory和Glory轮流选择路线,所以有如下转移方程:

dp[0][u] = min{dp[1][v] + a[u], dp[0][u]}

dp[1][u] = max{dp[0][v] + a[u], dp[1][u]}

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stdlib.h>
#define INF 0x7fffffff
#define MOD 1000000007
#include <vector>
using namespace std;
typedef long long ll;
const int MAXN = 10005;
int n, m, f, s;
int in[MAXN], a[MAXN], dp[5][MAXN];
vector<int> G[MAXN];void dfs(int u)
{if(dp[0][u] >= 0) return;if(!G[u].size()){dp[0][u] = dp[1][u] = a[u];return;}dp[0][u] = INF; dp[1][u] = 0;for(int i = 0; i < G[u].size(); i++){int v = G[u][i];dfs(v);dp[0][u] = min(a[u] + dp[1][v], dp[0][u]);dp[1][u] = max(a[u] + dp[0][v], dp[1][u]);}
}int main()
{#ifdef LOCALfreopen("data.in", "r", stdin);#endifint u, v;while(~scanf("%d%d%d", &n, &m, &f)){for(int i = 1; i <= n; i++){scanf("%d", &a[i]);G[i].clear();}memset(in, 0, sizeof(in));for(int i = 0; i < m; i++){scanf("%d%d", &u, &v);G[u].push_back(v);in[v]++;}for(int i = 1; i <= n; i++)if(!in[i]){s = i; break;}memset(dp, -1, sizeof(dp));dfs(s);if(dp[1][s] >= f)printf("Victory\n");elseprintf("Glory\n");}return 0;
}

HDU 2452 Navy maneuvers (记忆化搜索)相关推荐

  1. HDU2452 Navy maneuvers 记忆化搜索

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

  2. 博弈背景下的记忆化搜索/题意理解 (HDU 2452 Navy maneuvers)

    题目链接 龙门粗口** 当代大学生粗口** acmer粗口** 这个题意真的非常让人想爆粗口,一开始,我们队两个人一起读这个题,结果两个船又是turns to又是exchange的,把我们两个英语不是 ...

  3. hdu 4597 Play Game(记忆化搜索)

    题目链接:hdu 4597 Play Game 题目大意:给出两堆牌,仅仅能从最上和最下取,然后两个人轮流取,都依照自己最优的策略.问说第一个人对多的分值. 解题思路:记忆化搜索,状态出来就很水,dp ...

  4. HDU 5001 概率DP || 记忆化搜索

    2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP  測 ...

  5. Palindrome subsequence HDU - 4632 区间dp|记忆化搜索

    // 区间dp import java.util.Scanner;/**** @author CN*/ public class main {static int mod = 10007;static ...

  6. 【DFS(记忆化)】hdu 2452 Navy maneuvers

    http://acm.hdu.edu.cn/showproblem.php?pid=2452 题意:在一个单向无环图中, 1)所有的岛都是相连的: 2)有一个特殊的岛1st(岛的编号不一定是1),可以 ...

  7. hdu 5535 Cake 构造+记忆化搜索

    闯橙睦涛帕赂币昭操涎椅势崩昭酉饲环苛刑饶几涛每皇忠伤谥倘两够昭当膳唤帕菲淹负恫皇兰僬卣搪仗跃甲磕允康倘饶好睦考戮巳环几吓戮两几负必侵忠缆倘纠饶贪膳淹兰由沟几复倘饲拖昭刑焦僬把踪萍负蜕必梢陡合弛坡淹两操 ...

  8. 【记忆化搜索】Navy maneuvers

    [来源]: 2008年哈尔滨区域赛题目 [题目链接]: http://acm.hdu.edu.cn/showproblem.php?pid=2452 [参考博客]: https://blog.csdn ...

  9. hdu 4722(记忆化搜索)

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

最新文章

  1. ​2012年至今,细数深度学习领域这些年取得的经典成果
  2. 苹果接盘倒下的无人车公司:吴恩达旗下,曾估值2亿美元,CEO及大部分员工被裁...
  3. iptables规则备份和恢复,任务计划chkconfig工具systemd管理服务
  4. redis有序集合(Zset)
  5. 【问题解决方案】ImportError: No module named 'openpyxl'/‘xlrd’
  6. 限界分支法(队列方式)追踪解:01背包问题
  7. 深入理解 Java G1 垃圾收集器GC调优
  8. 程序员常去的103个网站(转)
  9. java 树同构_有根树的同构 和 无根树的同构
  10. java面向对象的理解_面向对象及其核心的概念:抽象、继承与多态、封装
  11. Delphi 使用 Visual Studio Shell , 开源为期不远
  12. Win8 Style App 播放Smooth Streaming
  13. PHP 结构控制 if else / switch / while / do while
  14. java常用类--------枚举的基本使用
  15. 2021年值得持续关注的10大网安工具
  16. 3年过去了!翟天临的微博又被写论文的研究生们喷了个底朝天...
  17. [附源码]Node.js计算机毕业设计二手书交易软件设计与实现Express
  18. 教你win10怎么从电脑查找隐藏视频
  19. 安全面试之安全基础(二)
  20. KEGG注释(生信学习)

热门文章

  1. android怎么调起记事本,安卓手机上怎么找到便签或记事本?
  2. 即时通讯(四)---初始化融云
  3. 2021年安全员-A证-主要负责人(广东省)考试APP及安全员-A证-主要负责人(广东省)考试试题
  4. Kong系列-05-使用入门
  5. 计算机报声音怎么弄,excel表格输入数据报语音-excel的语音报数怎么弄出来?
  6. 快速入门Web阅读器开发
  7. Http/Https/TCP详解
  8. RASPBERRY PI3 - RPi.GPIO 官方使用文档翻译
  9. Service Testing
  10. EasyExcel CellWriteHandler注入CellStyle不生效问题