首页 > 其他分享 >简单几个状态的转移,一维数组上的状态

简单几个状态的转移,一维数组上的状态

时间:2023-07-20 21:11:25浏览次数:33  
标签:状态 const 一维 int long 数组 using dp mod

题目连接:E - Distinct Adjacent (atcoder.jp)

这种求领边染色问题可以用二维表示

状态:

dp [i] [0/1] 代表第 i 个的选择和 1 号不同和相同

转移方程:

dp[i][0] = (dp[i - 1][0] * (m - 2) + dp[i - 1][1] * (m - 1)) % mod;

dp[i][1] = dp[i - 1][0] % mod;

属性:dp[n][0];

#include<bits/stdc++.h>

using namespace std;
using ull = unsigned long long;
using ll = long long;
using PII = pair<int,int>;
#define IOS ios::sync_with_stdio(false),cin.tie(0)
#define endl "\n"
#define pb push_back
const int N=1e6+10;
const int INF=0x3f3f3f3f;
const int mod = 998244353;
ll dp[N][2];
int main()
{
    int n, m;
    cin >> n >> m;
    dp[1][1] = m;
    for(int i = 2; i <= n; i ++)
    {
        dp[i][0] = (dp[i - 1][0] * (m - 2) + dp[i - 1][1] * (m - 1)) % mod;
        dp[i][1] = dp[i - 1][0] % mod;
    }
    cout << dp[n][0] << endl;
    return 0;
}

 相似的题目链接:D - Poisonous Full-Course (atcoder.jp)

标签:状态,const,一维,int,long,数组,using,dp,mod
From: https://www.cnblogs.com/ZouYua/p/17569677.html

相关文章

  • 2023.7.20 周四:稀疏数组
    1importjava.sql.SQLOutput;2importjava.util.Arrays;3importjava.util.Scanner;4//稀疏数组5publicclasstest{6publicstaticvoidmain(String[]args){7//首先创建一个11*11的二维数组0:没有棋子1:白棋2:黑棋8int[][]a......
  • 动态查询修改增加,动态查询集合和数组
    privateList<Core>cores;privateList<Container>containers以集合的形式将其他类进行封装。当多个表互相关联时,可以用这个方式将其他表的实例以集合的形式封装通过for循环获取集合中的数据通过这几张表中某一个数据进行查询mappers:publicList<Phone>findid(Integerid......
  • 在调试状态下使用本机ip访问webapi
    1、在调试模式下无法通过ip访问webapi,但是可以使用localhost或者127.0.0.1加端口访问   2、因为在调试模式下运行它,Vs2022默认正在使用IIS-Express。默认情况下,IIS-Express仅绑定到localhost. 3、为了调试状态可以通过ip访问,需要打开位于以下位置的IIS-Express应用......
  • java json转整形数组
    Java中Json转整型数组的方法在Java中,我们经常需要处理Json数据。Json是一种轻量级的数据交换格式,广泛应用于数据传输和配置文件中。在某些情况下,我们需要将Json中的数据转换为整型数组来进行进一步处理。本文将介绍如何在Java中将Json转换为整型数组,并提供相应的代码示例。使用Ja......
  • 2023.7.20 环形子数组的最大和
    求子数组最大和可以用dp解决,所以环形子数组也可以用dp解决。最简单的就是破环成链,将原数组再复制一遍然后接到尾端,然后对每个起点做一次求子数组最大和dp。但是由于n的范围较大,这样做的时间复杂度是\(n^2\),会超时。所以必须想办法优化。根据这张图,我们可以把子数组分为二种情......
  • java 反射 入参数组
    Java反射之入参数组在Java开发中,反射是一种强大的技术,它允许程序在运行时动态地检查类、对象、方法和字段的信息,以及在运行时调用对象的方法。通过反射,我们可以在运行时获取类的信息,并且可以通过类的名称动态地创建对象和调用方法。本文将重点介绍Java反射中的入参数组。什么是入......
  • javascript中json 对象 数组之间相互转化的示例
    在JavaScript中,你可以使用JSON.stringify()将JSON对象转换为JSON字符串,使用JSON.parse()将JSON字符串转换为JSON对象。而要将JSON对象转换为数组,可以使用Object.values()方法,而要将数组转换为JSON对象,可以使用Array.reduce()方法。下面是这些转换的示例代码:将JSON对象转换为JSON......
  • 树状数组
    //树状数组//利用lowbit函数将区间划分为以二进制结尾的长度的小区间,然后利用这些小区间相加,减少时间复杂度//树状数组的本质就是前缀和+可修改区间,求单点前缀和,如果是求某一的区间和,需要稍加修改,下面有类似例题,维护前缀和还有i*前缀和就可以//也就是说树状数组就是更......
  • 代码随想录训练营 Day01- 数组(上)
    概述第一天主要学习的是数组相关的内容,相关学习的内容包括数组的基本特性的学习,二分搜索方法的学习。数组特点数组的基本特点包括:下标从0开始内存连续性(Java中定义数组需要直接声明其空间大小)数组元素不可以删,只能覆盖ArrayList底层是数组实现,其实际上应该叫一......
  • 黑魂 206战斗状态管理
    在PlayerHandle里找到sensor,新建一个脚本BattleManager。在class上面加入:[RequireComponent(typeof(CapsuleCollider))]。保存之后,在sensor重新引入这个脚本就会自动创建一个胶囊体新建一个Layer叫Sensor,把sensor的Layer改成Sensor。敌人sensor的Layer也要一样: 参数都改成......