2024/08/19 每日一题

news/2024/9/12 23:43:39/文章来源:https://www.cnblogs.com/XuGui/p/18373642

LeetCode 552 学生出勤记录II

方法1:动态规划

class Solution {static int MOD = 1_000_000_007;static int MX = 1_000_01;static int[][][] dp = new int[MX][2][3];static { // 静态代码块dp[0][0][0] = 1; // 只有此时合法for (int i = 1; i < MX; i++) {dp[i][0][0] = add(dp[i - 1][0][0], dp[i - 1][0][1], dp[i - 1][0][2]);dp[i][0][1] = dp[i - 1][0][0];dp[i][0][2] = dp[i - 1][0][1];dp[i][1][0] = add(dp[i][0][0], dp[i - 1][1][0], dp[i - 1][1][1], dp[i - 1][1][2]);// dp[i][1][0] = dp[i - 1][0][0] + dp[i - 1][0][1] + dp[i - 1][0][2] + dp[i - 1][1][0] + dp[i - 1][1][1] + dp[i - 1][1][2];dp[i][1][1] = dp[i - 1][1][0];dp[i][1][2] = dp[i - 1][1][1];}}static int add(int... nums) {int res = nums[0];for (int i = 1; i < nums.length; i++) res = (res + nums[i]) % MOD;return res;}public int checkRecord(int n) {int ans = 0;for (int j = 0; j <= 1; j++) {for (int k = 0; k <= 2; k++) {ans = (ans + dp[n][j][k]) % MOD;}}return ans;}
}

方法2:动态规划 + 快速幂优化

class Solution {static int MOD = 1_000_000_007;static int length = 6;public int checkRecord(int n) {int[][] mat = { {1, 1, 1, 0, 0, 0},{1, 0, 0, 0, 0, 0},{0, 1, 0, 0, 0, 0},{1, 1, 1, 1, 1, 1},{0, 0, 0, 1, 0, 0},{0, 0, 0, 0, 1, 0} };return qpow(mat, n); // 第一列求和}static int qpow(int[][] mat, int n) {int[][] res = new int[length][length];for (int i = 0; i < length; i++) res[i][i] = 1;while (n > 0) {if ((n & 1) == 1)res = multiply(res, mat);mat = multiply(mat, mat);n >>= 1;}int ans = 0;for (int i = 0; i < length; i++) ans = (ans + res[i][0]) % MOD;return ans;}static int[][] multiply(int[][] arr1, int[][] arr2) {int[][] arr = new int[length][length];for (int i = 0; i < length; i++) {for (int j = 0; j < length; j++) {for (int k = 0; k < length; k++) {// 保证相乘不会越界arr[i][j] += mul(arr1[i][k], arr2[k][j]);arr[i][j] %= MOD; // 保证后续相加不越界}}}return arr;}static int mul(int num1, int num2) {int res = 0;while (num2 > 0) {if ((num2 & 1) == 1)res = (res + num1) % MOD;num1 = (num1 + num1) % MOD;num2 >>= 1;}return res;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小米电视主页导航栏修改啦

小米电视导航栏可以修改啦,终于不再杂乱无章了。 步骤一:点击我的,拉到最下方,导航管理步骤二:进入导航管理后,按遥控器OK键,就可以移动了。OK 键 按遥控器菜单键,就可以删除或者添加了。菜单键 就是这么简单,赶紧去试试吧版权申明本文由:二萌生活发布,如需转载请注…

安装MySQL报错ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)

今天要在本地装个mysql,发现mysql-5.7.19-winx64版总是报错由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题。,去微软官网找到了最新的Visual C++ Redistributable for Visual Studio,下载后发现还是不停地报错。怀疑是系统不兼容,没办法只好安装m…

Centos scp 免密传输文件

mkdir -p ~/.ssh 1、在 A 服务器上,进入.ssh 目录; [root@iZam205rbu8s7yra2fop0nZ ~]# cd ~/.ssh/2、在 A 服务器上面的.ssh 目录下生成密钥; [root@iZam205rbu8s7yra2fop0nZ .ssh]# ssh-keygen -t rsa 生成两个密钥,一个是私钥,一个是公钥;3、在 B 服务器上创建.ssh 文…

mysql57小版本升级操作指南

1. 关停 注意要使用 慢速关闭mysql,这样InnoDB在关闭之前执行完整的清除和更改缓冲区合并。 登录到mysql中 执行 mysql> SET GLOBAL innodb_fast_shutdown=0; mysql> shutdown;2. 备份 注:备份数据目录和应用程序,注意mysql的属主属组 数据目录查找方式: MySQL 的数据…

MySQL 亿级数据平滑迁移实战

本文介绍了一次 MySQL 数据迁移的流程,通过方案选型、业务改造、双写迁移最终实现了亿级数据的迁移。作者:来自 vivo 互联网服务器团队- Li Gang本文介绍了一次 MySQL 数据迁移的流程,通过方案选型、业务改造、双写迁移最终实现了亿级数据的迁移。 一、背景 预约业务是 vivo…

星尘智能发布AI机器人助理Astribot S1

原文链接:https://mp.weixin.qq.com/s/P26zhHzmuqe0M2TDTLRlvg星尘智能很高兴正式发布 AI 机器人助理—— Astribot S1 我们精心打磨了 S1 背后的技术与产品细节, 希望它为你而生,为你而智(Naturally Yours)。星尘智能 S1 产品视频请看:https://www.bilibili.com/video/B…

再谈《Visual Studio中编写x64汇编的具体方法》

很久以前,写了一篇 《VS2010中编写x64汇编的具体方法》 当时也没有太深入研究,只是粗粗的实现了功能而已。后来看了微软官方文档,才发现有更简单更合理的设置方法。 微软原文如下: MASM for x64 (ml64.exe) | Microsoft Learn将汇编程序语言文件添加到 Visual Studio C++ 项…

Linux安装JDK两种方式详细教程(附图)

Linux安装JDK详细教程(图文教程)这里介绍两种方式:yum安装方式和手动安装1、yum安装1.1 查看JDK版本,找到你想要安装的JDK版本,这里以 JDK1.8 为例输入命令:yum -y list java*1.2 安装JDK1.8输入命令:yum install -y java-1.8.0-openjdk.x86_64出现Complete!安装完成。…

我的新项目又来咯!

这次的项目周期计划 1 个月左右,争取带大家快速搞定,能够作为秋招时简历上的亮眼项目~大家好,我是鱼皮,今天分享个我的新项目公开课预告~ 今晚(8 月 22 号)晚 20 点 ,我会继续在 B 站和抖音《程序员鱼皮》账号 直播新项目,依然是从 0 到 1 全程直播开发! 这次的项目周…

【日记】好想换电脑(634 字)

正文最近连着发了好多高温橙色预警,就算坐在行内都能感觉到明显的闷热。每次写日记想一想今天都做了些什么,总是觉得什么也没做。上班之后感觉生活十分枯燥。明明学生时代有那么多的事情可以写。昨天涩得太晚了,2 点钟才睡。今天有些睡眠不足。也因此中午睡了一个好觉。明明…

Java学习笔记2(数据库的三大范式)

什么是范式?范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。 最常用的三大范式第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子项。(实体的属性即表中的列) ps:举个例子,地址列山东省青岛市市北区,可以这样存储,但是实际上不满足第一范式,…

Unity跳过闪屏页

github上一段代码,跳过Unity Logo启动屏: github链接: https://github.com/psygames/UnitySkipSplash/blob/main/SkipSplash.cs Unity API文档,Unity暴露了SplashScreen.Stop() 停止启动屏的API只需要写个静态方法,使用[RuntimeInitializeOnLoadMethod(RuntimeInitializeL…