周末狂欢赛4(1-02E. JM的西伯利亚特快专递,寿司晚宴,荷马史诗)

文章目录

  • T1:1-02E. JM的西伯利亚特快专递
    • 题目
    • 题解
    • code
  • T2:寿司晚宴
    • 题目
    • 题解
    • code
  • T3:荷马史诗
    • 题目
    • 题解
    • code

T1:1-02E. JM的西伯利亚特快专递

题目

今天JM收到了一份来自西伯利亚的特快专递,里面装了一个字符串 s ,仅包含小写英文字母。于是JM决定跟qz和寒域爷一起玩一个游戏:

JM手里拿着字符串 s,qz手里拿着字符串 t ,寒域爷手里拿着字符串 u ,初始时t和u均为空。有两种操作:
将字符串 s 的首部字符取出,插入字符串 t 的尾部。
将字符串 t 的尾部字符取出,插入字符串 u 的尾部。

JM,qz和寒域爷随意地进行上述两种操作,直到字符串s和t均为空时才停止。现在JM想知道,他们能得到的字典序最小的字符串 u 是什么。

注意,对于一个字符串s,其长度为n,其中字符的下标为1,2…n,则我们定义s的首部字符为s1s_1s1,尾部字符为 sns_nsn

输入格式
一行一个字符串s。
输出格式
一行一个字符串u表示答案。

样例
样例输入
cbaa
样例输出
aabc
数据范围与提示
1≤∣s∣≤1051≤|s|\le10^51s105

题解

字典序最小的话也就是说对于一个字符串,越小的字母就要尽可能越早离开sss
仔细读题会发现其实就是下图的过程:
在这里插入图片描述
也就是说ttt只是起一个中转站的作用,且性质与栈一样,所以我们想到了↓
在这里插入图片描述
用一个双关队列或者栈来储存当遍历到iii位时,还剩余在sss里面的字母
接着我们来考虑对于一个字母xxx它将面临哪些选择?
 1.当x<q.back()x<q.back()x<q.back(),意思就是当前字母比已遍历的且没有丢进uuu的最后一个字母小,
 根据规则我们肯定想xxx先出来,所以就可以直接放在队列的最后面
 
 2.当x>=q.back()x>=q.back()x>=q.back(),如果这个时候仍然选择放在队列后面,
 那么不管后面如何操作,xxx一定比q.back()q.back()q.back()先出来,字典序会变小,
 所以就要先把前面<x<x<x的字母丢出去
如果你认为这样就能ACACAC,那你真的是想多了,仔细想想刚才的情况二,我们太过于粗鲁
在这里插入图片描述

zzcadbde——>abdcdezz
错误答案:acbddezz

为什么会出现这种情况,很简单,因为在判断c,dc,dc,d时,我们忽略了ddd后面还有个字典序更小的bbb
因此为了解决这种情况,就定义一个后缀数组,pre[i]pre[i]pre[i]表示i−ni-nin中字典序最小的字母是什么,
那么我们只需要用cccdddpreprepre进行比较即可,也就相当于用ccc去和bbb比较,就可以预知到后面的走向
在这里插入图片描述

code

#include <cstring>
#include <cstdio>
#include <deque>
using namespace std;
#define MAXN 100005
deque < char > q; 
char s[MAXN], pre[MAXN];
int len;int main() {scanf ( "%s", s );len = strlen ( s );pre[len] = 'z' + 1;for ( int i = len - 1;i >= 0;i -- )pre[i] = min ( s[i], pre[i + 1] );for ( int i = 0;i < len;i ++ ) {if ( q.empty() )q.push_back ( s[i] );else if ( ! q.empty() && q.back() > s[i] )q.push_back ( s[i] );else {while ( ! q.empty() ) {if ( q.back() <= s[i] && q.back() <= pre[i] ) {printf ( "%c", q.back() );q.pop_back();}elsebreak;}q.push_back ( s[i] );}}while ( ! q.empty() ) {printf ( "%c", q.back() );q.pop_back();}return 0;
}

T2:寿司晚宴

题目

为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴。小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴。

在晚宴上,主办方为大家提供了n−1种不同的寿司,编号1,2,3,⋯,n-1,其中第种寿司的美味度为i+1(即寿司的美味度为从2到n)。

现在小G和小W希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小G品尝的寿司种类中存在一种美味度为x的寿司,小W品尝的寿司中存在一种美味度为y的寿司,而x与y不互质

现在小G和小W希望统计一共有多少种和谐的品尝寿司的方案(对给定的正整数p取模)。注意一个人可以不吃任何寿司

输入格式
从文件dinner.in中读入数据。
输入文件的第1行包含2个正整数n,p中间用单个空格隔开,表示共有n种寿司,最终和谐的方案数要对p取模。

输出格式
输出到文件dinner.out中。
输出一行包含1个整数,表示所求的方案模p的结果。

输入输出样例
输入
3 10000
输出
9

输入
4 10000
输出
21

输入
100 100000000
输出
3107203
说明/提示
【数据范围】
在这里插入图片描述
【时限1s,内存512M】

题解

猜测:一般这种方案数还带模99%99\%99%都是dpdpdp
两者选的寿司互质,充要条件就是两人选的寿司的质因子是不重复的,就可以用状压判断质因子,证实了dpdpdp猜测
首先我们打个质数表,发现500500500以内的质数个数为959595在这里插入图片描述
但是我们再用计算机一算21∗23=483,23∗29=66721*23=483,23*29=6672123=483,2329=667,也就是说500500500以内的数最多只会有一个质因数>22>22>22,所以就可以单独提出来考虑,没有就为0
那么剩下的小质因子数就只有888个(2,3,5,7,11,13,17,192,3,5,7,11,13,17,192,3,5,7,11,13,17,19
在这里插入图片描述
dp[i][j][k]dp[i][j][k]dp[i][j][k]表示在选第iii个寿司时,甲选的质因子集合是jjj,乙选的质因子集合是kkk,则有
dp[i][j∣food[i].s][k]+=dp[i−1][j][k](k&food[i].s==0)dp[i][j|food[i].s][k]+=dp[i-1][j][k](k\&food[i].s==0)dp[i][jfood[i].s][k]+=dp[i1][j][k](k&food[i].s==0)
dp[i][j][k∣food[i].s]+=dp[i−1][j][k](j&food[i].s==0)dp[i][j][k|food[i].s]+=dp[i-1][j][k](j\&food[i].s==0)dp[i][j][kfood[i].s]+=dp[i1][j][k](j&food[i].s==0)
前提都是另外一个所选的质因子中没有当前食物的质因子,接着发现iii只与i−1i-1i1有关,所以用滚动将之滚成二维,简单吧跳过

接着我们要处理一下大质因子这个玩意儿,设fg[j][k],fw[j][k]fg[j][k],fw[j][k]fg[j][k],fw[j][k]
对于每一段大质因子相同的数,我们在这一段开始的时候把dpdpdp的值赋给fgfgfgfwfwfw,然后在这一段内部用上面的递推方法继续搞
fg[j∣s][k]+=dp[j][k](k&s==0)fg[j|s][k]+=dp[j][k](k\&s==0)fg[js][k]+=dp[j][k](k&s==0)
fw[j][k∣s]+=dp[j][k](j&s==0)fw[j][k|s]+=dp[j][k](j\&s==0)fw[j][ks]+=dp[j][k](j&s==0)
sss表示小质因子的集合
最后在重新丢给dpdpdp即可
dp[j][k]=fg[j][k]+fw[j][k]−dp[j][k]dp[j][k]=fg[j][k]+fw[j][k]-dp[j][k]dp[j][k]=fg[j][k]+fw[j][k]dp[j][k]
因为有可能这个食物两个人都不选,那么dpdpdp就分别被fg,fwfg,fwfg,fw统计了,最后就是多统计了一次,减掉就行了

具体的代码部分解释在codecodecode

code

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; 
#define LL long long
#define MAXN 505
int p[10] = { 0, 2, 3, 5, 7, 11, 13, 17, 19, 0 };
struct node {int val, big, s;void init () {int tmp = val;big = s = 0;for ( int i = 1;i <= 8;i ++ ) {if ( tmp % p[i] == 0 ) {s |= ( 1 << ( i - 1 ) );while ( tmp % p[i] == 0 )tmp /= p[i];}}if ( tmp != 1 )big = tmp;}
}food[MAXN];
int n;
LL result, mod;
LL dp[MAXN][MAXN], fg[MAXN][MAXN], fw[MAXN][MAXN];bool cmp ( node x, node y ) {return x.big < y.big;
}int main() {scanf ( "%d %lld", &n, &mod );for ( int i = 2;i <= n;i ++ ) {food[i].val = i;food[i].init();}sort ( food + 2, food + n + 1, cmp );dp[0][0] = 1;//初始化,两人什么都不选也算一种情况 for ( int i = 2;i <= n;i ++ ) {if ( i == 2 || food[i].big ^ food[i - 1].big || ! food[i].big ) {memcpy ( fg, dp, sizeof ( dp ) );memcpy ( fw, dp, sizeof ( dp ) );}for ( int j = 255;j >= 0;j -- )//j枚举的是小G选择的质因子 for ( int k = 255;k >= 0;k -- ) {//k枚举的是小W选择的质因子 if ( j & k )//有重复肯定是不合法的 continue;if ( ( food[i].s & k ) == 0 )//该质因子没有被小W选择可以被小G选择 fg[j | food[i].s][k] = ( fg[j | food[i].s][k] + fg[j][k] ) % mod;if ( ( food[i].s & j ) == 0 )//该质因子没有被小G选择可以被小W选择fw[j][k | food[i].s] = ( fw[j][k | food[i].s] + fw[j][k] ) % mod;}if ( i == n || food[i].big ^ food[i + 1].big || ! food[i].big ) {for ( int j = 0;j <= 255;j ++ )for ( int k = 0;k <= 255;k ++ )dp[j][k] = ( fg[j][k] + fw[j][k] - dp[j][k] + mod ) % mod;}}for ( int i = 0;i <= 255;i ++ )for ( int j = 0;j <= 255;j ++ )result = ( result + dp[i][j] ) % mod;printf ( "%lld", result );return 0;
}

T3:荷马史诗

题目

追逐影子的人,自己就是影子 ——荷马
Allison 最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》 组成的鸿篇巨制《荷马史诗》实在是太长了,Allison 想通过一种编码方式使得它变得短一些。

一部《荷马史诗》中有n种不同的单词,从1到n进行编号。其中第i种单 词出现的总次数为wi。Allison 想要用k进制串si来替换第i种单词,使得其满足如下要求:

对于任意的 1 ≤ i, j ≤ n , i ≠ j ,都有:si不是sj的前缀。

现在 Allison 想要知道,如何选择si,才能使替换以后得到的新的《荷马史诗》长度最小。在确保总长度最小的情况下,Allison 还想知道最长的si的最短长度是多少?

一个字符串被称为k进制字符串,当且仅当它的每个字符是 0 到 k − 1 之间(包括 0 和 k − 1 )的整数。

字符串 str1 被称为字符串 str2 的前缀,当且仅当:存在 1 ≤ t ≤ m ,使得str1 = str2[1…t]。其中,m是字符串str2的长度,str2[1…t] 表示str2的前t个字符组成的字符串。

输入格式
输入的第 1 行包含 2 个正整数 n, k ,中间用单个空格隔开,表示共有 n种单词,需要使用k进制字符串进行替换。
接下来n行,第 i + 1 行包含 1 个非负整数wi ,表示第 i 种单词的出现次数

输出格式
输出包括 2 行
第 1 行输出 1 个整数,为《荷马史诗》经过重新编码以后的最短长度。
第 2 行输出 1 个整数,为保证最短总长度的情况下,最长字符串 si 的最短长度。

输入输出样例
输入
4 2
1
1
2
2
输出
12
2

输入
6 3
1
1
3
3
9
9
输出
36
3
说明/提示
【样例说明 1】
用 X(k) 表示 X 是以 k 进制表示的字符串。
一种最优方案:令 00(2) 替换第 1 种单词, 01(2) 替换第 2 种单词, 10(2) 替换第 3 种单词,11(2) 替换第 4 种单词。在这种方案下,编码以后的最短长度为:
1 × 2 + 1 × 2 + 2 × 2 + 2 × 2 = 12
最长字符串si的长度为 2 。
一种非最优方案:令 000(2) 替换第 1 种单词,001(2) 替换第 2 种单词,01(2)替换第 3 种单词,1(2) 替换第 4 种单词。在这种方案下,编码以后的最短长度为:
1 × 3 + 1 × 3 + 2 × 2 + 2 × 1 = 12
最长字符串 si 的长度为 3 。与最优方案相比,文章的长度相同,但是最长字符串的长度更长一些

【样例说明 2】
一种最优方案:令 000(3) 替换第 1 种单词,001(3) 替换第 2 种单词,01(3) 替换第 3 种单词, 02(3) 替换第 4 种单词, 1(3) 替换第 5 种单词, 2(3) 替换第 6 种单词。
在这里插入图片描述
【提示】
选手请注意使用 64 位整数进行输入输出、存储和计算。
【时限1s,内存512M】

题解

知识储备知识储备
哈夫曼树
给定NNN个权值作为NNN个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近

哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的路径长度是从树根到每一结点的路径长度之和

应用有哈夫曼编码

多叉哈夫曼树
哈夫曼树也可以是kkk叉的,只是在构造kkk叉哈夫曼树时需要先进行一些调整。构造哈夫曼树的思想是每次选kkk个权重最小的元素来合成一个新的元素,该元素权重为kkk个元素权重之和。但是当k>2k>2k>2时,按照这个步骤做下去可能到最后剩下的元素少于kkk个。
解决这个问题的办法是假设已经有了一棵哈夫曼树(且为一棵满k叉树),则可以计算出其叶节点数目为(k−1)nk+1(k-1)nk+1(k1)nk+1,式子中的nknknk表示子节点数目为kkk的节点数目。于是对给定的nnn个权值构造k叉哈夫曼树时,可以先考虑增加一些权值为000的叶子节点,使得叶子节点总数为(k−1)nk+1(k-1)nk+1(k1)nk+1这种形式,然后再按照哈夫曼树的方法进行构造即可
——以上均来自百度百科


读完这道题,你就会发现和上面的知识储备对应起来,所以这道题对于一个了解哈夫曼树的人就是一道裸题,对于别人就是。。。

类比于NOIP2004 合并果子
——摘自luogu某dalao

看了这句话后,可能许多人都有重见天日的感觉,我也这么认为,这句话真的揭示了这道题的本质
在这里插入图片描述

code

#include <queue>
#include <cstdio>
using namespace std;
#define int long long
#define MAXN 1000005
struct node {int w, h;node () {}node ( int W, int H ) {w = W;h = H;}
};
bool operator < ( node a, node b ) {if ( a.w != b.w )return a.w > b.w;return a.h > b.h;
}
priority_queue < node > q;
int n, k, cnt, result;
int w[MAXN];signed main() {scanf ( "%lld %lld", &n, &k );for ( int i = 1;i <= n;i ++ ) {scanf ( "%lld", &w[i] );q.push( node ( w[i], 0 ) );}if ( ( n - 1 ) % ( k - 1 ) )//要判断是否需要加空节点,不然cnt会算错 cnt = ( k - 1 ) - ( n - 1 ) % ( k - 1 );//( n - 1 ) % ( k - 1 )是最后一次合并不足k的个数,减掉才是要加的空节点 for ( int i = 1;i <= cnt;i ++ )q.push( node ( 0, 0 ) );cnt += n;while ( cnt > 1 ) {int sum = 0, maxh = 0;for ( int i = 1;i <= k;i ++ ) {sum += q.top().w;maxh = max ( maxh, q.top().h );q.pop();}result += sum;q.push( node ( sum, maxh + 1 ) );cnt -= ( k - 1 );}printf ( "%lld\n%lld\n", result, q.top().h );return 0;
}

就完了,有问题欢迎评论,点个赞呗~

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

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

相关文章

.NET Core容器化开发系列(一)——Docker里面跑个.NET Core

前言博客园中已经有很多如何在Docker里面运行ASP.NET Core的介绍了。本篇主要介绍一些细节&#xff0c;帮助初学的朋友更加深入地理解如何在Docker中运行ASP.NET Core。安装DockerDocker现支持在主流Linux、Windows和macOS上安装&#xff0c;官方的安装文档请参考docker docs。…

YBTOJ:卖猪问题(网络流)

文章目录题目描述数据范围解析代码题目描述 尼克在一家养猪场工作&#xff0c;这家养猪场共有MMM间锁起来的猪舍&#xff0c;由于猪舍的钥匙都给了客户&#xff0c;所以尼克没有办法打开这些猪舍。有NNN个客户从早上开始一个接一个来购买生猪&#xff0c;他们到达后首先用手中…

P4370-[Code+#4]组合数问题2【数学,堆】

正题 题目链接:https://www.luogu.com.cn/problem/P4370 题目大意 求满足m≤n≤am\leq n\leq am≤n≤a的情况下&#xff0c;前kkk大的(nm)\binom{n}{m}(mn​)的和。 1≤n≤106,1≤k≤1051\leq n\leq 10^6,1\leq k\leq 10^51≤n≤106,1≤k≤105 解题思路 首先想到的是(nm)>…

【做题记录】[SCOI2009]围豆豆

[SCOI2009]围豆豆 \(n\times m(n,m\le 10)\) 的网格中有 \(d\) 个球 \((d\le 9)\)&#xff0c;要求在网格中选定一个起点开始做一个欧拉回路&#xff0c;路径的价值为路径完全包住的球的价值之和减去路径长度&#xff0c;求所有路径中的价值最大值。 有价值与步数的两个限制&am…

Codeforces Round #695(Div. 2)

Codeforces Round #695 (Div. 2) 1467A Wizard of Orz 1467B Hills And Valleys 1467C Three Bags 1467D Sum of Paths 1467E Distinctive Roots in a Tree 1468A LaIS

YBTOJ危桥通行洛谷P3163:危桥通行(网络流)

文章目录题目描述解析代码题目描述 Alice 和 Bob 居住在一个由 NN 座岛屿组成的国家&#xff0c;岛屿被编号为 00 到 N-1N−1。某些岛屿之间有桥相连&#xff0c;桥上的道路是双向的&#xff0c;但一次只能供一人通行。其中一些桥由于年久失修成为危桥&#xff0c;最多只能通行…

中小研发团队架构实践之生产环境诊断工具WinDbg

生产环境偶尔会出现一些异常问题&#xff0c;WinDbg或GDB是解决此类问题的利器。调试工具WinDbg如同医生的听诊器&#xff0c;是系统生病时做问题诊断的逆向分析工具&#xff0c;Dump文件类似于飞机的黑匣子&#xff0c;记录着生产环境程序运行的状态。本文主要介绍了调试工具W…

多项式的基础操作(逆元/除法/取模/对数ln/开根sqrt/指数exp/快速幂)带模板+luogu全套例题

文章目录多项式的逆元理论推导模板例题&#xff1a;[luogu P4238]【模板】多项式乘法逆题目code多项式的除法/取模理论推导多项式牛顿迭代法模板例题&#xff1a;[luoguP4512]【模板】多项式除法题目code多项式对数ln理论推导模板例题题目code多项式开根sqrt理论推导模板例题题…

P1232-[NOI2013]树的计数【思维】

正题 题目链接:https://www.luogu.com.cn/problem/P1232 题目大意 给出nnn个点的树的dfsdfsdfs序和bfsbfsbfs序&#xff0c;求所有合法的树的平均深度。 1≤n≤21051\leq n\leq 2\times 10^51≤n≤2105 解题思路 bfsbfsbfs应该是最好开始考虑的&#xff0c;因为bfsbfsbfs序的…

Wizard of Orz CodeForces - 1467A

Wizard of Orz CodeForces - 1467A 题意&#xff1a; 有个长度为n初始状态下各元素均为0的数组&#xff0c;没过一秒数组中所有元素都会1&#xff0c;如果是9则会变成0&#xff0c;即0-9不断循环。现在你能够在开始后的任意时间点选取任意一个位置&#xff0c;改位置上的数字…

从软件工程的角度解读任正非的新年公开信

昨天被任正非的那封《全面提升软件工程能力与实践&#xff0c;打造可信的高质量产品》的公开信刷屏了&#xff0c;作为一个软件工程专业科班出身的软件开发从业者&#xff0c;自然是引起了我&#xff08;宝玉xp&#xff09;的好奇&#xff0c;仔细阅读之下确实让我大吃一惊&…

YBTOJ:矛盾指数(网络流-最大权闭合图)

文章目录题目描述解析代码网络流要大胆建图 题目描述 公司内部共nnn个员工&#xff0c;员工之间可能有矛盾。若员工uuu和员工vvv有矛盾&#xff0c;用边(u,v)(u,v)(u,v)表示&#xff0c;共mmm个矛盾。 现在公司决定裁员&#xff0c;使得被裁人员间的矛盾指数最高。矛盾指数定…

行列式、LGV、矩阵树学习笔记

前置知识&#xff1a;矩阵、高斯消元 行列式 行列式定义 \[\text{det(A)}\sum_{p}{(-1)^{\mathrm{sgn}(p)}\prod{A_{i,p_i}}} \]其中 \(\text{sgn}(p)\) 表示排列 \(p\) 的逆序对个数。 行列式性质 进行一次矩阵转职&#xff0c;行列式不变。(易证)行列式任意一行按比例扩大&am…

P5008-[yLOI2018]锦鲤抄【tarjan】

正题 题目链接:https://www.luogu.com.cn/problem/P5008 题目大意 给出nnn个点mmm条边的一张有向无环图&#xff0c;你每次可以选择一个有入度的点获取其点权然后删除这个点。求能取kkk次的情况下最大能获得的权值和。 1≤n≤51054,1≤m≤210641\leq n\leq 5\times 10^54,1\l…

Hills And Valleys CodeForces - 1467B

Hills And Valleys CodeForces - 1467B 题意&#xff1a; 修改数列中的 一个 数字 使得峰(波峰、波谷)的数量最少 题解&#xff1a; 修改一个数&#xff0c;最多只能影响左右两个数&#xff0c;所能减少的峰的数量为1,2&#xff0c;3三种 分类讨论&#xff0c;对于当前位置…

HttpClient在.NET Core中的正确打开方式

问题来源长期以来&#xff0c;.NET开发者都通过下面的方式发送http请求&#xff1a;using (var httpClient new HttpClient()){var response await httpClient.GetAsync(uri);//do something with response}这段代码理论上来说遵守了C#的最佳实践&#xff0c;HttpClient是IDi…

YBTOJ:炮塔攻击(网络流)

题目描述 小明最近在玩一款很好玩的游戏&#xff0c;游戏规则是这样的&#xff1a; 有一个n∗mn*mn∗m的地图&#xff0c;地图上的每一个位置要么是空地&#xff0c;要么是炮塔&#xff0c;要么是一些敌人&#xff0c;小明需要操纵炮塔攻击敌人。 攻击方法是&#xff1a;对于…

[CQOI]九连环(FFT优化+高精)

文章目录题目题解code题目 九连环是一种源于中国的传统智力游戏。 如图所示&#xff0c;九个的圆环套在一把“剑”上&#xff0c;并且互相牵连。游戏的目标是把九个圆环全部从“剑”上卸下。 圆环的装卸需要遵守两个规则 1&#xff0e;第一个&#xff08;最右边&#xff09;环…

牛客挑战赛53G-同源数组(Easy Version)【NTT】

正题 题目链接:https://ac.nowcoder.com/acm/contest/11193/G 题目大意 给出nnn个长度为mmm的数组&#xff0c;然后你每次可以进行差分&#xff08;不会改变数组长度那种&#xff09;和前缀和。 如果两个数组可以在模998244353998244353998244353意义下操作成同一个数组&…

莫比乌斯反演 做题记录

来自Peterwuyihong 的题单。 前置知识 前置芝士1 数论分块 UVA11526 H(n) P2261 [CQOI2007]余数求和 P2260 [清华集训2012]模积和 其中有一个式子需要注意一下&#xff1a;\[\sum_{i1}^n\sum_{j1}^m\left\lfloor\dfrac{n}{i}\right\rfloor\left\lfloor\dfrac{m}{i}\right\rfloo…