自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数论——同余,不定方程,CRT,高斯消元

若两个整数 aaa,bbb 除以 正整数 mmm 后余数相同,则说 aaa,bbb 关于模 mmm 同余,记作:a≡b(modm)a\equiv b \pmod m a≡b(modm)同余的相关性质:易错点:若 ak≡bk(modm)ak\equiv bk\pmod mak≡bk(modm),则不一定 a≡b(modm)a\equiv b\pmod ma≡b(modm)表述:若正整数 nnn 与整数 aaa 互质,则满足 aϕ(n)≡1(modn)a^{\phi(n)}\equiv 1\pmod naϕ

2022-07-13 16:30:39 198 1

原创 数论——质数

2022-07-13 01:35:08 209

原创 字符串专题——KMP

给定一个长度为 nnn 的字符串 sss,其前缀函数被定义为一个长度为 nnn 的数组 π\piπ,其中 π[i]\pi[i]π[i] 定义为最长真前缀,若没有最长真前缀,则 π[i]=0\pi[i]=0π[i]=0. (默认下标从 000 开始)

2022-06-12 15:14:24 134

原创 数据结构专题——动态树

顾名思义,动态树是动态的,动态树维护了若干无序的有根树(实际上是无根的,操作过程中拓扑序不变)组成的森林.动态树,支持树上的节点到根节点的操作(树链剖分能够维护的信息),同时动态树能够高效的实现换根、加减边、森林中树的合并分裂(这是树剖无法高效实现的),这里介绍的均为 LCT(Link−Cut Trees)LCT(Link-Cut\ Trees)LCT(Link−Cut Trees).树链剖分一般指轻重链剖分,通过把树划分不同的链,然后在线段树上维护树上的信息;这里的 LCTLCTLCT 是虚实链剖分,每个

2022-06-09 15:31:27 1347

原创 数据结构专题——Treap

TreapTreapTreap 叫树堆,是一种平衡二叉树,它为每一个节点加上了一个随机数,使其满足堆的性质(默认大根堆),而节点的值又满足二叉搜索树的性质,TreapTreapTreap 能够实现随机平衡,期望的时间复杂度是 O(logN)O(logN)O(logN),相对于其他类型的平衡二叉树:TreapTreapTreap 优点:TreapTreapTreap 缺点:本文介绍 TreapTreapTreap 的几种基本操作:当前节点时,用左右子树进行更新2. 旋转操作以右旋为例子:3.插入函数

2022-06-05 14:25:44 273

原创 动态规划专题——背包dp(基础)

一.0-1背包概述特征:每种物品只有一个,可以选择放置或不放置状态转移方程如下:当 v≥wiv\ge w_iv≥wi​时:dp[i][v]=max(dp[i−1][v],dp[i−1][v−wi]+ci)dp[i][v]=max(dp[i-1][v],dp[i-1][v-w_i]+c_i)dp[i][v]=max(dp[i−1][v],dp[i−1][v−wi​]+ci​)当 v<wiv< w_iv<wi​时:dp[i][v]=dp[i−1][v]dp[i][v]=dp[i-

2022-06-04 20:45:01 567

原创 数据结构专题——单调队列

单调队列是什么?单调队列用途:序列长为 nnn,求每个 mmm 长的连续子序列的区间最值,常用于滑窗最值问题,也常用于 dpdpdp 优化单调队列的核心一个神奇的单调队列的比喻:比你小的人还比起强,你就可以被淘汰了 (来自知乎某dalao)单调队列不一定要严格单调,就那上面的比喻,当你和比你小的人旗鼓相当时,你不一定被淘汰维护最大值,则维护单减队列,因为队头总是最值队列中存的是数组下标!!!!!!单调队列八股文模板,熟练掌握!!!!!!!(我们这里就不要求严格了,以最大值为例)设

2022-06-04 14:09:54 174

原创 图论专题——网络流基础概念

流网络是一个有向图 G=(V,E)G=(V,E)G=(V,E),图中每一条边 (u,v)∈E(u,v)\in E(u,v)∈E 有一个非负的权值 c(u,v)c(u,v)c(u,v),被称为容量 . 在流网络中,有两个特殊的节点——源点 sss,汇点 ttt.设 G=(V,E)G=(V,E)G=(V,E) 为一个流网络,容量函数为 ccc,源点为 sss,汇点为 ttt,定义 GGG 中的流 fff 为 VVV 到 VVV 的实值二元关系:V×V→RV \times V \rightarrow RV×V

2022-06-02 12:02:33 351

原创 数据结构专题——虚树

虚树(virtual tree)的概念虚树 是将一个树的点集的某一个子集,以及该子集中点的 LCALCALCA 的集合,一起所重构出来的一棵树虚树的用途在树型dp中,有时候没必要对整颗树进行dp,只用对某个子集构成的虚树进行dp,大大降低了时空复杂度例题:P2495 [SDOI2011] 消耗战[SDOI2011] 消耗战题目描述在一场战争中,战场由 nnn 个岛屿和 n−1n-1n−1 个桥梁组成,保证每两个岛屿间有且仅有一条路径可达。现在,我军已经侦查到敌军的总部在编号为 111 的岛屿,

2022-05-27 19:20:22 1884

原创 Codeforces Round #793 (Div. 2) 总结-----2022.5.24

反思注意细节,提交前检查细节,不要再犯A题崩掉的错误。。。。考虑问题更加慎重,逻辑要连贯题目B. AND SortingB题的大意就是,给定一 1e51e51e5 数量级的数组(一个000 开始的排列,保证初始情况一定不严格升序),若交换 pi,pjp_i,p_jpi​,pj​,当且仅当 pi&pj==Xp_i \& p_j== Xpi​&pj​==X,XXX 为一个恒定值。问最大的 XXX 值是多少思考的关键点:由于是一个排列,所以每个元素都有一个唯一确定的最

2022-05-24 22:39:30 191 1

原创 数据结构专题——稀疏表

稀疏表的概念稀疏表,简称 STSTST,算法的思想为倍增、动态规划,支持在线 RMQRMQRMQ,不支持在线修改时间复杂度:O(NlogN)O(NlogN)O(NlogN)建表,O(1)O(1)O(1)查询稀疏表的实现用F[i][j]F[i][j]F[i][j]表示 iii ~ i+2j−1i+2^j-1i+2j−1 范围内的区间最值,区间的长度为 2j2^j2j如何构建 STSTST 呢?以最大值为例子,状态转移方程如下,注意初始化 F[i][0]F[i][0]F[i][0]:F[i][j]=

2022-05-22 16:53:26 420

原创 图论专题——二分图

1.二分图的概念离散数学书上是这样写的:二分图的充分必要条件:无奇圈 (n≥2)(n\ge2)(n≥2)二分图不一定是连通的2.染色法判定二分图题目题目链接 Acwing 860思路用两种颜色来染色,相邻节点不能相同颜色本人喜欢用bfs来写代码 O(N)O(N)O(N)#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<a

2022-05-19 01:04:04 1573

原创 搜索专题——迭代加深

什么是迭代加深IDDFS?最通俗的说法,就是限制搜索树层数的DFS如果当前深度没搜到的话,就加大深度搜索呜呜呜什么时候用IDDFS呢?namo,什么时候用IDDFS呢?即当用BFS时内存会炸掉时,且答案的步数可以预期,且BFS不方便剪枝优化,即使用IDDFSIDDFS的特点例1:POJ 2248...

2022-04-24 02:34:51 169

原创 搜索专题——A*算法

什么是A*算法?A*算法是一种结合了启发函数的宽搜算法,当搜索空间巨大时,我们可以为宽搜加上一个启发函数,来降低搜索的时空复杂度。A*算法的原理是什么?在A*算法中:定义 F(n)F(n)F(n) 为搜索树上节点的估计函数,我们根据估价的大小选择节点扩展的优先级(例如,在K短路算法中,估价值越小,越优先)定义 G(n)G(n)G(n) 为根节点到每个节点的实际代价值(例如,在K短路算法中,该函数的意义为起始点到每个点的路径长度)定义 H(n)H(n)H(n) 为当前节点到目标节点的一个启发式估计

2022-04-23 14:45:25 1138

原创 算法基础——莫队基础

知识点1: (普通)莫队的概念(普通)莫队算法是一种优化的暴力算法,用于解决区间查询的离线算法,基于分块的思想,时间复杂度 O(mn+nn)O(m\sqrt n+n\sqrt n)O(mn​+nn​)什么时候使用莫队?当对于一个查询 [l,r][l,r][l,r],能够在 O(1)O(1)O(1) 的时间内把 [l,r][l,r][l,r] 的答案转移到相邻的区间 [l,r−1][l,r-1][l,r−1],[l,r+1][l,r+1][l,r+1] …此时可以考虑使用(普通)莫队算法莫队的算法核心

2022-04-11 01:25:10 704

原创 算法基础——分块

分块的概念分块算法用于是区间信息维护与查询的算法分块的思想是把数据分成若干块,为了时间复杂度的均摊,块的大小通常设置为 n\sqrt nn​,以块为单位维护区间的值对于单点更新,时间复杂度 O(1)O(1)O(1)区间更新,若区间不跨越块,直接暴力处理,时间复杂度 O(n)O(\sqrt n)O(n​),若跨越块,则不能凑成一个整块的暴力处理,整块的直接更新,时间复杂度 O(n)O(\sqrt n)O(n​)区间查询同理分块的特点:分块算法比较简洁,能够维护一些树状数组和线段树无法维护的值,但

2022-04-09 18:58:14 915

原创 Codeforces Round #776 (Div. 3) G. Counting Shortcuts(图论+宽搜+动态规划)

题目题目传送门题目大意给定一个连通无向图(无重边和自环,nnn 顶点数,mmm 无向边数,边权均 111),每个测试点多组测试,保证∑n,∑m≤2e5\sum n,\sum m\le 2e5∑n,∑m≤2e5,再给定 s,ts,ts,t,问从 sss 到 ttt 的路径方案数(取模 1e9+71e9+71e9+7)多少,(该方案是指:最短路径或者比最短路径总权值多 111 的路径)易错点不能 memsetmemsetmemset ,否则:思路: 图上BFS序Dp设 dp[u]dp[u]dp

2022-04-02 01:59:12 376

原创 数论——约数与欧拉函数

根据试除法的结论,一个整数 NNN 的约数个数的上界为 2N2\sqrt N2N​约数个数定理,其中 aia_iai​ 为质因子的次数(算术基本定理):∏i=1n(ai+1)\prod_{i=1}^n(a_i+1)i=1∏n​(ai​+1)约数和定理(数学归纳法):∏i=1n∑j=0aipij\prod_{i=1}^n \sum_{j=0}^{a_i} p^j_ii=1∏n​j=0∑ai​​pij​intintint 范围内,一个正整数最多的约数个数为 153615361536试除法求约数板子(注意易错

2022-03-31 00:01:27 761

原创 文远知行杯广东工业大学第十六届程序设计竞赛 A.区间最大值

题目思路(找规律题目)列几个式子:aL+k0=naL+k_0=naL+k0​=na(L+1)+k1=na(L+1)+k_1=na(L+1)+k1​=n…a(L+c)+kc=na(L+c)+k_c=na(L+c)+kc​=nb(L+c+1)+kc+1=nb(L+c+1)+k_{c+1}=nb(L+c+1)+kc+1​=n…可以发现,当整除 iii 时的商相同时,余数递减。我们可以从小到大“跳商”,经验证,时间复杂度大概 O(N)O(\sqrt N)O(N​)怎么跳呢?求出 a=N/L

2022-03-27 18:13:21 121 2

原创 CodeTON Round 1 D. K-good

题干思路(本题纯考察逻辑思维能力)设 nnn 是 k−goodk-goodk−good ,则 n=∑c=0k−1(ack+c)n=\sum_{c=0}^{k-1}(a_ck+c)n=∑c=0k−1​(ac​k+c),其中:n≥2n\ge2n≥2,k≥2k\ge2k≥2,ac≥0,a0≠0a_c\ge0,a_0\neq0ac​≥0,a0​​=0 . 问是否 kkk 有整数解.先对原式化简:n=0+1+2+....+k−1+k∑ac=k(k−1)2+kT(T≥1)n=0+1+2+....+k-1+k

2022-03-27 12:50:40 463 3

原创 Acwing 4319. 合适数对 (周赛44)

题目描述思路由算术基本定理:ai=p1q1p2q2....pkqka_i=p_1^{q_1}p_2^{q_2}....p_k^{q_k}ai​=p1q1​​p2q2​​....pkqk​​所以:aiaj=p1i1+j1p2i2+j2.....pkif+jfa_ia_j=p_1^{i_1+j_1}p_2^{i_2+j_2}.....p_k^{i_f+j_f}ai​aj​=p1i1​+j1​​p2i2​+j2​​.....pkif​+jf​​又因为:aiaj=xka_ia_j=x^kai​aj​=xk

2022-03-27 11:40:25 297

原创 P2602 数字计数

题目知识点:数位dp本题可以用数位dp来做,但并不能很好地体现出dp的重叠子性质,反而边界情况太多,容易出错,不如直接一位一位枚举数量,即每一位的贡献值,时间复杂度O(1)O(1)O(1)。设当前的数位为:abcdefgabcdefgabcdefg,其中ddd为当前枚举到的数字,HHH 为 ddd 的高位数字,DDD 为 ddd 的低位数字。1.当abc<Habc< Habc<H时,即此时d无论为多少,都无所谓,因为此时整体数肯定比原数小若当前统计非0数位,则不用担心前导0的问

2022-03-23 20:46:34 84

原创 Acwing 220. 最大公约数

题目描述给定整数NNN,求1≤x,y≤N1≤x,y≤N1≤x,y≤N 且 GCD(x,y)GCD(x,y)GCD(x,y) 为素数的数对 (x,y)(x,y)(x,y) 有多少对。GCD(x,y)GCD(x,y)GCD(x,y)即求 x,yx,yx,y 的最大公约数。输入格式输入一个整数 N。输出格式输出一个整数,表示满足条件的数对数量。数据范围1≤N≤1071≤N≤10^71≤N≤107思路结论:1−N1-N1−N的正整数中,互质二元组的个数为 −1+2∗∑i=1Nphi[i]-1+2

2022-03-12 18:29:30 216

原创 Acwing 197 阶乘分解

题目给定整数 N,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pi 和 ci 即可。输入格式一个整数 N。输出格式N! 分解质因数后的结果,共若干行,每行一对 pip_ipi​,cic_ici​,表示含有 picip_i^{c_i}pici​​ 项。按照 pip_ipi​ 从小到大的顺序输出。数据范围3≤N≤1063≤N≤10^63≤N≤106思路对于N!N!N!,质因子xxx,cnt(x)=∑i=1∞⌊Nxi⌋cnt(x)=\sum_{i=1}^{\infty}\

2022-03-08 15:57:40 144

原创 Codeforces Round #775 (Div. 2) E. Tyler and Strings

题目链接题干知识点全排列,逆元,树状数组1.带有重复元素的全排列计数:设第iii个数有 aia_iai​ 个,则全排列总数为:ans=Cna1Cn−a1a2Cn−a1−a2a3⋯Canan=n!a1!a2!a3!⋯an!ans=C_n^{a_1}C_{n-a_1}^{a_2}C_{n-a_1-a_2}^{a_3}\cdots C_{a_n}^{a_n}=\frac{n!}{a_1!a_2!a_3!\cdots a_n!}ans=Cna1​​Cn−a1​a2​​Cn−a1​−a2​a3​​⋯Ca

2022-03-07 15:08:31 413

原创 Codeforces Round #774 (Div. 2) D. Weight the Tree

题目链接本题树形dp,分类讨论分析状态转移。设 :dp[u][tag]dp[u][tag]dp[u][tag]表示以uuu为根节点,当uuu为tagtagtag状态时,子树的总goodgoodgood点数量;dp_[u][tag]dp\_[u][tag]dp_[u][tag]表示以uuu为根节点,当uuu为tagtagtag状态时,子树的总重;val[u][tag]val[u][tag]val[u][tag]表示节点uuu为tagtagtag状态时的权值;deg[u]deg[u]deg[u]表

2022-03-06 12:18:27 205

原创 Codeforces Round #774 (Div. 2) C. Factorials and Powers of Two

标题 Codeforces Round #774 (Div. 2) C. Factorials and Powers of Two比赛的时候第一反应是一个背包dp,但很显然直接dp的话会寄掉。比赛完了以后仔细想了想,发现这个题就是递归式的递推(自己起的名字)。我们定义dfs(i,sum)dfs(i,sum)dfs(i,sum)为下标为0−i0-i0−i的数中,总和为sumsumsum的数的最小个数,则状态转移为:dfs(i,sum)=min(dfs(k−1,sum−arr[k])+1)dfs(i

2022-03-05 08:00:00 202

空空如也

空空如也

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

TA关注的人

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