QOJ #8147. Math Exam 题解

news/2025/10/3 17:03:37/文章来源:https://www.cnblogs.com/Scarab/p/19124758

Description

求序列 \(a_{1\cdots n}\) 的个数,满足:\(|a_i|\le m\)\(4\sum_{j=1}^i a_j=(a_i+1)^2\)

\(1\le n\le 10^7\)\(1\le m\le 2n\)\(m\) 是奇数。

Solution

首先推一下式子会发现 \(a_1=1\)\(\forall i\geq 2,a_i=a_{i-1}+2\) 或者 \(-a_{i-1}\)

注意到 \(a_i=-a_{i-1}\) 这个东西很难刻画,考虑转成绝对值。

\(b_i=\frac{|a_i+1|}{2}\),则 \(b_{i+1}=b_i\pm 1\),并且 \(0\leq b_i\leq\frac{|m+1|}{2}\)

对于 \(a_i\geq -1\),如果 \(b_{i+1}=b_i+1\),则钦定 \(a_{i+1}=a_i+2\),否则钦定 \(a_{i+1}=-a_i\)

对于 \(a_i<-1\),如果 \(b_{i+1}=b_i+1\),钦定 \(a_{i+1}=-a_i\),否则钦定 \(a_{i+1}=a_i+2\)

经过计算会发现一组值域在 \(\left[0,\frac{|m+1|}{2}\right]\)\(b_1=1\)\(b\) 恰好一一对应一组 \(a\)

然后就转成了有上下界的格路计数问题,用反射容斥做即可。

时间复杂度:\(O(n)\)

Code

#include <bits/stdc++.h>// #define int int64_tconst int kMaxN = 1e7 + 5, kMod = 998244353;int n, m;
int fac[kMaxN], ifac[kMaxN], s[kMaxN];int qpow(int bs, int64_t idx = kMod - 2) {int ret = 1;for (; idx; idx >>= 1, bs = (int64_t)bs * bs % kMod)if (idx & 1)ret = (int64_t)ret * bs % kMod;return ret;
}inline int add(int x, int y) { return (x + y >= kMod ? x + y - kMod : x + y); }
inline int sub(int x, int y) { return (x >= y ? x - y : x - y + kMod); }
inline void inc(int &x, int y) { (x += y) >= kMod ? x -= kMod : x; }
inline void dec(int &x, int y) { (x -= y) < 0 ? x += kMod : x; }int C(int m, int n) {if (m < n || m < 0 || n < 0) return 0;return 1ll * fac[m] * ifac[n] % kMod * ifac[m - n] % kMod;
}void prework(int n = 1e7) {fac[0] = 1;for (int i = 1; i <= n; ++i) fac[i] = 1ll * fac[i - 1] * i % kMod;ifac[n] = qpow(fac[n]);for (int i = n; i; --i) ifac[i - 1] = 1ll * ifac[i] * i % kMod;
}int S(int l, int r) {l = std::max(l, 0), r = std::min(r, n);return l <= r ? sub(s[r], !l ? 0 : s[l - 1]) : 0;
}int calc(int n, int l, int r, int L, int R) {l += n, r += n;if (l % 2 != 0) ++l;if (r % 2 != 0) ++r;l /= 2, r /= 2;int ret = 0;for (int k = -((n + R) / (R - L)); k <= (n + R) / (R - L); ++k) {inc(ret, sub(S(l + k * (R - L), r + k * (R - L)), S(l + k * (R - L) - R, r + k * (R - L) - R)));}return ret;
}void dickdreamer() {std::cin >> n >> m; --n;for (int i = 0; i <= n; ++i) s[i] = add(!i ? 0 : s[i - 1], C(n, i));std::cout << calc(n, -1, (m + 1) / 2 - 1, -2, (m + 1) / 2) << '\n';
}int32_t main() {
#ifdef ORZXKRfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);
#endifstd::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);int T = 1;// std::cin >> T;prework();while (T--) dickdreamer();// std::cerr << 1.0 * clock() / CLOCKS_PER_SEC << "s\n";return 0;
}

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

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

相关文章

10.03模拟赛t3

CF475E Strongly Connected City 2 题目描述 想象有一座城市,这座城市有 \(n\) 个路口和 \(m\) 条街道。路口编号从 \(1\) 到 \(n\)。 为了提高交通流量,市长决定将每条街道改为单行道。这意味着在连接路口 \(u\) 和…

国庆梦熊集训做题记录

炼石计划T1:https://www.cnblogs.com/yanbinmu/articles/19122547 T2:https://www.cnblogs.com/yanbinmu/articles/19122718D3 作业 A. 关于整除分块 B. 题解:ABC192F Potion 最开始的想法遍历 k 判断可行,然后再想办…

网站ip查询福建 专业网站建设公司

(1).局部组件的使用 ​ 渲染组件-父使用子组件 1: 创建子组件(对象) var Header { template:模板 , data是一个函数,methods:功能,components:子组件们 } 2: 在父组件中声明,根属性components:{ 组件名:组件对象 }3: 在父组件要用的地方使用 <组件名></组件名> …

完整教程:缓存总线是什么?

完整教程:缓存总线是什么?pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

兰博平台: 星云抽卡豪华版. 作者acc177

兰博平台: 星云抽卡豪华版. 作者acc177爽图一个. 开局抽奖. 一个运输船到处吃箱子 抽到刷钱的矿车之后, 刷建筑. 刷到终极谭雅就通了. 终极谭雅配合复制中心, 一次几十万. 爽图一个.

企业网站建设立项报告推广下载app

文章目录 静态绑定动态绑定多态的具体实现向上转型多态的优缺点抽象类抽象类的作用 总结 静态绑定 重载就是典型例子 动态绑定 多态的具体实现 //多态 class Animal{public String name;public int age;//无参构造方法public Animal() {}//有参构造方法public Animal(Strin…

沈阳网站建设 网络服务公司网站怎么做推广

bind绑定类内成员导致 "no matching function for call to ..." 当bind绑定类内成员时&#xff0c;需要指明绑定的成员所在类的位置。 上面未指明Remove函数在哪个类中从而导致错误。 此外 bind 的函数指针类型是const类型的&#xff0c;都需要添加 const 修饰。 S…

中山建设局网站最新事故案例100例

小抄,答案,形成性考核册,形成性考核册答案,参考答案,小抄资料,考试资料,考试笔记第一套1.程序填空程序通过定义学生结构体数组&#xff0c;存储了若干个学生的学号、姓名和三门课的成绩。函数fun 的功能是将存放学生数据的结构体数组&#xff0c;按照姓名的字典序(从小到大排序…

打工人日报#20250927 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

GPT-5 撼动量子计算:AI 在科研领域的颠覆性应用 - 实践

GPT-5 撼动量子计算:AI 在科研领域的颠覆性应用 - 实践2025-10-03 16:50 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; …

python 肘部法则,判点聚类分为几类,K-means聚类分析

想给N、R、Z、W做K-means聚类分析,首先看看分成几类,用肘部法则:#!usr/bin/env python # -*- coding:utf-8 -*- """ @author: Suyue @file: zhoubufaze.py @time: 2025/10/03 @desc: 肘部法则确定最…

AT_abc315_f [ABC315F] Shortcuts

首先朴素 DP 是记录 \(f_{i, j}\) 表示到了第 \(i\) 个点跳了 \(j\) 个点的最小代价。 发现如果 \(j\) 过大 \(2^j\) 直接爆了,于是只枚举 \(j \le 30\) 的部分即可。

紫外UV固化太阳光模拟器的原理 - 教程

紫外UV固化太阳光模拟器的原理 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mona…

《系统与软件工程功能规模测量IFPUG手段》(GB/T42449-2023)标准解读

《系统与软件工程功能规模测量IFPUG手段》(GB/T42449-2023)标准解读pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &q…

实用指南:无人机图传及组网功能如何实现?适用频段与传输模块选择全攻略

实用指南:无人机图传及组网功能如何实现?适用频段与传输模块选择全攻略2025-10-03 16:36 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: a…

福州企业网站建设专业服务威海住房和城乡建设局官方网站

很多时候&#xff0c;我们需要用python画图&#xff0c;这样就可以更加直观的看到数据的走势&#xff0c;而不是干巴巴的数字。今天&#xff0c;我们就给大家整理了一下python画图的常用函数&#xff0c;由于篇幅限制。无法将这些函数的使用方法全部表现出来。所以&#xff0c;…

P5709 【深基2.习6】Apples Prologue / 苹果和虫子

题目详细解释 问题背景分析:小B在连续不断地吃苹果,没有任何休息时间吃完一个苹果后立即开始吃下一个苹果我们需要计算在给定的时间内,还剩下多少个完全没有被吃过的苹果关键概念理解:完整的苹果:完全没有被咬过、…

问题表 - microsoft

题目表CREATE TABLE [dbo].[Questions]( [id] [int] IDENTITY(1,1) NOT NULL, [cate] [int] NOT NULL, [type] [varchar](50) NULL, [dep] [varchar](100) NULL, [question] [varchar](1000) NULL, [KeyA] [varchar](5…

机械加工外协网站2345电脑版

【51CTO精选译文】本文介绍了一些可以用来监控网络使用情况的Linux命令行工具。这些工具可以监控通过网络接口传输的数据&#xff0c;并测量目前哪些数据所传输的速度。入站流量和出站流量分开来显示。一些命令可以显示单个进程所使用的带宽。这样一来&#xff0c;用户很容易发…

怎么制作网站app建网上商城的第三方网站哪个好

提到互联网系统设计&#xff0c;可能听到最多的词就是“三高”&#xff0c;也就是“高并发”“高性能”“高可用”&#xff0c;它们是互联网系统架构设计永恒的主题。这里将整体探讨下高并发系统设计的目标&#xff0c;然后在此基础上&#xff0c;探讨下&#xff1a;如何提升系…