状态机模型

作者: Tsukinousag | 来源:发表于2021-03-18 10:37 被阅读0次

1.大盗阿福

原题链接

  • 方法一 闫氏dp分析法
  • 方法二 引入状态机模型

动态规划 O(n)

所谓的状态机,可以默认为搜索的方向数组,加到了动态规划上面.(个人理解)

我们发现,这道题目一共就两种状态.

  • 不打劫

  • 打劫

既然状态已经罗列好了,接下来就是状态之间的转移.

①考虑,当前不打劫,能否转移到下一个不打劫.

可以,因为这个商铺不打劫,那么下一个商铺当然也可以不打劫.

②考虑,当前不打劫,能否转移到下一个打劫.

可以,因为这个商铺没有打劫,那么下一个商铺打劫,不违反相邻两个商铺不能都打劫.

③考虑,当前打劫,能否转移到下一个不打劫.

可以,虽然当前商铺打劫,但是下一个商铺不打劫,所以满足题意.

④考虑,当前打劫,能否转移到下一个打劫.

不可以 ,因为两个相邻的商铺不能同时都打劫.

对于状态机而言,如果上一个状态合法,而且可以转移到当前状态,那么这个转移合法.

个人理解:状态机的转移类似于图论里的添边,如果这条边合理,就引入这条边,状态机的选定类似于状态分类,走哪些种类的路达到最后的目的地

#include <iostream>
#include <algorithm>

using namespace std;

const int N=1e5+10;
const int INF=0x3f3f3f3f;

int w[N],dp[N][2];
int n,t;

int main()
{
    cin>>t;
    while(t--)
    {
        cin>>n;
        for(int i=1;i<=n;i++)   cin>>w[i];
        dp[0][0]=0,dp[0][1]=-INF;
        for(int i=1;i<=n;i++)
        {
            dp[i][0]=max(dp[i-1][0],dp[i-1][1]);
            dp[i][1]=dp[i-1][0]+w[i];
        }
        cout<<max(dp[n][0],dp[n][1])<<endl;
    }
    
    return 0;
}

相关文章

  • Android 状态机

    概念 有限状态机即FSM,简称状态机,表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 状态机可以描...

  • 有限状态机与JavaScript

    有限状态机与JavaScript 有限状态机是一种很有用的编程模型,简单来说,我理解的有限状态机一个显著的作用是降...

  • 更容易理解的一致性算法Raft

    副本状态机模型 如下图,集群中多台服务器保存一份Log副本及内部状态机。所谓一致性协议就是保证每个状态机的Log是...

  • 数据结构和算法在前端领域的应用 — 状态机

    什么是状态机 状态机表示若干个状态以及在这些状态之间的转移和动作等行为的数学模型。 通俗的描述状态机就是定义了一套...

  • 状态机

    什么是状态机 状态机也叫有限状态机(FSM),是一个计算的数学模型。状态个数有限,在一个时刻,系统处于一种状态。收...

  • Unity/C#一点心得

    【状态机】 有限状态机分成两种模型: ①实时型,它永远在Update。 ②事件型,仅事件发生时才Enter、Exe...

  • 状态机模型

    1.大盗阿福 原题链接[https://www.acwing.com/problem/content/1051/]...

  • 有限状态机是什么

    1.背景介绍 什么是有限状态机? 有限状态机(Finite-state machine)是一个非常有用的模型,可以...

  • 状态机

    参考文献 有限状态机 状态机:表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型 有限状态机的下一个状态...

  • boost 状态机--中级篇(实例)

    boost 状态机--中级篇以Camera为例,讲解了Boost状态机模型的使用方法;而本文的主要: 对原文中的C...

网友评论

    本文标题:状态机模型

    本文链接:https://www.haomeiwen.com/subject/fgducltx.html