首页 > 其他分享 >POJ 2287 Tian Ji -- The Horse Racing(贪心 记忆化搜索)

POJ 2287 Tian Ji -- The Horse Racing(贪心 记忆化搜索)

时间:2022-12-28 13:57:18浏览次数:69  
标签:Horse return cur -- dfs 2287 int 田忌 贪心

POJ 2287 Tian Ji -- The Horse Racing

题意

​ 田忌赛马的故事,相信大家都知道,不多赘述。田忌和国王各有 n 匹马,每匹马都有一个能力值,两匹马赛跑的话,能力值高者胜。田忌每胜一局,就能获得200元奖赏,请问田忌最多能得到多少奖赏。

思路

​ 贪心可以想到,如果当前一定会输,田忌就派最小的马;如果能赢,派最大的去赢;如果打平,就搜索一下,取派最小和派最大中的更优解。

​ 这个状态我们可以用\(f[i][j]\)表示,表示的是田忌手上的马还剩下第 i 匹到第 j 匹,闭区间。根据上面的贪心策略做转移即可。

​ 这题有贪心的双指针做法,但是我放在这里是希望大家能用记忆化搜索来写这道题,这是帮助理解区间DP的一道很好的例题。而且这种区间两头取的模型,你们以后也会常常见到,一般这个模型的题目,写记忆化搜索会比递推更好写,更容易处理边界条件。

实现

#include <bits/stdc++.h>

using namespace std;
const int inf = 0x3f3f3f3f;

const int N = 1005;
int n;
int a[N], b[N]; //a是田忌 b是国王
int f[N][N]; //F(i,j,k) 在第i轮比赛的时候 田忌剩下的马是[j, k]  

bool cmp(int a, int b)  {return a > b;}

int dfs(int l, int r, int cur) //第几轮 
{
    if(cur == n + 1)    return 0;
    if(f[l][r] != -1)   return f[l][r];
    if(a[l] > b[cur])
        return f[l][r] = dfs(l + 1, r, cur + 1) + 1;
    else if(a[l] < b[cur])
        return f[l][r] = dfs(l, r - 1, cur + 1) - 1;
    else 
        return f[l][r] = max(dfs(l + 1, r, cur + 1), dfs(l, r - 1, cur + 1) - 1);
}

int main()
{
    while(scanf("%d", &n))
    {
        if(!n)  break;
        memset(f, -1, sizeof f);
        for(int i = 1; i <= n; i ++)
            scanf("%d", &a[i]);
        for(int i = 1; i <= n; i ++)
            scanf("%d", &b[i]);

        sort(a + 1, a + n + 1, cmp); 
        sort(b + 1, b + n + 1, cmp);

        printf("%d\n", 200 * dfs(1, n, 1));
    }
}

标签:Horse,return,cur,--,dfs,2287,int,田忌,贪心
From: https://www.cnblogs.com/DM11/p/17009965.html

相关文章

  • 篇章二
    我在人间凑数的日子举世誉之而不加劝,举世非之而不加沮遇横逆之来而不怒,遇变故之起而不惊,当非常之而不辩山的东边住着我爱的女孩,我的爱不怕鲁途遥远.人心不是一天凉的......
  • Linux与Windows系统字符集的简要学习
    背景最近同事反馈公司的产品再更新了mysql-8.0.31的驱动jar包后部分功能报错.问题核心原因研发这边石磊老师已经找到了.结论是Mysql8.0.26之后的数据库驱动好像会识别......
  • 华为欧拉OpenEuler(Linux)修改IP
    Euler版本:openEuler-22.03-LTS-x86_64-dvd.iso1.使用root账号登录系统2.查看当前IP命令:#ipaddr找到ip文件位置ens33 3.进入IP配置文件路径命令:# cd/etc/sys......
  • 篇章三
    我在人间凑数的日子不要因为没有掌声就失去自信!“卡滋克深入敌后才发现,原来孤立无援的是自己”。止语是上等的智慧,止心是上等的律己答应我先努力吧,别在下次相遇的时候......
  • 数据结构:并查集 学习笔记
    数据结构:并查集学习笔记基础知识并查集是一种树形数据结构。在全国青少年信息学奥林匹克系列竞赛大纲中难度为6,是提高级中学习的数据结构。并查集的基本操作:查询一......
  • minio
    下载:https://dl.min.io/server/minio/release/根据系统环境下载linux:https://dl.min.io/server/minio/release/linux-amd64/minio设置为可执行chmod+xminio后台运......
  • 华普物联HP-AIOCAT-244 农林灌溉无线监管方案 CAT1/4G远程网络IO控制器 多路DI DO采集
    中国作为农林业大国,同时也意味着是用水大国,而且中国水资源极为短缺,水资源危机已成为制约经济可持续发展的重要的因素。我国农林业用水浪费严重,灌溉水利用系数低,因此走科技......
  • 篇章四
    我在人间凑数的日子“总有热烈的乍见之欢温柔的久处不厌很难得.”花落花开,山茶玫瑰难相会。不堪心碎,晨露滴如泪。寂寞谁知,清月凉如水。夜无寐,千杯难醉,谁解相思味。思......
  • ENVI扩展工具:批量打开和加载图像小助手
    本工具很早之前就发布了,最近有一个小更新,所以写一个帮助文档详细介绍下功能。本工具包含如下几个功能:批量打开特定文件名的图像(此功能需要安装“中国国产卫星支持工具”......
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:VLCPlay
    本文简述如何在Smobiler中使用VLCPlayer插件,该插件支持播放rtsp流。Step1.新建一个SmobilerForm窗体,再拖入VLCPlay,布局如下在设计器中给VLCPlayer.Url赋值或者在窗......