当前位置: 首页 > article >正文

C++ | Leetcode C++题解之第552题学生出勤记录II

题目:

题解:

class Solution {
public:
    static constexpr int MOD = 1'000'000'007;

    vector<vector<long>> pow(vector<vector<long>> mat, int n) {
        vector<vector<long>> ret = {{1, 0, 0, 0, 0, 0}};
        while (n > 0) {
            if ((n & 1) == 1) {
                ret = multiply(ret, mat);
            }
            n >>= 1;
            mat = multiply(mat, mat);
        }
        return ret;
    }

    vector<vector<long>> multiply(vector<vector<long>> a, vector<vector<long>> b) {
        int rows = a.size(), columns = b[0].size(), temp = b.size();
        vector<vector<long>> c(rows, vector<long>(columns));
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                for (int k = 0; k < temp; k++) {
                    c[i][j] += a[i][k] * b[k][j];
                    c[i][j] %= MOD;
                }
            }
        }
        return c;
    }

    int checkRecord(int n) {
        vector<vector<long>> mat = {{1, 1, 0, 1, 0, 0}, {1, 0, 1, 1, 0, 0}, {1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0}, {0, 0, 0, 1, 0, 1}, {0, 0, 0, 1, 0, 0}};
        vector<vector<long>> res = pow(mat, n);
        long sum = accumulate(res[0].begin(), res[0].end(), 0ll);
        return (int)(sum % MOD);
    }
};

http://www.kler.cn/a/393908.html

相关文章:

  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent深入学习(四)
  • 将Excel文件的两个表格经过验证后分别读取到Excel表和数据库
  • WEB攻防-通用漏洞SQL注入sqlmapOracleMongodbDB2等
  • 【OH】openHarmony开发环境搭建(基于windows子系统WSL)
  • golang如何实现sse
  • 大数据开发面试宝典
  • [ 网络安全开源项目 ] 市面上常见的开源 HIDS 有哪些 ?
  • 计算机视觉中的中值滤波:经典案例与Python代码解析
  • centos7上安装mysql
  • 分享 pdf 转 word 的免费平台
  • Rust 语言学习笔记(二)
  • Django基础用法+Demo演示
  • 2025年软考高项论文该怎么备考与复习?
  • 遥感大数据智能分析与应用
  • vue2和vue3的区别详解
  • 『VUE』25. 组件事件与v-model(详细图文注释)
  • web安全漏洞之ssrf入门
  • Spring MVC练习
  • 【python】python使用虚拟环境
  • C++初阶:类和对象(上)
  • Golang | Leetcode Golang题解之第563题二叉树的坡度
  • mysql中的EXISTS和NOT EXISTS使用详解
  • 单例模式详解:如何优雅地实现线程安全的单例
  • 业务开发问题之ConcurrentHashMap
  • docker Network(网络)
  • 如何利用AI实现弯道超车:信息时代的新机遇