E. Mocha and Stars(莫比乌斯反演、简单dp)

E. Mocha and Stars

∑a1=l1r1∑a2=l2r2⋯∑an=lnrn[a1+a2+⋯+an≤m][gcd⁡(a1,a2,…,an)=1]\sum_{a_1 = l_1} ^{r_1} \sum_{a_2 = l_2} ^{r_2} \dots \sum_{a_n = l_n} ^{r_n} [a_1 + a_2 + \dots + a_n \le m][\gcd(a_1, a_2, \dots, a_n) = 1]\\ a1=l1r1a2=l2r2an=lnrn[a1+a2++anm][gcd(a1,a2,,an)=1]
2≤n≤50,1≤m≤105,1≤li≤ri≤m2 \le n \le 50, 1 \le m \le 10 ^ 5, 1 \le l_i \le r_i \le m2n50,1m105,1lirim,对上述答案对998244353998\ 244\ 353998 244 353取模。

∑a1=l1r1∑a2=l2r2⋯∑an=lnrn[a1+a2+⋯+an≤m][gcd⁡(a1,a2,…,an)=1]∑k=1mμ(k)∑a1=⌈l1k⌉⌊r1k⌋∑a2=⌈l2k⌉⌊r2k⌋⋯∑an=⌈lnk⌉⌊rnk⌋[a1+a2+⋯+an≤⌊md⌋]\sum_{a_1 = l_1} ^{r_1} \sum_{a_2 = l_2} ^{r_2} \dots \sum_{a_n = l_n} ^{r_n} [a_1 + a_2 + \dots + a_n \le m][\gcd(a_1, a_2, \dots, a_n) = 1]\\ \sum_{k = 1} ^{m} \mu(k) \sum_{a_1 = \lceil \frac{l_1}{k} \rceil} ^{\lfloor \frac{r_1}{k} \rfloor} \sum_{a_2 = \lceil \frac{l_2}{k} \rceil} ^{\lfloor \frac{r_2}{k} \rfloor} \dots \sum_{a_n = \lceil \frac{l_n}{k} \rceil} ^{\lfloor \frac{r_n}{k} \rfloor} [a_1 + a_2 + \dots + a_n \le \lfloor \frac{m}{d} \rfloor]\\ a1=l1r1a2=l2r2an=lnrn[a1+a2++anm][gcd(a1,a2,,an)=1]k=1mμ(k)a1=kl1kr1a2=kl2kr2an=klnkrn[a1+a2++andm]

其中∑a1=⌈l1k⌉⌊r1k⌋∑a2=⌈l2k⌉⌊r2k⌋⋯∑an=⌈lnk⌉⌊rnk⌋[a1+a2+⋯+an≤⌊md⌋]\sum\limits_{a_1 = \lceil \frac{l_1}{k} \rceil} ^{\lfloor \frac{r_1}{k} \rfloor} \sum\limits_{a_2 = \lceil \frac{l_2}{k} \rceil} ^{\lfloor \frac{r_2}{k} \rfloor} \dots \sum\limits_{a_n = \lceil \frac{l_n}{k} \rceil} ^{\lfloor \frac{r_n}{k} \rfloor} [a_1 + a_2 + \dots + a_n \le \lfloor \frac{m}{d} \rfloor]a1=kl1kr1a2=kl2kr2an=klnkrn[a1+a2++andm],可以考虑dpdpdp求解,f[i][j]f[i][j]f[i][j],表示前iii个数,和为jjj的方案有多少,复杂度n×⌊md⌋n \times \lfloor \frac{m}{d} \rfloorn×dm

由此,整体复杂度是n×m×log⁡mn \times m \times \log mn×m×logm

#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10, mod = 998244353;int mu[N], prime[N], L[N], R[N], f[N], pre[N], n, cnt, M;bool st[N];inline int add(int x, int y) {return x + y < mod ? x + y : x + y - mod;
}inline int sub(int x, int y) {return x >= y ? x - y : x - y + mod;
}void init() {mu[1] = 1;for (int i = 2; i < N; i++) {if (!st[i]) {prime[++cnt] = i;mu[i] = -1;}for (int j = 1; j <= cnt && 1ll * i * prime[j] < N; j++) {st[i * prime[j]] = 1;if (i % prime[j] == 0) {break;}mu[i * prime[j]] = -mu[i];}}
}int F(int d) {int m = M / d, sum = 0;for (int i = 1; i <= n; i++) {int l = (L[i] + d - 1) / d, r = R[i] / d;if (l > r) {return 0;}sum += l;}if (sum > m) {return 0;}for (int i = 1; i <= m; i++) {f[i] = 0;}for (int i = 1; i <= n; i++) {int l = (L[i] + d - 1) / d, r = R[i] / d;if (i == 1) {for (int j = l; j <= r; j++) {f[j] = 1;}continue;}for (int j = 1; j <= m; j++) {pre[j] = add(pre[j - 1], f[j]);f[j] = 0;}for (int j = 1; j <= m; j++) {// x + {l, l + 1, ………, r} = j, x = [j - r, j - l]int L = max(1, j - r), R = j - l;if (L > R) {continue;}f[j] = sub(pre[R], pre[L - 1]);}}int ans = 0;for (int i = 1; i <= m; i++) {ans = add(ans, f[i]);}return ans;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);init();scanf("%d %d", &n, &M);for (int i = 1; i <= n; i++) {scanf("%d %d", &L[i], &R[i]);}int ans = 0;for (int i = 1; i <= M; i++) {if (mu[i] == -1) {ans = sub(ans, F(i));}else if (mu[i] == 1) {ans = add(ans, F(i));}}printf("%d\n", ans);return 0;
}

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

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

相关文章

.NET Core 3.0稳定版发布

一年一度的 .NET 开发者盛会 .NET Conf 2019 已正式开始了&#xff08;举办时间为 9.23-9.25&#xff09;。大会第一天最重磅也是最激动人心的消息莫过于 .NET Core 3.0 稳定版的发布。.NET 项目管理总监 Scott Hunter 在大会宣布了这则消息&#xff0c;并在主题演讲环节围绕 .…

深入理解 Spring Boot Starters 原理(手写Spring boot Start)

一、Spring Boot Starter诞生原因 Spring Boot Starter是在SpringBoot组件中被提出来的一种概念&#xff0c;stackoverflow上面已经有人概括了这个starter是什么东西&#xff0c;想看完整的回答戳这里 Starter POMs are a set of convenient dependency descriptors that you …

FFT字符串匹配(解决通配符问题)

FFT字符串匹配 定义字符串下标从000&#xff0c;开始&#xff0c;有文本串AAA长度为nnn&#xff0c;模式串BBB长度为mmm&#xff0c;我们可以考虑一个函数f(x,y)A(x)−B(y)f(x, y) A(x) - B(y)f(x,y)A(x)−B(y)。 我们设F(x)(x≥m−1)∑i0m−1f(x−m1i,i)F(x)(x \ge m - 1) …

记一次中小公司的研发问题

作者&#xff1a;zollty&#xff0c;资深程序员和架构师&#xff0c;私底下是个爱折腾的技术极客&#xff0c;架构师社区合伙人&#xff01;一、一些不好的现状&#xff0c;及对应的改进方法1、前后端代码绑定在一起&#xff0c;很难维护&#xff0c;前端UI做得太差&#xff0c…

命令行操作mysql

1、通过命令行连接mysql&#xff1a; 1、输入命令&#xff1a;mysql -h localhost&#xff08;服务IP地址&#xff09; -u root&#xff08;用户名&#xff09; -P 3306&#xff08;服务端口&#xff09;-p 2、输入密码 2、显示数据库、表&#xff1a; show databases; //…

2021CCPC华为云挑战赛:HDU 7091 重叠的子串(SAM + 线段树合并)

重叠的子串 给定一个长度为n(1≤∣s∣≤105)n(1 \le \mid s \mid \le 10 ^ 5)n(1≤∣s∣≤105)的只由小写字母构成的字符串sss&#xff0c;有m,(1≤m≤106)m, (1 \le m \le 10 ^ 6)m,(1≤m≤106)个询问&#xff1a; 每次询问给定l,rl, rl,r&#xff0c;问sss是否存在一个字串…

ASP.NET Core 3.0 使用gRPC

一.简介gRPC 是一个由Google开源的&#xff0c;跨语言的&#xff0c;高性能的远程过程调用&#xff08;RPC&#xff09;框架。gRPC使客户端和服务端应用程序可以透明地进行通信&#xff0c;并简化了连接系统的构建。它使用HTTP/2作为通信协议&#xff0c;使用 Protocol Buffers…

mysql 1030 error:Got error 28 from storage engine

最近生产应用连不上生产环境数据库&#xff0c;使用命令行连上去之后&#xff0c;执行命令出现1030 error。 故Google之&#xff0c;解决方案如下。 mysql 1030 error 是因为没有足够的空间&#xff0c;清理磁盘空间即可恢复正常使用。 然后追踪发现&#xff0c;磁盘空间为99G&…

Codeforces Round #739 (Div. 3)(AK实况)

Codeforces Round #739 (Div. 3) A. Dislike of Threes 找到第kkk个既不是333的倍数&#xff0c;个位数上也不是333的数&#xff0c;也已预处理然后O(1)O(1)O(1)输出&#xff0c;也可直接forforfor循环暴力。 #include <bits/stdc.h>using namespace std;int main() {/…

利用Helm简化Kubernetes应用部署(2)

目录定义Charts 使用Helm部署Demo Helm常用操作命令 定义Charts回到之前的“charts”目录&#xff0c;我们依次进行解读并进行简单的修改。Chart.yaml配置示例&#xff1a;apiVersion: v1 appVersion: "1.1" description: A demo Helm chart for Kubernetes name:…

linux查看磁盘空间命令

Linux 查看磁盘空间可以使用 df 和 du 命令。 df df 以磁盘分区为单位查看文件系统&#xff0c;可以获取硬盘被占用了多少空间&#xff0c;目前还剩下多少空间等信息。 例如&#xff0c;我们使用df -h命令来查看磁盘信息&#xff0c; -h 选项为根据大小适当显示&#xff1a; …

Visual Studio 2019 16.3 正式发布,支持 .NET Core 3.0

微软正式发布了 Visual Studio 2019 16.3 版本&#xff0c;主要更新内容如下&#xff1a;.NET Core 3.0Visual Studio 版本 16.3 包括对 .NET Core 3.0 的支持。注意&#xff1a;如果使用的是 .NET Core 3.0&#xff0c;则需要使用 Visual Studio 16.3 或更高版本。.NET Core 桌…

Linux清空文件内容的三种方法

Linux清空文件内容的三种方法 测试文件&#xff1a;test.txt 1、 $ > test.txt 2、 $echo “” > test.txt 3、 $cat /dev/null > test.txt

Problem M. Mediocre String Problem(Z 函数 + PAM)

Problem M. Mediocre String Problem 给定两个串s,ts, ts,t&#xff0c;要求有多少不同的三元组(i,j,k)(i, j, k)(i,j,k)&#xff0c;满足&#xff1a; 1≤i≤j≤∣s∣1 \le i \le j \le \mid s \mid1≤i≤j≤∣s∣。1≤k≤∣t∣1 \le k \le \mid t \mid1≤k≤∣t∣。j−i1≥k…

【干货】规模化敏捷DevOps四大实践之持续探索CE(中英对照版)

本文翻译来自SAFe DevOps社群帅哥网友贾磊&#xff1a;高级质量经理&敏捷教练 曾就职于外企、国企、大型上市企业等&#xff0c;担任过测试工程师、测试经理、项目经理、敏捷教练、质量总监、高级质量经理等岗位。是一名敏捷变革的爱好者和践行者。爱好网球、羽毛球。正文原…

Spring Cloud——Eureka——架构体系

1、概述 Eureka包括两个端&#xff1a; Eureka Server&#xff1a;注册中心服务端&#xff0c;用于维护和管理注册服务列表。Eureka Client&#xff1a;注册中心客户端&#xff0c;向注册中心注册服务的应用都可以叫做Eureka Client&#xff08;包括Eureka Server本身&#x…

C - Maximize GCD(简单数论)

C - Maximize GCD 给定长度为n,(2≤3105)n, (2 \le 3 \times 10 ^ 5)n,(2≤3105)的数组a,(1≤ai≤3105)a, (1 \le a_i \le 3 \times 10 ^ 5)a,(1≤ai​≤3105)&#xff0c;一个数字K,(1≤K≤1018)K, (1 \le K \le 10 ^{18})K,(1≤K≤1018)&#xff0c; 我们可以对数组aaa进行…

推荐.neter常用优秀开源项目系列之二

.net社区有很多优秀的开源项目&#xff0c;我们今天再推荐12个开源项目&#xff1b;1. Domain-Driven-Design-ExampleDDD 示例 挺不错的。github https://github.com/zkavtaskin/Domain-Driven-Design-Example2.SmartStoreNET开源的电商项目github https://github.com/smartsto…

Zookeeper: Zookeeper架构及FastLeaderElection机制

本文转发自技术世界&#xff0c;原文链接 http://www.jasongj.com/zookeeper/fastleaderelection/ 一、Zookeeper是什么 Zookeeper是一个分布式协调服务&#xff0c;可用于服务发现&#xff0c;分布式锁&#xff0c;分布式领导选举&#xff0c;配置管理等。 这一切的基础&am…

I. Rise of Shadows(类欧几里得)

I. Rise of Shadows 一天有HHH个小时&#xff0c;MMM分钟&#xff0c;问&#xff0c;有多少个整数分钟&#xff0c;满足时针与分针的角度≤α\le \alpha≤α&#xff0c;α2πAHM\alpha \frac{2 \pi A}{HM}αHM2πA​。 ∑i0H−1∑j0M−1[∣2π(iMj)HM−2πjM∣≤2πAHM]∑i0…