自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round 962 (Div. 3)

对于第一种情况,我们直接暴力遍历一个数即可。第二种情况我们可以分两种情况考虑:1.不一样的数小于一样的数,2.不一样的数大于一样的数,我们直接暴力遍历这两种情况即可。对于k我们可以二分查找下标容易求,然后对于后面那求和部分我们很容易发现是一个后缀和,而后缀和又可以看成总和减去前缀和,所以我们去维护每个sub的前缀和,这样我们就可以log的时间求出以 l 为左端点的贡献了。直接暴力求每个字母的前缀和,对于区间l,r的最小操作就是区间不同数的一半,因为可以把一个数变成另一个不一样的数,一下抵消两个。

2024-07-27 02:21:04 195

原创 扫描线模板

董晓的板子,算len的时候r要+1,进去修改的时候r要-1.

2024-07-26 20:16:36 170

原创 动态开点线段树

对于树的线路问题可以用树剖来划分成一段一段的连续区间,但由于只记录这些区间某个信仰的权值,并且只有单点修改,所以我们考虑给每个信仰都开一个线段树,也就是开1e5个线段树(类似主席树的写法,开个root数组来记录每个线段树的根,然后结构体来存那些点和他们的信息,左右儿子),用每个线段树来维护各个信仰的区间和与区间最大值。

2024-07-25 01:42:28 173

原创 Codeforces Round 221 (Div. 1) D和hdu的C题 树上启发式合并

小总结:hdu的题是点对,这和树上路径相似,也和点分治思想一样,都是考虑三种情况不经过根,一端是根,跨根,第一种情况又可以归到子树的二三情况,所以一般都是只需要考虑后面两种情况。在dfs的时候,第一个for循环就是处理轻儿子子树的答案,由于是轻儿子,最后都会被keep=0的条件把内容清除,也就是res置零和线段树删点,所以在处理完轻儿子后,所有东西都是空的,等于还没进入dfs一样。

2024-07-24 03:20:42 365

原创 树上启发加点分治思想

对于一条链可以组成回文串,意味着最多只有一个奇数字母,比起我们记录路径各个字母的个数和,我们可以发现回文串实际上不在意真正的个数,只在意个数的奇偶。对于树上的链异或和,我们都可以用前缀异或和的思想,将x->y的异或和看成v[x]^v[fa[lca]]^v[y]^v[fa[lca]],v表示该点到根的异或和,可以发现就等于两个位置的异或和。我们要处理y和前面x个子树的跨根贡献的话,我们不能先将y子树的值处理了,因为这可能导致结果是y和y子树里不经过根的链,

2024-07-22 00:49:07 267

原创 树上启发式合并

理解和注意点都写在代码注释了.....

2024-07-21 20:01:56 186

原创 差分约数的

我们令有k的一边表示起始点,y+k就是起始点的距离加上起始点到终点的边权,那么x<=y+k就是让终点的dis要小于y+k,也就是说松弛条件就是if(dis【x】>dis【y】+w)就更新dis【x】,使得x<=y+k。对于条件2,A要比B小,也就是A<B,A+1<=B,也就是B>=A+1,那么起点就是A,边权就是1。对于x-y>=k,可以转化成x>=y+k,也就是起点的距离加上边权要小于终点的距离,松弛条件就是if(dis【x】<dis【y】+k)就更新dis【x】,这样使得x>=y+k。

2024-07-12 20:55:19 236

原创 树的边覆盖与树的点覆盖

对于一条边要将其覆盖需要选这条边的父亲节点或者儿子节点其中一个即可,对于一个点的覆盖,同样可以选父亲节点或者儿子节点,但同时可以选自己这个节点。如果是0,那么可以从儿子节点的0,1,2状态转移(转移来源要有2的话,表示当前节点一定要选,因为当前节点就是儿子节点的父亲节点)。如果是2的话,从0,1转移,因为当前节点没有被选,也就是儿子节点的父亲节点没有被选,不能从2(父亲节点被选)转移。用0表示当前节点被选,1表示任意儿子节点被选且当前节点不被选,2表示父亲节点被选且当前节点不被选。

2024-07-10 16:13:14 183

原创 二叉苹果树

对于x为根的子树最大值可以从左右儿子选,只需要遍历左右儿子保留的数量即可。但由于题目要求与根节点(1)相连,也就是说如果选了左儿子,左儿子与根x的边就要连。由于给的是边权,先把边权转化成子节点的点权。

2024-07-10 15:51:24 146

原创 找树的重心和树的直径

重心就是把这个点删掉后剩下的子树大小最小,siz数组表示以x为根的子树总的大小,maxsiz数组表示以x为根的每个子树的最大的大小,sum表示整个树的大小,那么sum-siz就是除了x为根所有子树外的那颗子树的大小。两次dfs里的dis最大值就是直径的两端。

2024-07-10 15:35:56 171

原创 点分治模板

分治思想:一直找子树的重心,使每次遍历的子树深度尽量的小。

2024-07-09 19:38:50 102

原创 集合与最大公因数

对于这题我们要让四个数两两最大公约数为k,也就是说这四个数除了约数k以外没有其他公约数了,也就是如果我们把k都除掉,剩下四个数应该是两两互质的。所以我们只要取三个连续的奇数然后再取相邻的一个偶数,就可以找出四个互质的数了,最后都乘以k就是答案。3.连续两个偶数必定有公因子,如2,4。2.连续三个奇数互质,如1,3,5。1.相邻两个数互质,如5,6。

2024-07-09 19:13:35 214

原创 华华给月月出题

(a*b)^c = (a^c)*(b^c),我们将合数素数幂分解,然后我们只要处理每个素数的幂,就可以处理出所以合数的幂。

2024-07-09 00:01:58 204

原创 拓展中国剩余定理

【代码】拓展中国剩余定理。

2024-07-08 22:37:19 104

原创 中国剩余定理

【代码】中国剩余定理。

2024-07-08 22:20:31 221

原创 求逆矩阵高斯-约旦消元

【代码】求逆矩阵高斯-约旦消元。

2024-07-08 21:57:31 130

原创 线性方程组高斯消元和高斯-约旦消元

【代码】线性方程组高斯消元和高斯-约旦消元。

2024-07-08 21:35:53 61

原创 欧拉函数.

证明:p,2p....q*p都不与q*p互质,q同理,所以总的不互质个数应该是p+q-1,所以ϕ ( p ∗ q )=p*q-(p+q-1)=(p-1)*(q-1)。性质2:如果p,q都是质数,那么ϕ ( p ∗ q ) = ϕ ( p ) ∗ ϕ ( q ) = ( p − 1 ) ∗ ( q − 1 )性质5:若a为质数,b mod a=0(b是a的倍数),ϕ ( a ∗ b ) = ϕ ( b ) ∗ a。证明:同性质2,p,p*2....性质3:如果p是质数,那么。性质4:对任意正整数n=

2024-07-08 02:20:30 310

原创 [SCOI2010]序列操作

比之前那个区间最多公约数简单,结构体里维护一下区间0,1的个数,区间最长0,1连续串长度,区间左右端点最长连续0,1串长度即可,0,1都维护是为了翻转操作。对于翻转标记的lz数组需要分类讨论,对于合并区间的时候跨区间要单独讨论。

2024-07-04 20:44:04 114

原创 拓展欧几里得和裴蜀定理

裴蜀定理(或贝祖定理)说明了对任何整数a、b和它们的d,关于未知数x和y的线性(称为裴蜀等式):若a,b是整数,且(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。也就是说a和b能凑出来的最小正整数就是它们的最大公约数,它的一个重要推论是:a,b的是存在整数x,y使ax+by=1,只有a和b互质的时候才能取到等于1.ax + by = m,有解m是d的倍数。裴蜀等式有解时必然有无穷多个整数解。

2024-07-04 15:10:07 436

原创 矩阵优化递推式子

对于f(n)=3f(n−1)+2f(n−2)+2这种式子,先将右边拥有的项竖着列出来,不包括系数,再将这个竖列的下一项写出来,然后将右边的每一项按照左边顺序的等式写出来,然后我们将等式右边只保留系数,那么这些系数就是我们需要的矩阵。于是我们得到了系数矩阵,然后我们只需要求出系数矩阵的n-2次幂,最后再和第一项矩阵的乘积即可,也就是{f(2),f(1),2}(这是竖着的),也就是(1,1,2)。最后的左上角第一项就是答案f(n)。

2024-07-04 02:37:24 331

原创 NC15557 连续区间的最大公约数

我们记父亲区间是u,左儿子区间是lu,右儿子区间是ru。同时u.gcd又是区间最小gcd,所以只要idxr减小到区间(idxl,idxr)的gcd大于u.gcd时,(0,idxr)区间的idxr都是合法的,也就是这时候对于某个固定的idxl它的贡献就是(0,idxr)的大小。同样的因为gcd的单调性,如果idxl减小的时候,区间(idxl,idxr)的gcd一定是单调不上升的,也就是说当idxl减小时,区间(idxl,idxr)的gcd又可能恢复到u.gcd,这时候我们只需要继续让idxr减小即可。

2024-07-02 15:46:54 547

原创 NC204871 求和

对于一个子树来说,子树的节点就包括在整颗树的dfs序中子树根节点出现的前后之间,所以我们先进行一次dfs,用b数组的0表示区间左端点,1表示区间右端点,同时用a数组来标记dfs序中的值。处理完dfs序后,我们就用dfs序列来建树,若要查询或修改一个子树,则区间就是b0到b1,由于在dfs序列中每个数都会出现两次,所以查询的结果是正确答案的两倍,我们只需要最后除以2即可。

2024-07-01 20:51:42 125

原创 NC13611 树(dfs序+区间dp)

然后我们需要将这x种颜色分配到x个区域,也就是x!种情况,对于划分x区域的情况就是这三者相乘。最后由于x可以取1到k所以将这k种情况取和即可。容易知道对于同一种颜色的子图一定是仅由该颜色的点连通的。设我们要划分的个数为x(x<=k),也就是说我们要选出x-1条边,这里有。那么我们需要选出x种颜色,这里有。

2024-07-01 20:44:16 243

原创 整除分块的题目

设x为因子,就是求x在1到n里出现了几次,就是求1到n里是x的倍数的数有几个,就是n/x。需要用整除分块,n/i的值是分块分部的,右端点是n/(n/i)。,在分块的时候n/i是一个定值可以提取出来,然后剩下的就是i的和,这是一个等差数列求和,直接套公式。求1到n中的因数个数和等价于求。

2024-07-01 20:20:35 319

原创 求导,积分

第二类换元法:直接换元对于三角函数可以画辅助三角形。

2024-06-15 22:36:45 571

原创 第二十届西南科技大学ACM程序设计竞赛(同步赛)C E I K L M 题

和一般的n个数变同一个数的最小花费有点区别,因为+-1的花费是100,+-2的花费是1,所以最优的状态不一定是数组的中点,但也有相似的结论,一般问题对于中点区间的点和区间两头是等价的,我们考虑这个问题时将区间拓展到l-1,l,l+1,r-1,r,r+1即可,求出所有可能区间边界点,然后按上述方法求值即可。对于求区间【l,r】的和可以利用前缀和的思想,转化成【1,r】-【1,l-1】的和,但由于该题的每个不同区间的单个值是分块分布的,所以在求和时我们先求区间包括的完整区间的和,然后再加上多余的部分的值。

2024-06-09 22:40:15 730 1

原创 字符串算法

kmp作用:字符串中找子串, 字符串的周期, 统计每个前缀出现次数 ,字符串压缩。拓展kmp作用:匹配所有子串 ,本质不同子串个数 , 字符串整周期。对于查找比较的串先求其next/z数组,next数组的时候是模式串【1,i】的最长相等前后缀,z数组是【i,n】的最长公共前缀。

2024-06-05 18:32:32 374

原创 The 2023 ICPC Asia Shenyang Regional Contest (The 2nd Universal Cup. Stage 13: Shenyang)

对于寻找真实值的时候,我们仍然要求出该值在线段树中的位置,我们只需要在查询的时候加个pp来记录查询到的叶子节点即可,因为如果要查找的和大于左边的时候,左半块我们是不会进去的,也就是说我们每次都是往右边查询,也就是说我们只会找到最右端的位置,也就是我们需要的第一个大于等于1前缀和的位置。由于我们要找的是前缀和大于等于1的位置,所以我们查询到一个位置它的左半边的和小于等于需要的和,我们直接加上左半边的和,然后去右边找剩下的和。所以我们只需要求出每次的最小操作数l和最大的操作数r,答案就是r-l+1。

2024-06-03 22:11:26 895

原创 2024 ICPC National Invitational Collegiate Programming Contest, Wuhan Site

的时候,该速度的最小时间就是当前时间(可能有多个速度对应同一个时间,找到时间块的最左端点),因为如果时间再少点的话,该速度就超不过现在的谣言了。枚举时间的时候我们动态加入该时间深度的点先求出直径,然后由于直径的中点不一定存在,所以分类讨论一下半径的值。若我们由v考虑,在求t的时候谣言树是动态的不好考虑,所以我们将谣言树变成静态的,每次。我们的二分的条件是速度乘时间(即固定时间内的路程)要大于等于直径,若满足该条件,具有单调性,速度小的满足,那么速度大的肯定也满足,所以我们二分速度。

2024-05-29 22:40:30 389

原创 Tokio Marine & Nichido Fire Insurance Programming Contest 2024(AtCoder Beginner Contest 355) F题

对于第二种情况,我们设la为连接a点的边,lb为连接b点的边,我们贪心的取max(la,lb)和c比,因为取大边我们对最终最小生成树的值减少的贡献max(0,max(la,lb)-c)最大。边权为i+1的边贪心添加的新边,也就是说如果i的并查集没有包括a和b,但i+1的并查集包括了a或者b,那么在生成最小生成树的时候对于a或者b点一定加了边权为i+1这条边(这条边可能只连接了a,或者只连接了b,也可能就是连接a和b)。类似前缀和的思想,i+1的并查集减去i的并查集剩下的就是用Kruskal算法模拟的用。

2024-05-28 20:56:00 426

原创 置换群的题

题目大意:对于一个给定的置换B,是否存在置换A^2=B。思路:对于一个置换t,它可以由多个无交集的轮换相乘得到。比如(3245176),可以看成三个轮换,即1->3->4->5->1, 2->2, 6->7->6,也可以看成(1345)(2)(67)。可以容易的知道,对于每个轮换都不会影响到其他轮换,是彼此独立的。

2024-05-27 22:31:12 412

原创 The 2023 ICPC Asia EC Regionals Online Contest (I)G题J题K题

当我们知道是到c1圆心期望最小值时,我们就可以进行下一步:找出c2中哪个点到c1圆心期望最小。我们设c2半径为R,c2内一点为(),(a

2024-05-21 21:42:34 703

原创 Panasonic Programming Contest 2024(AtCoder Beginner Contest 354)E题和F题

情况,将dp[0]初始化为0,又单张卡牌也是必败情况,我们遍历的时候将dp值先设为0,表示。容易知道当前回合没有卡牌的时候是必败。然后考虑状态转移,如果可以转移且转移前的状态为必败,则当前状态。可以胜利(只要有一种转移前状态是必败的,当前状态就设置为可以胜利,即取max)。若一个位置可以出现在最长上升子序列,即以当前位置为尾的前缀最长上升子序列长度x,和以当前位置为首的后缀最长上升子序列长度y,满足x+y等于完整序列最长上升子序列。对于后者的求法可以考虑从后往前查找以当前位置为尾的最长下降子序列长度。

2024-05-21 13:19:25 267

原创 Codeforces Round 938 (Div. 3)A-C,E-H

都为2,前者操作次数为2,后者操作次数为3,所以贪心的选择后者操作。考虑2无法操作的时候,也就是1,2,3个数都为1,则进行一次前者操作。a[i]=s[i]^s[i-1],贪心的修改,若当前位置为0则进行修改,b[i]^=1,b[i+k]^=1,若i+k超出了。对于每个塔的距离增加贡献为w=p*x-3^y,p为该塔的攻击力,x为该距离范围内的路程距离,因为c,d大于0,所以不管是行还是列都是单调递增的,也就是说a[1][1]一定是最小的,贪心的考虑,当贡献为负数就不进行选择,容易发现贡献是呈指数减少的,

2024-05-19 16:11:21 884

原创 AtCoder Beginner Contest 352 G - Socks 3

我们将每只袜子都认为不一样(同一颜色的袜子也不一样),那么总的排列数就是。或减少的,而两多项式相乘幂的增长是相加的,所以每次回溯的时候动态开两子树多项式长度。对于分治,就用线段树的模板,参数取。即前i-1次抽到不同颜色袜子的排列数。为大于等于i次抽到一双袜子的概率,又有。表示所在位置,当前位置区间的左端点和。的结果,由于线段树每次区间长度都是按。为恰好第i次取到一双袜子的概率,设。的复杂度,是不行的。次都是不同袜子的概率,我们先求。项多项式的连成若用朴素算法则是。和的数组来存乘积结果就行。

2024-05-16 17:36:49 296 1

原创 NTT多项式乘法

注意点:求高精度乘法取余进位的步骤需要在a数组全都除以n(乘完逆元)之后再进行。对于点值转系数表达式的时候,的倍数),由于是取模操作,所以除以。是最小的比两个多项式幂和的。

2024-05-15 21:23:38 157

原创 生成函数的题

lcy抛出一打百元大钞,"我要买由M个水果组成的水果拼盘,不过我有个小小的要求,对于每种水果,个数上我有限制,既不能少于某个特定值,也不能大于某个特定值。转眼到了收获的季节,由于有TT的专业指导,Lele获得了大丰收。特别是水果,Lele一共种了N种水果,有苹果,梨子,香蕉,西瓜……接下来有N行水果的信息,每行两个整数A,B(0

2024-05-15 18:16:27 1046

原创 AtCoder Beginner Contest 352 F题 Estimate Order

由题目可知,对于有关联的位置,只要确定其中一个值,其他关联值便确定了。我们将关联在一起的所有位置称为一个关联块,我们只需暴力搜索块的状态,对于单点块,没有限制可以取任意值,所以我们在搜索的时候跳过单点块,每个块有哪些点要怎么知道呢:在输入的时候建立双向边,边权为相反数。在最后搜索完之后在将单点块赋值成需要的值。的阶乘肯定是不行的,考虑缩小搜索范围。很小考虑暴力搜索,但。

2024-05-13 23:18:41 367

原创 山东理工大学第十六届ACM程序设计竞赛

然后可以先预处理出每个。的最大完全平方数因子,对于每个。开始的完全平方数),答案加上。是一个完全平方数,可以推出。是已知量,所以我们先从。是一个完全平方数,所以。是一个非完全平方数。是非完全平方数,所以。也是一个完全平方数。

2024-05-12 20:47:28 388 1

空空如也

空空如也

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

TA关注的人

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