尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

2025 ICPC 网络赛2 E

2025 ICPC 网络赛2 E
📅 发布时间:2026/6/18 10:54:01

E. Zero

矩阵快速幂优化 dp。

考虑第一个数任意选,有 \(2^m\) 种选择,那么第 \(2\sim n-1\) 就有 \(2^{m-1}\) 种选择,因为最后要和前面的异或结果为 \(0\) ,所以最后一位是固定的,但是此时最后一位可能和倒数第二位相等,所以 \(1\sim n-2\) 的异或结果就肯定为 \(0\),设 \(f_i\) 表示序列长度为 \(i\) 时的答案,那么转移方程为:

\[f_n = 2^m\cdot (2^m - 1)^{n-2} - f_{n-2} \cdot (2^m - 1) \]

注意到 \(n\) 最大为 \(1\times10^9\),那么可以采取矩阵快速幂优化转移。
则有:

\[ \begin{bmatrix} f_{n} \\ f_{n-1} \\ f_{n-2} \\ (2^m-1)^{n-1} \end{bmatrix} = \begin{bmatrix} 0 & -(2^m-1) & 0 & 2^m \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 2^m-1 \end{bmatrix} \begin{bmatrix} f_{n-1} \\ f_{n-2} \\ f_{n-3} \\ (2^m-1)^{n-2} \end{bmatrix} \]

代码中 Z 类型为自动取模类。

using Z = ModInt<MOD[0]>;template<class T>
struct Matrix {i64 N;vector<vector<T>> A;Matrix() : N(0) {}Matrix(int n) : N(n), A(n, vector<T>(n, 0)) {}Matrix(const vector<vector<T>>& mat) {assert(!mat.empty() && !mat[0].empty()); // 确保非空N = mat.size();A = mat;}const vector<T>& operator[](int i) const {return A[i];}Matrix operator*(const Matrix &b) const {assert(N == b.N);Matrix res(N);for (int i = 0; i < N; i++) {for (int k = 0; k < N; k++) {T tmp = A[i][k];if (tmp == 0) {continue;}for (int j = 0; j < N; j++) {res.A[i][j] += tmp * b.A[k][j];}}}return res;}//快速幂实现Matrix power(Matrix res, i64 k) const {Matrix base = *this;while (k) {if (k & 1) {res = res * base;}base = base * base;k >>= 1;}return res;}
};void solve() {int n, m;cin >> n >> m;vector<Z> f(4);Z m2 = power<Z>(2, m);f[1] = 1, f[2] = 0;f[3] = m2 * (m2 - 1) - (m2 - 1);if (n <= 3) {cout << f[n] << "\n";return;}vector a(4, vector<Z>(4));auto base = a;a[0][1] = 1 - m2, a[0][3] = m2;a[1][0] = 1;a[2][1] = 1;a[3][3] = m2 - 1;base[0][0] = f[3], base[1][0] = f[2];base[2][0] = f[1], base[3][0] = (m2 - 1) * (m2 - 1);Matrix<Z> A(a);A = A.power(A, n - 4);A = A * base;cout << A[0][0] << "\n";}
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin >> t;while (t--) {solve();}return 0;
}

相关新闻

  • 西电微机原理与接口技术笔记总结
  • Mysql查找含字符串表字段
  • 真正的元推理,不需要人类的认可,恰恰是人类追求元推理,只有元推理才能彻底解放人类

最新新闻

  • 算法优化中的分支预测与流水线设计的技术8
  • 浏览器用户画像分析大屏搭建——从布局到交互
  • OpenProject深度解析:开源项目管理平台的架构设计与企业级实践指南
  • 上海婚姻纠纷律所榜单:五家专业靠谱机构实务能力与服务特色全解析 - 外贸老黄
  • 2026娄底防水补漏靠谱服务商盘点:屋面/厨卫/外墙/地下室渗水维修详解,适配湘中丘陵梅雨高湿防潮防冻甄选指南 - 宅安选房屋修缮
  • AI辅助前端监控:从异常采集到智能根因定位的体系构建

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号