自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(997)
  • 收藏
  • 关注

原创 补题list

数据结构2018CCPC吉林赛区 Lovers线段树2019中山大学程序设计竞赛 Party线段树牛客练习赛69 E.子串线段树The Preliminary Contest for ICPC Asia Nanjing 2019 I. Washing clothes李超树2019 ICPC Asia Xuzhou Regional H. Yuuki and a problem带修主席树The 2019 Asia Nanchang First Round Online Pro.....

2020-10-07 22:38:09 856 2

原创 AtCoder Beginner Contest 371 G. Lexicographically Smallest Permutation(数论 枚举 扩展CRT思想)

后面的环长cyc[i+1]对应枚举mn[i+1]的时候,如果再遇到remain[p]的话,不能冲突,需要确定一个旋转次数x,使得x%cyc[1]=mn[1],x%cyc[2]=mn[2],等等。可以枚举cyc[i]的每个质因子p,把当前mn[i]%p的值记录下来,记为remain[p]找到符合约束条件的位置的最小值mn[2],再令x%cyc[2]=mn[2],并旋转。因为cyc[1]+cyc[2]+...=n,总环长是n,所以当前环长是可枚举的。其中cyc[1]是从前到后遇到的第一个环的环长,

2024-09-23 03:49:01 187

原创 Codeforces Round 972 (Div. 2) E2. Subtangle Game (Hard Version)(博弈+双指针 sg函数思想)

那么,如果l<=r且[l,r]内有下一个vector内必胜(sg=1)的元素,当前局面就必败(sg=0)不能再直接dp[i][j][k]表示数组a的第i个做开始局面时,位置(j,k)为起点时的获胜情况了。对于所有颜色v都处理出这样的位置集合,记为win[v],表示v作为最后一步时的所有获胜位置。这个位置序列,是一个第一维增序,第二维降序的序列,形如(1,4)(2,3)(3,2)这种。只要能走到win[a[l]]内任意一个元素的都是必败的,否则就是必胜的。那么对于序列a的最后一个元素,考虑所有获胜位置,

2024-09-23 03:37:33 327

原创 Codeforces Round 969 (Div. 1) C. Eri and Expanded Sets(线段树维护差分数组gcd+双指针+尺取)

由于gcd只会缩成因子,所以对于所有<=l的位置x,[x,r]的gcd都是等于1的,直接ans+=l。特别地,gcd=0和gcd=1不能放在一起维护,否则不满足双指针的单调性了,所以这里分开统计的。对于枚举的右端点r,满足区间[l,r]的相邻项差分数组的gcd=1的最靠右的l,具体代码里是,在[l,r]区间长度不短于2的前提下,试着把当前l往右挪一个,以下的代码1是用了这个性质的,所以直接维护相邻项gcd即可,比较好写。并且需要维护每种数字出现的个数,和当前出现的数字的种类数,比较繁琐。

2024-09-23 03:23:24 161

原创 2013-2014 Northeastern European Regional Contest (NEERC 13) I. Interactive Interception(思维题 二分好题 交互)

那么下一个位置区间,就是由当前位置区间l、r分别加上最慢速度lv、最快速度rv去生成,而历史每次询问出来的lp、rp,可以对lv、rv形成一个新的约束,最终收敛到lp=rp。询问的次数变多时,用限制条件去卡,速度实际是收敛的很快的。所以考虑二分位置p,用一个区间[lp,rp]去控制,100次,很容易想到是二分,但是check很难想。同样地,速度也用一个区间[lv,rv]去控制。两个未知量p、v,因为最后要求最终位置p,不是很能直观地证明,只是能大概感觉,

2024-09-23 02:43:57 74

原创 AtCoder Regular Contest 156 C. Tree and LCS(思维题 构造 数学归纳法)

求该路径上的点(x1,...,xk)和对应排列上的点(Px1,...,Pxk)的最长公共子序列都得到一个值,线性序列的话,1 2 3 4 5和5 4 3 2 1就可以了,也就是取逆序序列,此时最长公共子序列值为1。只有同时包含(u,v)的路径里能同时有u值和v值,并且这俩是满足线性序列两端的条件的。树上的话,考虑两个叶子u和v,令ans[u]=v,ans[v]=u,并且,去除掉两端的1和5之后,剩下的子段仍然满足要求。每次剥掉两个叶子,把产生的新叶子再塞进队列里,其实就是想想,线性序列怎么拓展成树上序列。

2024-09-23 00:20:30 156

原创 Codeforces Round 973 (Div. 2) F1. Game in Tree (Easy Version)(思维题 博弈)

如果能走旁边的链(也就是当前点,刨去标记链以外的子树中最长的链),使得对面走剩余的连通块无法比你大,就走旁边的链,并宣告获胜。维护实际是一个区间最值,可以用set或者st表。两个人的策略是一样的,把1到u的路径标记,否则沿着标记链,朝对面的方向走一步。

2024-09-21 03:18:53 562

原创 Codeforces Round 973 (Div. 2) E. Prefix GCD(n个数重排使得gcd前缀和最小 补写法)

每一步都取最小的即可,gcd log次就变1了所以暴力就完了。

2024-09-21 03:12:47 256

原创 Codeforces Round 972 (Div. 2) D. Alter the GCD(二分+gcd性质)

不妨枚举l,注意到 gcd(a[l,r]),gcd(b[l,r]),gcd(a[r+1,n]),gcd(b[r+n]) 有一个不同的 r 只有 O(log) 个。求换完之后的gcd(a1,a2,...,an)+gcd(b1,b2,...,bn)的最大值。操作:选择区间[l,r],将a的[l,r]区间和b的[l,r]区间的数一一对应互换。每次给定n(n<=2e5)和两个长为n的数组a,b(1<=ai,bi<=1e9)当然枚举r也可以,这里是枚举r然后二分那log种的,复杂度O(nlog^3),

2024-09-17 01:32:49 548 1

原创 The 2024 ICPC Asia East Continent Online Contest (I) L. Bull Farm(性质题+有向图可达性/最短路)

也就是需要满足,t[i][1]到t[i][n]这一行,除去t[i][j]以外,其他n-1个数两两不重复。也就是最早前dis[j]个按钮时,i是可以访问j的,此时把无向边也当成有向边做,最多也就加3n条边。2. 恰好只有一组数出现了两次,如1 2 2 4 5,此时只能空t[i][2]/t[i][3],dp[i][j]表示初始局面空出来的是j槽,按了i按钮后,空出来的是dp[i][j]槽,所以,基于这个数据范围,很自然暴力的做法就是,离线询问,从前0个处理到前l个,

2024-09-17 01:11:51 572

原创 The 2024 ICPC Asia East Continent Online Contest (I) C. Permutation Counting 4(二分图完美匹配奇偶 模拟高斯消元/并查集)

出现一个[l,r]的一行时,连边l-1和r,说明矩阵里有一行是表示sum[r] -sum[l-1]=r-l+1的。左边点[1,n],右边点[1,n],左边点i向右边点[li,ri]里的每个点连边,问有多少种完美匹配。线性相关(秩为0)时行列式值是0,单位矩阵E的行列式值是1,给1的两行换一换行列式是-1。做法是对于每个[l,r],连边l-1和r,如果出现环,说明线性相关,否则线性无关。比如,[1,2]、[3,3]、[1,3],三个中知道任两个,自然能推第三个,因为矩阵里每行的1是连续的,可以理解成前缀和,

2024-09-17 00:32:21 953

原创 2024“钉耙编程”中国大学生算法设计超级联赛(9)hdu7529 树异或价值(树形dp+贪心)

如果到根的时候还是奇数的,那么相当于最终没有决定是多的这半是0还是1,将答案乘2即可。t(t

2024-08-18 02:16:02 399 2

原创 2024牛客暑期多校训练营10 J. Doremy‘s Starch Trees(预处理 换根dp/树上差分)

2. 对于T2树上每个非叶节点x,对于x的每个儿子y,都至少存在一个z,满足在T1树上,z和x有连边。找到T2的一个根满足T2是T1的starch tree,有多个输出任意一个即可,无解输出-1。所以将其转化为预处理T1上每个(x,z)边的贡献,一旦无根树T1上(x,z)是相连的,那么有根树T2有向边y->x(y是有根树T2上z->x路径上x相邻的点)就是合法的,T2有根树上,对于每个x的直连儿子y,都至少存在一个z,z在T2的y的子树里,其中T1是无根树,T2是有根树,但还未确定根,

2024-08-18 02:02:13 315

原创 2024牛客暑期多校训练营10 D. Is it rated?(01背包 用误差减少dp状态)

此时乘以pi=1e5也小于1e-14,乘以1e5场也不会超过1e-9,对答案的误差不会产生影响。所以可以倒着dp这个过程,就无后效了,dp[i]表示当前参加了i场时的最大rating和,那么(1-k)的x次方,当x到一定次数就很小了,试着400多次方的时候就会小于1e-19,然后这么暴力dp是O(n^2)的,不能接受,注意到k>=0.1,1-k<=0.9。有一个浮点系数k(0.1<=k<=1),对于n场来说系数是一样的,t(t<=1000)组样例,每次给定n(n<=1e5)场比赛,倒着看这个比赛的过程,

2024-08-18 01:52:09 185

原创 hdu7471 最优K子段(口胡题解 二分+贪心+随机化)

由于是sum[i]-sum[j]>=mid,i-j为质数,所以需要i-j是质数且sum[j]尽可能小。二分答案mid,能用最早的段达到mid则用最早的段达到,所以set维护前缀和及其下标。由于每n个数有n/logn个质数,所以期望意义上每logn个数会有一个质数。那么,用set维护没用过的前缀子段,set上暴力遍历若干个最小的值即可。随机是为了质数这个限制条件而生的。最大化min还是逃不出二分,

2024-08-12 04:14:26 227

原创 hdu7511 创作乐曲(口胡题解 线段树预处理+dp)

这个就是从前面第一个[a[i],a[i]+k]和前面第一个[a[i]-k,a[i]]的值转移。一个暴力的想法,是求满足相邻项差值不超过k的子序列最大长度,然后用权值线段树二分,当时转移是从前面>=a[i]和<=a[i]最接近的值转移。其实与泽与老师院赛那个题很像,求abs的最小值的dp,复杂度是O(sumq nlogn)的,不能接受。预处理找到这些位置之后,每次现dp即可。然后考虑优化掉这个logn的转移,

2024-08-12 03:55:54 237

原创 Educational Codeforces Round 168 (Rated for Div. 2) F. Chips on a Line(完全背包+斐波那契数列)

dp[i][j]表示当前选了i个数和为j的方案数,做个完全背包,将所有合法的y的状态求和即可。然后发现第i个数是fib[i],10个数,所以是不超过fib[10]的斐波那契数列。问题转换成,有x种数,其中第i种数是fib[i],在其中选n个数,假设他们的和是y。最少的斐波那契数可以dp预处理出来,当然贪心一步,直接从最大的转移递推出来也是对的。如果用最少个斐波那契数之和去表示y的时候,用了m个数,那么y就是合法的。可以把一个数都换成1和2,比如一个3可以换成1个1、1个2。

2024-08-12 03:48:41 279

原创 AtCoder Regular Contest 182 C. Sum of Number of Divisors of Product(矩阵快速幂+多项式贡献)

对于(x1+a)*(x2+b)*(x3)来说,拆解开,发现是等于x1x2x3+a*x2*x3+b*x1x3+a*b*x3。求所有长为k的序列(k∈[1,n](n<=1e18))的score,第i个数可以在[1,m](m<=16)中任取。而实际要求的式子是一个(1+x1)*(1+x2)*(1+x3)*(1+x4)*(1+x5)*(1+x6),比如,000111就可以表示当前(1+x1)*(1+x2)*(1+x3)的值,同理有,(x1x3)状态转移到(x1x2x3)这个状态,系数是b,

2024-08-12 03:41:25 849

原创 EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2) E. Cosmic Rays(单调栈)

如果(ai,bi)在栈中遇到相同的(aj,bi),就合并成一坨,新的这坨的是(ai+aj-now,bi)所以可以模拟这个最后一段加入的过程,维护一个单调栈,只有出现两面包夹的情况才合并。其实并不是一个难题,赛中d2花了太久时间,导致没时间写这个了,补一下写篇题解。而对于新来一个数(ai,bi)来说,如果前面的清完的时间比当前短就弹栈,那么就是维护一个单减栈,使得栈底的最大,栈底也就是最耗时的那个时间。对于栈顶来说,无法再使次栈顶弹掉,所以肯定是小于次栈顶的,对于每个时刻,输出栈底最耗时的即可。

2024-08-12 03:10:10 823

原创 EPIC Institute of Technology Round August 2024 D2. DFS Checker (Hard Version)(dfs序性质 lca)

(2)搜完一棵子树,跳到另一棵子树的根上,满足a[i]的父亲是a[i-1]的祖先,且a[i-1]是叶子。t(t<=1e4)组样例,每次给n(n<=3e5)个点的树,和一个初始dfs序序列,考虑dfs序,每次要么是下钻一个点,要么是搜完一棵子树,跳到另一棵子树的根上。考虑dfs序,dfn[u]一定是最小的直连dfn[v]减1,做法2是赛中的想法,是一个乱搞,但是也卡不掉,感觉也挺对的。(1)下钻一个点的时候,满足a[i]是a[i-1]的儿子。所以,只需满足性质的点是n-1个点,就是合法的dfs序。

2024-08-12 03:03:38 949 1

原创 AtCoder Regular Contest 180 C. Subsequence and Prefix Sum (dp好题 辅助数组)

要么选了0,选了一个1,选了1个2,这种情况仍在f里统计,也只统计一次,从g转移回来即可。由于子序列当前和为0的时候,选ai和不选ai实际是一种方案,所以把这种情况择出来,要么选了0,选了一个1,这种情况和只选0是一样的,不在f里统计,在g里统计一次。给你一个长度为 N(N<=10)的整数序列 A=(A1,A2,⋯,AN)。做法挺巧妙的,g实际是一个辅助数组,dp还是很锻炼思维的。选ai的时候转移进g数组,不选ai的时候忽略,那么对于0 1 1 2来说,要么只选了0,还是在f里,

2024-08-11 20:19:58 189

原创 异或高斯消元模板(板子整理)

第i行的主元并不一定在第i位,倒着遍历每一行,消去得到第i行的主元的解。钦定第i个点在第i位为1,解满足这n+1个限制条件的异或高斯消元方程。对于无穷解的情况,秩r<n,这里钦定所有自由元均为0,每个点非0,所以每个点占据二进制位中的一位,G. XOR Neighbors 为例。将相邻点的限制列为一个方程作限制,

2024-08-11 18:02:00 285

原创 洛谷P10282 [USACO24OPEN] Smaller Averages G(归并排序优化dp)

转移的时候,dp[i][j]要从dp[x-1][y-1]转移过来,这两维都不是固定的,实际无法完成归并。然后考虑怎么优化这个O(n^4),还是dp[i][j]表示第一段以i结尾、第二段以j结尾的合法方案。枚举x<i,枚举y<j,[x,i]区间与[y,j]区间一共是O(n)个的,不妨按平均值从大到小归并,这样可以把所有平均值大的dp[i-1][y-1]所以,枚举x>i,枚举y<j,对区间[i,x]和区间[y,j]进行归并,容易想到O(n^4)的做法,就是枚举a的最后一段,b的最后一段,

2024-08-09 00:43:57 279

原创 Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2) F. Stardew Valley(包含必选边的欧拉回路 欧拉回路+dfs)

最终导致每条可选边被覆盖奇/偶次,最后把被覆盖奇数次的边取出来,就让这些必选点的度满足条件了。要求在选中所有必选边的条件下,选择一部分可选边得到一张新图,求出新图的一条欧拉回路。边用(u,v,c)表示连接u和v的边,c=1表示必选边,c=0表示可选边。如果树上必选点事偶数个,总可以两两取出来,使得每一对点标记一条路径,看完群友代码之后,想起了这个题,也是类似欧拉回路的性质,感觉忘完了。跑一遍欧拉回路,记录边编号,然后从指定的某个必选点出发,根据欧拉回路充要条件,必选点的度数都是偶数,

2024-07-29 20:13:32 456

原创 Codeforces Round #956 (Div. 2) and ByteRace 2024 F. array-value(trie经典问题 二分+01字典树)

对于长度>=2的区间[l,r],定义b[l,r]为区间[l,r]内ai异或aj(l<=i<j<=r)的最小值,t(t<=2e4)组样例,每次给定长度n(n<=1e5)序列a(0<=ai<=1e9)对于(a[i]^a[j])>=mid,即不存在(a[i]^x)<mid的x,先检查trie上是否有值违背规则,即(a[r+1]^x)<mid,双指针单增,把这样的x从trie上删掉,得到新的l’,所以把r+1对应的值a[r+1]加入到trie树前,枚举右端点,对于右端点r来说,已经得到了左端点l,

2024-07-29 02:27:59 312

原创 hdu7458 旅行(启发式合并+树形dp)

v3往u上的mp上挂的时候,维护的是v3为子树根,存在一个点p的类型是x,p到v的路径是没用过的最大代价和,也就是③,再加上u下其他子树的dp值之和,也就是1+2,得到1+2+③。所以,mp[v][x]表示v为子树根,存在一个点p的类型是x,p到v的路径是没用过的最大代价和,用于辅助转移。于是,now[u]表示对mp[u]上所有点打的全局子树加标记,now[v]表示对mp[v]的。把v往u上挂的时候,v需要加上sum-dp[v],加上now[v],再减去now[u]

2024-07-28 11:47:02 483

原创 2024“钉耙编程”中国大学生算法设计超级联赛(1)(9/9/13)

②3->1,3->2,也就是(f[1]<f[3]与g[1]<g[3]不同时成立)且(f[2]<f[3]与g[2]<g[3]不同时成立)dp[i][j][k]表示第一个子序列选的最后一个是ai,第二个选的最后一个是aj,第三个选的最后是ak时的方案数。①1->2,1->3,这要求f[1]<f[2]且g[1]<g[2]且f[1]<f[3]且g[1]<g[3],实际T(T<=1e4)组样例,字符集大小n(n<=26),第i种字符是ci,有hi个,sumhi<=1e7。

2024-07-20 22:54:02 1540

原创 Codeforces Round #956 (Div. 2) and ByteRace 2024 E. I Love Balls(概率期望)

n-k+1一半向上取整就是(n-k+2)/2,同理n-k个一般向上取整(n-k+1)/2。特殊球不会改变普通球的顺序,所以都是alice拿一半里较多的部分。另外一个做法是,根据E(x+y)=E(x)+E(y),可以把特殊球的总分集在一个特殊球上,普通球同理。每个特殊球独立地来看,在每个空隙的概率相同。也可以看成是摊成平均分摊在这若干个球上。所以分别统计特殊球和非特殊球的分数。

2024-07-11 04:25:20 293

原创 Educational Codeforces Round 167 (Rated for Div. 2) F. Simultaneous Coloring(动态图加点维护强连通分量scc)

否则说明加完了也没通,拿着这些边s2在[l,mid]缩点得到的图的基础上,递归[mid+1,r]如果边两端已经在同一个连通分量里,说明是更早就通了,拿着这些边s1,递归[l,mid],考虑颜色,B 的话就 u->v,R 的话就 v->u,然后求强连通分量scc,首先,转成二分图,左侧每行一个点1到点n,右侧每列一个点1到点m,而钦定大小为k的时候,k=1的时候代价为0,k>1的时候是k^2,所以分治,对于当前边集,把[l,mid]操作里的边全加上,所以,总代价是不为1的scc的大小的平方和。

2024-07-11 03:25:18 224

原创 “金山-讯飞”杯2024年武汉理工大学程序设计竞赛 A. Mobiusp败走***(思维题-点双连通分量、连通性)

和1并不在一个点双里,但是可以先把.换到(1,2)的位置里,使之在同一个点双里。所以最优策略是先把.换到(x,y)的位置,然后判断.和1在不在一个环里。手玩发现,能换的话,当且仅当.和1在一个环里,而这就是点双连通分量。2. 判断(x,y)和1在同一个连通分量里。1. 判断删掉1时,.和(x,y)联通。

2024-07-11 03:11:30 525

原创 洛谷P10716【MX-X1-T4】「KDOI-05」简单的字符串问题(扩展kmp+set+二分+扫描线树状数组)

然后扫描线,每个i有一个[i,i+z[i]-1]的区间,在这个区间内以j结尾时,和前缀的lcp固定为[i,j]这个需要预处理mn[i][j]表示前i个字符出现j次时的结尾处的最小下标,没有的话就是n+1。然后[i,i+z[i]-1]的扫描线保证了以p结尾的一定是一个当前合法的A串,对于位置p,出现次数cnt,二分找到满足mn[x][cnt]<=p的最大x,长度x的前缀出现了cnt次,那么短于长度x的前缀一定出现了cnt次,对于大于一次的情况,先二分当前最大的可行长度x,对于每个i,先特判只出现一次的情况。

2024-07-10 22:49:41 284

原创 Denso Create Programming Contest 2024(AtCoder Beginner Contest 361)G. Go Territory(思维妙妙题 并查集)

记最底下一行的线段点号是1(y=-1所在的行的线段,与(-1,-1)联通)最后答案就是和点号1不在同一个并查集内的线段长度之和。只有没合到的部分才是在多边形内的。相邻行线段相交的话就合并一下。合在一起的都是在多边形外的,给每行的一段创建一条线段。

2024-07-07 02:10:40 314

原创 洛谷P7044 「MCOI-03」括号(栈括号的贡献 组合数经典问题)

这样对于不包含这个(i,j)对的区间[l,r](1<=l<=i,i<=r<j)来说,(i,j)对都是有贡献的,这样的区间数是i*(j-i)k>1时,需要选长度为k的序列l[]、r[],满足l[j]∈[1,i],l[j]<=l[j+1],r[1]<j,r[j]<=r[j+1]r序列,由于有r[1]<j的限制,可以用在[i,n]里任取减去在[j,n]里任取,方案数是。k=1时,需要选长度为1的序列l[]、r[],满足l[1]∈[1,i],r[1]<j。代入k=1,其实发现也成立。记第一次选的右端点x,

2024-07-04 10:24:02 451

原创 2024科技文化节程序设计竞赛

所以分别,正序双指针维护上一行dp[i-1][j]-a[i-1][j],逆序双指针维护上一行dp[i-1][j]+a[i-1][j]但是注意到从上一行比当前值小的转移,就是dp[i][k]=min(dp[i-1][j]+a[i][k]-a[i-1][j])从上一行比当前值大的转移,就是dp[i][k]=min(dp[i-1][j]+a[i-1][j]-a[i][k])相交的,[1,50]和[10,100],答案=(100-1)-(50-10)=100+10-(1+50)

2024-07-01 00:01:41 949

原创 牛客挑战赛75 D. 不存在的玩家(sg图dp)

其实想了想,和20年小米邀请赛决赛这个G题的dp思路是一样的,姑且称为sg图dp吧。本题就是先预处理f[i][j]表示i个点与j个点里至少一个点联通,按sg值从大到小dp,每次补上全局sg值-1的这些点,感觉没想到就怎么都想不到,想到了就能秒了。然后每次把j个点作为一个新sg值加进去。

2024-06-27 02:56:16 250

原创 Codeforces Round 955 (Div. 2, with prizes from NEAR!) F. Sorting Problem Again(multiset二分/线段树二分)

前面那段的最大值只能小于等于这一段最小值,后面那段的最小值只能大于等于这段最大值。对于存在逆序的部分,记录下来这一段最左最右的位置,求出这一段最小值和最大值。感觉pyy这个代码写的还是挺巧妙的,也避免了使用线段树求区间最值。分别二分即可,可以线段树二分,也可以在multiset上二分。一段增序(非严格),一段存在逆序的部分,一段增序(非严格)线段树+set或者multiset均可。注意到序列由最多三段拼接而成,灵茶群、propane代码。贴一下灵茶群群友的图,

2024-06-27 02:08:58 339

原创 Petrozavodsk Programming Camp Winter 2018 Day 6: Grand Prix of Gomel K. Kids Aren‘t Alright(容斥好题)

那么这种集合的数量恰好等于 f_(y/x),也就是把 f_m 减去所有 d(m/i)*f(i) 应该就行了。每个质因子有两个集合,1e18最多有15个不同质因子,最多有30个集合,暴力枚举是O(2^30)的。然后考虑容斥掉,就是这里面会出现 gcd=x, lcm=y 的集合,且 (x,y)!对于每个质因子p,我们要用全集,减掉gcd是pi的倍数的集合,也要减掉lcm不是pi^ai的集合。求非空集合的数量,满足gcd=1,lcm=m(m<=1e18),答案取模998244353。

2024-06-27 01:13:40 420

原创 Codeforces Round 955 (Div. 2, with prizes from NEAR!) E. Number of k-good subarrays(数位dp 区间合并)

赛后发现这个区间即使不等长也是可以merge的,所以就是线段树区间合并类似的操作。赛中想的是,枚举l和r不同的位是哪一位,然后左右分治往上merge答案。这个和代码1的区别就在于是递推的,可以直接对二进制位这些区间做合并。数位dp+分治的一发乱搞,枚举数对(l,r)是在哪一位有的diff。每个2的幂次的长度的区间,对应一个区间的答案,可以直接merge。jiangly、kilo、starsilk代码。记忆化搜索写的数位dp,然后是一个区间合并。

2024-06-26 03:16:17 712

原创 Codeforces Round 954 (Div. 3) G2. Permutation Problem (Hard Version)(数论)

这个时间复杂度应该可以过G2,但是这个G2卡空间,写map会mle43,手写哈希也卡不过。给定n(n<=5e5)的排列p,求满足pi*pj是i*j倍数的(i,j)对数。(pi/i)*(pj/j)=k,比如,(4/3)*(9/2)=6,一定存在pi的约数x、pj的约数y满足(2/3)*(3/2)=1。实际t(t<=1e4)组数据,保证sumn不超过5e5。暴力这么做是一个log一个约数个数d(n)的。参考了一些选手的写法,写成了倍数枚举的形式。可以过G1,但是会在G2上MLE。朴素想法,时间复杂度是对的,

2024-06-25 19:59:20 181

原创 洛谷 P10584 [蓝桥杯 2024 国 A] 数学题(整除分块+杜教筛)

参考了两篇洛谷题解,第一篇能得出这个式子,第二篇有比较严格的复杂度分析。结合去年蓝桥杯洛谷P9238,基本就能得出这题的正确做法。

2024-06-23 02:26:36 511

DynamicProgram.mp4

DynamicProgram.mp4

2023-12-10

SteinerTree.mp4

SteinerTree.mp4

2023-12-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除