自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单源最短路例题

单源最短路的应用

2022-07-25 23:30:52 491 1

原创 SPFA算法

SPFA算法

2022-07-25 23:29:18 232

原创 最短路——迪杰斯特拉算法

Dijkstra算法

2022-07-25 23:28:21 3416

原创 指数生成函数

牛客数学班生成函数篇——指数生成函数

2022-07-25 23:26:31 851

原创 常生成函数

牛客数学班生成函数篇——常生成函数

2022-07-25 23:24:50 618

原创 积性函数 and 莫反

积性函数 and 莫比乌斯反演1 定义对于函数f(x)f(x)f(x) ,若满足(p,q)=1(p, q) = 1(p,q)=1,且f(p×q)=f(p)×f(q)f(p \times q) = f(p) \times f(q)f(p×q)=f(p)×f(q),则称f(x)f(x)f(x)为完全积性函数2 常见积性函数正因子个数函数:d(x)d(x)d(x)欧拉函数(1 - n内与n互质的数的个数):phi(x)phi(x)phi(x)莫比乌斯函数:u(x)u(x)u(x)3 线性求积性函

2022-03-28 20:45:07 94

原创 数学期望整理

1.期望DP洛谷P1365 WJMZBMR打osu! / Easy题目入口题解令f[i]f[i]f[i]表示到第i个字符的期望长度,g[i]g[i]g[i]表示以第i个字符为结尾的连续o串长度的期望,此时就有三种情况s[i]==o时,f[i]=f[i−1]+(g[i−1]+1)2−g[i−1]2=f[i−1]+2∗g[i−1]+1,g[i]=g[i−1]+1s[i] == o 时, f[i] = f[i - 1] + (g[i-1] + 1)^2 -g[i-1]^2 = f[i - 1] + 2

2022-03-16 17:12:44 1568

原创 洛谷 P2568 GCD

洛谷P2568 GCD(欧拉筛,欧拉函数)题目入口思路遇到在范围内gcd(a,b)=kgcd(a,b)=kgcd(a,b)=k,我一般会把式子转化为gcd(a/k,b/k)=1gcd(a/k,b/k)=1gcd(a/k,b/k)=1后使用欧拉函数求解,本题只需要筛出质数,将范围1−N1-N1−N映射到1−N/prime[1],1−N/prime[2]...1- N/prime[1],1-N/prime[2]...1−N/prime[1],1−N/prime[2]...,然后在每个新范围内求出互质的数的

2021-11-10 19:02:20 256

原创 洛谷 P2155 [SDOI2008] 沙拉公主的困惑

P2155 [SDOI2008] 沙拉公主的困惑(线性筛,逆元)题目入口题解我们知道 gcd(m!+k,m!)=gcd(k,m!)gcd(m!+k,m!)=gcd(k,m!)gcd(m!+k,m!)=gcd(k,m!)若k>m!k>m!k>m! 不妨令k=m!+ck=m!+ck=m!+c于是gcd(k,m!)=gcd(c,m!)gcd(k,m!)=gcd(c,m!)gcd(k,m!)=gcd(c,m!)我们目标求1−n!1-n!1−n!中gcd(i,m!)==1gcd(i,m!

2021-11-10 15:23:06 109

原创 高斯消元法

概述高斯消元法(Gaussian elimination)是求解线性方阵组的一种算法,它也可用来求矩阵的秩,以及求可逆方阵的逆矩阵模板1.acwing 883.高斯消元解线性方程组题目入口代码#include<bits/stdc++.h>using namespace std;const int N=105;const double eps=1e-8;double a[N][N];void out(int n){ for(int i=1;i<=n;i++)

2021-10-22 17:02:35 274 1

原创 中国剩余定理及其扩展

中国剩余定理概述用于求解模数互质的线性同余方程组解题方法代码模板int exgcd(int a,int b,int &x,int &y) { if(b==0) { x=1; y=0; return a; } int ans=exgcd(b,a%b,x,y); int tmp=x; x=y; y=tmp-(a/b)*y; r

2021-10-22 16:47:54 165

原创 扩展欧几里德与贝祖定理

概述扩展欧几里德则是用来求解有关方程ax+by=max+by=max+by=m的问题扩欧模板int exgcd(int a,int b,int &x,int &y) { if(b==0) { x=1; y=0; return a; } int ans=exgcd(b,a%b,x,y); int tmp=x; x=y; y=tmp-(a/b)

2021-10-22 16:37:06 154 1

原创 排列组合数

概述排列数:从n个不同元素,任取m(m≤n,n,m均为自然数)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号Anm(或者是Pnm)A_n^m(或者是P_n^m)Anm​(或者是Pnm​)表示。Anm=n!(n−m)!A_n^m=\frac{n!}{(n-m)!}Anm​=(n−m)!n!​组合数:从n个不同元素中,任取 m(m≤n)个元素组成一个集合,叫做从n个不同元

2021-10-21 19:21:20 1458

原创 线性基整理

概述线性基,是线性代数中的概念,在信息学竞赛中,前缀线性基是线性基的扩展,他们主要用于处理有关异或和的极值问题。一组线性无关的向量即可作为一组基底,张起一个线性的向量空间,这个基底即称为线性基,利用线性基的基底进行线性运算,可表示向量空间内的所有向量,换句话说,所有向量都可以拆成基底的线性组合。根据异或的原理,将一个数字拆成他的二进制形式,将二进制形式用向量来表示,由于一组线性无关的向量可以张起一个向量空间,因此可以考虑构造这样一组数字的二进制形式组成的线性基,在这个线性基中,通过基底的线性组合、异或

2021-10-21 17:01:49 663

原创 牛客竞赛数学专题班同余与模(逆元、费马小定理、欧拉定理、孙子定理)

A.【模板】同余方程题目入口代码#include<iostream>#define int long longusing namespace std;int a,b;int x,y;int t;int exgcd(int a,int b,int &x,int &y){ if(b==0) { x=1; y=0; return a; } int ans=exgcd(b,a%b,x,

2021-10-19 19:04:26 154

原创 2021-10-13 Codeforces Round #723 (Div. 2)

Codeforces Round #723 (Div. 2)A. Mean Inequality题目入口思路构造,本题保证各个数字均不相同,所以将数组排序后,对奇数位从小到大插入,对偶数位从大到小插入,能保证偶数位的值不是所有前后位相加除以2。代码#include<bits/stdc++.h>using namespace std;const int N=55;int n,a[N];int main(){ int t; cin>>t; w

2021-10-13 14:50:31 112

原创 2021-10-11Codeforces Round #731 (Div. 3)

Codeforces Round #731 (Div. 3)A. Shortest Path with Obstacle题目入口思路:特判一条线的情况,其他为曼哈顿距离代码#include<bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { int x1,y1,x2,y2,x3,y3; cin>>x

2021-10-11 19:50:18 63

原创 Educational Codeforces Round 110 (Rated for Div. 2)

Educational Codeforces Round 110 (Rated for Div. 2)A. Fair Playoff题目入口思路找出最大和次大模拟即可代码#include<bits/stdc++.h>using namespace std;int a[5];int main(){ int t; cin>>t; while(t--) { int maxx=-1,max2=-1; for(

2021-10-09 14:14:47 104

原创 Codeforces Global Round 14

Codeforces Global Round 14A. Phoenix and Gold入口思路题目保证所有数字都不相同,只需要从小到大填数,若正好等于x,记录当前数并填下一个数即可代码#include<bits/stdc++.h>using namespace std;const int N=105;int a[N];int t,n,x;int main(){ cin>>t; while(t--) { cin>

2021-10-08 16:15:32 124

原创 类欧几里德算法

类欧几里德算法概述求满足或类似于上式的式子类型1A)当a>c||b>c时 B)当a<c&&b<c时类型2A)当a>c||b>c时B)当a<c&&b<c时类型3A)当a>c||b>c时B)当a<c&&b<c时例题题目描述输入格式第一行给出数据组数 t。接下来 t行,每行有四个整数,分别为每组数据的 n,a,b,c。输出格式对于每组数据

2021-10-07 16:46:15 78

原创 欧拉函数笔记

欧拉函数概述欧拉函数就是对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。欧拉函数的通式:φ(n)=n*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)……(1-1/pn)其中p1, p2……pn为n的所有质因数,n是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。性质① 当m,n互质时,有phi(mn)= phi(m) * phi(n);② 若i%p==0,有phi(i*p) = p * phi(i);③ 对于互质x与p,有x^phi

2021-10-07 16:32:22 268

原创 二分答案例题

二分答案一.求最小值的最大值例题1 洛谷P2678 跳石头代码#include<bits/stdc++.h>using namespace std;typedef long long ll;ll lll,n,m;ll dis[50005];ll f(ll down){ dis[0]=0; dis[n+1]=lll; ll cnt=0; ll last=0; for(int i=1;i<=n+1;i++) {

2021-10-07 15:57:38 140

原创 C. Jury Meeting

C. Jury Meeting(组合数)题目入口思路我们发现,每一次先消去的是最小的人,观察最后留下的两个不同的数,一定是最大的和次大的,并且我们发现,若最大的数个数多于两个,最后一定是在那几个数中循环,此时答案无关排列位置,就是n!,而当最大的数只有一个,以4 3 3 为例,只有当3 3 4时不合法,其余都合法,即最大数在所有次大数后面时不合法,答案用所有排列数减去不合法数即可(刚开始怕爆long long,用来qmul,结果反而tle了第8个点)代码#include<bits/std

2021-10-02 15:59:31 149

原创 E2. Array Optimization by Deque(树状数组)

E2. Array Optimization by Deque题目入口思路贪心+树状数组在每次加入一个数时比较加在头和尾时新增逆序对数即可,利用树状数组维护即可,由于求逆序对只需要知道数字比当前数大的有几个,即只需要知道他们之间的相对关系,因此首先将数组离散化。离散化模板 for(int i=1;i<=n;i++) { cin>>a1[i]; a2[i]=a1[i]; } sor

2021-10-02 14:46:22 283

原创 Sum of Consecutive Prime Numbers(尺取法)

Sum of Consecutive Prime Numbers(尺取法)题目描述Some positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representations does a given positive integer have? For example, the integer 53 has two representations 5

2021-09-27 12:14:15 192

原创 耍杂技的牛

耍杂技的牛(贪心)题目入口题目描述农民约翰的 N 头奶牛(编号为 1…N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。奶牛们不是非常有创意,只提出了一个杂技表演:叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。这 N 头奶牛中的每一头都有着自己的重量 Wi 以及自己的强壮程度 Si。一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,风险值越大,这只牛撑不住的可

2021-09-26 20:22:12 78

原创 逆元笔记整理

概述如果一个线性同余方程ax≡1(mod b),则称x是a mod b的逆元,记作a-1。(当a⊥b时才有逆元)扩欧求逆元代码模板1. void exgcd(int a, int b, int& x, int& y) { 2. if (b == 0) { 3. x = 1, y = 0; 4. return; 5. } 6. exgcd(b, a % b, y, x); 7. y -= a / b * x; 8. }

2021-09-26 14:03:57 184

原创 BSGS与扩展BSGS

这里写目录标题概述普通BSGS解题步骤代码模板扩展BSGS解题步骤代码模板经典例题洛谷P4861 按钮概述主要用于解决an=b(mod p) 问题,求解最小非负整数n,使其满足左式,普通BSGS求解a与p互质的情况,扩展BSGS可求解不互质情况普通BSGS解题步骤1.取m=ceil(sqrt§)(向上取整),若解存在,可令n=im-j,即数对(i,j)存在2.an = b ( mod p )aim-j = b( mod p )aim = baj ( mod p )3.再0-m范围内枚举ba

2021-09-26 13:50:04 118

原创 B. Swaps(双指针)

B. Swaps(双指针)题目入口思路我们可以发现操作步数是由a移动的步数和b移动数量组成,为了使a严格小于b,由于a和b数组没有相同元素,所以必满足a[1]<b[1],而对于每个数组移动步数就是他们的坐标减1,暴力做法是我们枚举a的所有元素,再对b进行查找,这样复杂度O(n²),显然超时,若我们对a数组进行排序,并且记录他的原坐标,再对b数组进行查找,由于a数组满足a[i[<a[i+1],因此若b[j]>a[i],则当a到a[i+1]时,b中j前面的元素一定小于a[i+1],于是

2021-09-24 14:40:11 240

原创 P3853 [TJOI2007]路标设置

P3853 [TJOI2007]路标设置(二分答案)题目背景B 市和 T 市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题,我们把公路上相邻路标的最大距离定义为该公路的 “空旷指数”。题目描述现在政府决定在公路上增设一些路标,使得公路的“空旷指数”最小。他们请求你设计一个程序计算能达到的最小值是多少。请注意,公路的起点和终点保证已设有路标,公路的长度为整数,并且原有路标和新设路标都必须距起点整数个单位

2021-09-23 19:02:55 68

原创 斯特林数模板

斯特林数第一类斯特林数第二类斯特林数第一类斯特林数求将n个互不相同的球分成k个圆排列的方案数思路s[i][j]表示将i个球分成j个圆排列的方案数,当放入第i个球时,可以将其额外新增一个原排列,此时方案数位s[i-1][j-1],也可以将其插入到前i-1个数的空隙中,由于是圆排列,x个球就有x个空,于是新增了(i-1)*s[i-1][j]种方案。第一类斯特林数模板题代码#include<bits/stdc++.h>using namespace std;#define int l

2021-09-18 18:43:06 87

原创 D1. Domino (easy version)(分解质因数+欧拉筛)

D1. Domino (easy version)题目入口思路设a=p1 ^ a1 * p2 ^ a2 * p3 ^ a3…pn ^ an (p1,p2…为a的质因数),b=k1 ^ b1 * k2 ^ b2 * k3 ^ b3…kn ^ bn (k1,k2…为b的质因数),则a可以在cnt1=a1+a2+a3…an的次数内变成1,b能够在 cnt2=b1+b2+b3…+bn的次数内变成1,于是可以发现,若k>cnt1+cnt2,两个数在cnt1+cnt2操作后无法操作,输出NO,在k&lt

2021-09-17 15:08:15 218

原创 2021-09-17C. Strange Function(lcm+容斥)

C. Strange Function(lcm+容斥)题目入口思路f[x]表示不被x整除的最小的数,设其为a,则对x必存在因子1,2…a-1,也就是说x存在约数a1=lcm(1,2,3,…a-1),由于a不被整除,所以x不存在约数a2=lcm(1,2,…a),在1-n中a1的倍数有n/a1个,a2的倍数有n/a2个,由于a1|a2,所以是a1倍数但不是a2倍数的有n/a1-n/a2个,且这些数的大小为a,循环到lcm大于n的时候停止即可代码#include<bits/stdc++.h&gt

2021-09-17 09:41:11 140

原创 P2424 约数和(整除分块)

P2424 约数和(整除分块)题目入口题目描述对于一个数 XX,函数 f(X)f(X) 表示 XX 所有约数的和。例如:f(6)=1+2+3+6=12f(6)=1+2+3+6=12。对于一个 XX,Smart 可以很快的算出 f(X)f(X)。现在的问题是,给定两个正整数 X,Y(X<Y)X,Y(X<Y),Smart 希望尽快地算出 f(X)+f(X+1)+……+f(Y)f(X)+f(X+1)+……+f(Y)的值,你能帮助 Smart 算出这个值吗?输入格式输入文件仅一行,两个正整数

2021-09-16 19:54:37 131

原创 D. Say No to Palindromes(前缀和)

D. Say No to Palindromes题目描述Let’s call the string beautiful if it does not contain a substring of length at least 2, which is a palindrome. Recall that a palindrome is a string that reads the same way from the first character to the last and from the las

2021-09-16 09:20:23 189

原创 acwing食物链(带权并查集)

食物链(带权并查集)题目描述动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。现有 N 个动物,以 1∼N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是 1 X Y,表示 X 和 Y 是同类。第二种说法是 2 X Y,表示 X 吃 Y。此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真的,有的是假的。

2021-09-16 00:13:16 120

原创 C. Rings(构造)

C. Rings(构造)https://codeforces.com/problemset/problem/1562/C题意Frodo was caught by Saruman. He tore a pouch from Frodo’s neck, shook out its contents —there was a pile of different rings: gold and silver…“How am I to tell which is the One?!” the mage ho

2021-09-15 22:14:55 229

原创 C. Carrying Conundrum(思维)

C. Carrying Conundrum(思维)题意小明不知道如何列竖式计算,每次计算将进位往左移了一位,要求算出存在多少对数对(a,b)使得其按照小明列竖式的方法能求出目标数字以下是小明的计算列竖式方法思路由于进位左移一位,也就是说个位进位到百位再进位到万位,十位进位到百位再到十万位,将奇数位和偶数位独立出来便是正确的列竖式方法,所以只需要将奇数位的组合与偶数位的组合个数相乘,由于本题要求数对(a,b)为正数,所以最后答案减2即可#include<bits/stdc++.h>

2021-09-15 20:59:12 199

空空如也

空空如也

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

TA关注的人

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