18730 涂色问题

这个问题可以通过动态规划来解决。我们可以定义一个状态dp[i][j],表示前i个牛舍中最后一个牛舍的颜色是j的涂色方案数量。然后我们可以通过状态转移方程来更新dp[i][j]。

状态转移方程如下:

dp[i][j] = dp[i-1][k] (k != j)

然后我们需要对所有的dp[i][j]求和,得到的结果就是所有的涂色方案数量。

但是由于n和m的范围都可以达到1e12,直接使用动态规划会导致时间复杂度和空间复杂度都无法接受。因此我们需要找到一个更有效的方法来解决这个问题。

观察可以发现,如果我们知道了前i-1个牛舍的涂色方案数量,那么我们就可以通过一次计算得到前i个牛舍的涂色方案数量。因此我们可以使用矩阵快速幂来优化我们的算法。

以下是C++代码实现:

#include <iostream>
using namespace std;
typedef long long ll;
const ll mod = 1e9+7;ll quick_pow(ll a, ll b) {ll ans = 1;while(b) {if(b & 1) ans = ans * a % mod;a = a * a % mod;b >>= 1;}return ans;
}int main() {ll n, m;cin >> n >> m;ll ans = quick_pow(m, n);ll temp = quick_pow(m-1, n-1) * m % mod;ans = (ans - temp + mod) % mod;cout << ans << endl;return 0;
}

在这段代码中,我们首先读取输入的n和m,然后计算m的n次方和(m-1)的(n-1)次方乘以m,这两个值分别代表所有的涂色方案数量和不会让奶牛发疯的涂色方案数量。然后我们将两个值相减,得到的结果就是会让奶牛发疯的涂色方案数量。最后,我们输出结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3281548.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【iOS】—— iOS持久化

iOS持久化 1. 数据持久化的目的2. iOS持久化的方案3. 数据持久化方式的分类内存缓存磁盘缓存 4. 沙盒机制5. 沙盒的目录结构获取应用程序的沙盒路径每次编译代码会生成新的沙盒路径&#xff0c;每次运行获得的沙盒路径都不一样。访问沙盒目录常用C函数介绍沙盒目录介绍 6. 持久…

Tomcat IntelliJ IDEA整合

一、下载及安装Tomcat 下载官网&#xff1a;Apache Tomcat - Welcome! 1.点击红色框中的任意一个版本 2.点击下载 3.解压后放在任意路径&#xff08;我的是放在D盘&#xff09; 4.在bin目录下找到startup.bat&#xff0c;点击启动Tomcat 5.如果双击启动后&#xff0c;终端出…

什么是通孔,盲孔,埋孔

通孔&#xff1a;贯穿所有层的孔&#xff0c;容易被逆向破解。 盲孔&#xff1a;表层和内层中间的孔&#xff0c;破解难度加大。 埋孔&#xff1a;内层的孔&#xff0c;破解难度极大。 贯通孔&#xff0c; 浪费了许多宝贵的布线通道&#xff0c;为解决这一矛盾&#xff0c;出…

【综合案例】使用DevEco Studio编写人气卡片

效果展示 知识点 绝对定位 作用&#xff1a;控制组件位置&#xff0c;可以实现层叠效果 特点&#xff1a; 参照 父组件左上角 进行偏移绝对定位后的组件 不再占用自身原有位置 语法&#xff1a;.position(位置对象) 参数&#xff1a;{ x: 水平偏移量 , y: 垂直偏移量} z…

(三)延时任务篇——通过redis的zset数据结构,实现延迟任务实战

前言 在前一篇内容中我们介绍了如何使用redis key过期失效的监控&#xff0c;完成任务延时关闭的功能&#xff0c;同时官方并不支持使用此种方式实现&#xff0c;由于其安全性较低&#xff0c;存在数据丢失的情况。本节内容是对延迟任务的又一实现方案&#xff0c;通过redis z…

多线程上下文切换:详解与优化

多线程上下文切换&#xff1a;详解与优化 一、什么是多线程上下文切换&#xff1f;二、对性能的影响2.1 优点2.2 缺点 三、优化策略 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 一、什么是多线程上下文切换&#xff1f; 多线程上下文切…

使用pfld模型进行表盘读数检测

目录 1. 下载项目和数据集2. 配置环境3. 训练和测试3.1 训练3.2 测试 4. 参考 使用pfld模型对压力表进行读表检测 1. 下载项目和数据集 下载项目&#xff1a; git clone https://github.com/zhouayi/pfld.git下载数据集&#xff1a; wget https://github.com/zhouayi/pfld/r…

钢琴模拟器

文章目录 钢琴模拟器代码结构HTML结构CSS样式JavaScript功能 源码效果图 钢琴模拟器 代码结构 HTML结构 <html>: HTML文档的根元素。 <head>: 包含文档的元数据。 <base>: 指定相对URL的基准。 <title>: 指定页面的标题。 <style>: 包含嵌入的…

Linux中进程间通信和理解管道

管道文件为内存及文件&#xff0c;没有名称&#xff08;匿名管道&#xff09; 如何让两个进程看到同一个管道文件&#xff1f; 通过fork创建子进程完成。 匿名管道可以用于父子进程之间的通信。 匿名管道是一个固定大小的缓冲区&#xff0c;写端写满后就会阻塞&#xff0c;…

Python自动发送邮件如何设置邮件内容格式?

Python自动发送邮件时&#xff0c;如何自动化发送HTML格式邮件&#xff1f; Python是一种功能强大且灵活的编程语言&#xff0c;广泛用于各种自动化任务&#xff0c;其中包括自动发送邮件。AokSend将介绍在使用Python自动发送邮件时&#xff0c;如何设置邮件内容的格式&#x…

Mongodb集合操作

文章目录 1、进入容器2、如果数据库不存在&#xff0c;则创建数据库&#xff0c;否则切换到指定数据库3、在 MongoDB 中&#xff0c;创建集合不是必须操作。当你插入一些文档时&#xff0c;MongoDB 会自动创建集合。4、查看数据库列表5、查看集合6、显示创建集合7、删除集合 1、…

创新突破 | OpenCSG发布StarShip CodeReview v1.0.0 Beta版

1. 代码审查很关键但耗时耗力 在软件开发过程中&#xff0c;代码审查是确保代码质量的关键环节。代码审查有助于维护代码标准和发现潜在错误&#xff0c;但也常常耗费大量时间和精力。审查者不仅需要深入理解代码逻辑&#xff0c;还要在繁复的逻辑中识别Bug&#xff0c;这个过…

Python_Flask学习笔记

1.配置 查询字符串的形式传参 app.route(/book/list) def book_list():page request.args.get(page,default1,typeint)return f"您获取的是{page}的图书列表&#xff01;"if __name__ __main__:app.run()3.HTML模版渲染 from flask import Flask,render_templa…

C#知识|对象序列化与反序列化

哈喽,你好啊,我是雷工! 前面练习了将数据存储到TXT文件,今天接着学习对象系列化与XML文件基础的应用, 以下为学习笔记。 01 对象的序列化 序列化是在开发中非常常见的,无论是WinForm开发,还是Web开发都会用得到序列化。 1.1、文本保存对象的缺点 txt文件可以用记事本直…

【p-export-excel】一个轻松实现Excel文件导出的JavaScript插件

p-export-excel&#xff08;github&#xff1a;https://github.com/pbstar/p-export-excel&#xff09;是一个功能强大的JavaScript插件&#xff0c;专门用于导出Excel文件。它支持xlsx和csv两种格式&#xff0c;且提供了丰富的配置选项&#xff0c;允许开发者根据实际需求进行…

贝斯和吉他的区别,怎么打贝斯谱子?一来看看贝斯和吉他的区别,怎么打贝斯谱子的相关内容

在音乐的浩瀚宇宙中&#xff0c;贝斯与吉他作为两大支柱性乐器&#xff0c;虽外观相仿&#xff0c;实则内在差异显著&#xff0c;各自以独特的音色与演奏技法在乐队中发挥着不可或缺的作用。 首先&#xff0c;从音乐功能来看&#xff0c;贝斯以其深沉有力的低音线条&#xff0c…

飞书打卡 快捷指令

使用快捷指令定时飞书打卡 在网上找了一圈&#xff0c;只有钉钉打卡的快捷指令&#xff0c;但是公司换飞书&#xff0c;哪个打工人不怕忘记打卡呢&#xff0c;所以自己研究了一下&#xff0c;其实也很简单。 找url 问题的最关键是打开飞书的打卡界面 如果只是打开飞书APP 很…

iPhone 上的误删的联系人去哪了?如何从 iPhone 上找回联系人的 4 种方法

如果您丢失了所有 iPhone 联系人&#xff0c;那将是一场灾难&#xff0c;因为许多人没有记住电话号码的习惯。iPhone 联系人恢复可以让整个过程变得更容易。如果您仍然对如何在 iPhone 上恢复联系人感到困惑&#xff0c;您可以找到有关 5 个出色解决方案的更多详细信息。只需阅…

C++11 可变参数模板

C11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模板&#xff0c;相比C98/03&#xff0c;类模版和函数模版中只能含固定数量的模版参数&#xff0c;可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象&#xff0c;使用起来需要一定的技巧&#x…

书面表达优化助手

大家在写文章时肯定被自己的文章写的不够好而烦恼&#xff0c;但是自己又往往看不出问题在哪里&#xff0c;那么有没有一款工具可以根据自己写的文章&#xff0c;给出一个内容优化建议呢&#xff1f; 下面给大家介绍一下书面表达优化助手&#xff0c;它可以根据你的文章给出一个…