自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CrazyForsaken的博客

低端玩家。

  • 博客(81)
  • 收藏
  • 关注

原创 2019 ICPC 南京站网络赛 super_log

广义欧拉降幂,在a与m不互质的时候要特判a的b-1指数塔和phi[m]的关系。不知道是数据水还是有计算因素的影响,很多假算法也可以通过……#include <iostream>#include <algorithm>#include <cstdio>#include <cmath>#include <cstring>#inc...

2019-09-01 21:53:59 591 1

原创 2019 ICPC 南京站网络赛 K Sum

自闭一下午……#include <iostream>#include <algorithm>#include <cstdio>#include <cmath>#include <cstring>#include <unordered_map>using namespace std;typedef long ...

2019-09-01 19:54:40 1249 1

原创 2019年 第10届山东ACM省赛 K - Happy Equation(数论)

记不太清楚了 - - 按着当时比赛的思路写吧……先把 aaa 拆开表示成 a=2q∗ka=2^q*ka=2q∗k,然后考虑 ax%2p=(2q∗k)x%2p=(2q∗x∗kx)%2pa^x\%2^p=(2^q*k)^x\%2^p=(2^{q*x}*k^x)\%2^pax%2p=(2q∗k)x%2p=(2q∗x∗kx)%2p,那么我们可以分情况讨论一下。第一种情况,(2q∗x∗kx)%2p=0(...

2019-05-14 13:56:41 576

原创 TSY’S NUMBER(莫比乌斯反演)

看新博客啦!http://crazyforsaken.com/?p=831

2019-04-30 18:23:47 613

原创 ZOJ – 3598 SPHERICAL TRIANGLE(球面三角形)

看新博客啦!http://crazyforsaken.com/?p=861

2019-04-30 18:23:26 400

原创 SDUT – 4206 FOUR-TUPLES(容斥原理)

新的博客在这里!http://crazyforsaken.com/?p=863

2019-04-30 18:22:48 301

转载 次小生成树

更新个板子。https://www.cnblogs.com/orion7/p/7400556.html#include&lt;iostream&gt;#include&lt;algorithm&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;using namespace std;const int maxn = 105, INF = 0...

2018-04-28 20:14:05 218

原创 莫比乌斯反演

数论函数一个定义在正整数集上的实或复值函数 f(n)f(n)f(n) 叫做一个数论函数。 说明:此处定义的数论函数的自变量一般都是正整数。莫比乌斯函数设正整数 n 有标准分解式 n=p1l1p2l2……pklkn=p1l1p2l2……pklkn = {p_1}^{l_1}{p_2}^{l_2}……{p_k}^{l_k},则莫比乌斯 μ(n)μ(n)\mu(n) 定义为: μ(n...

2018-03-30 17:42:42 261

原创 偏序问题

偏序基本思想有:树套树(代码量较大、不想写qaq)、CDQ分治。CDQ分治:用一个区间 [L, R] 表示序列,递归处理把它分成左右两个序列 [L, M] 和 [M+1, R],并起来的时候用左边的问题来解决右边的问题。主要特点在:一个问题对另一个问题产生了一定的影响。偏序问题:一维偏序 一维偏序,我不认为这个叫偏序,一维的情况可以直接排序来解决问题。二维偏序 二维...

2018-03-26 20:51:45 2003

转载 斯特林公式

斯特灵公式是一条用来取n阶乘近似值的数学公式。n!≈2πn‾‾‾‾√∗(ne)nn!≈2πn∗(ne)nn! \approx \sqrt{2\pi n} * (\frac {n} {e})^n 斯特林公式可以用来估算某数的大小,结合lg可以估算某数的位数,或者可以估算某数的阶乘是另一个数的倍数。...

2018-03-25 23:36:12 311

原创 组合数取模

对于组合数取模的问题,这里给出几种做法。Cmn(modp)Cnm(modp)C^{m}_{n} (mod p) 对于 n, m 较小的时候,可以使用杨辉三角强行解。当 n, m 较大的时候,且 p 是素数的时候可以用 Lucas定理。Lucas定理:若 n=nkpk+nk−1pk−1+...+n1p+n0n=nkpk+nk−1pk−1+...+n1p+n0n=n_kp^...

2018-03-23 23:03:52 367

原创 高斯消元法

对于给定的线性方程组:a11x1+a12x2+...+a1nxn=b1a11x1+a12x2+...+a1nxn=b1a_{11}x_1+a_{12}x_2+...+a_{1n}x_n = b_1 a21x1+a22x2+...+a2nxn=b2a21x1+a22x2+...+a2nxn=b2a_{21}x_1+a_{22}x_2+...+a_{2n}x_n = b_2 a31x1+a32...

2018-03-23 19:41:40 369

原创 模线性方程组、中国剩余定理

对模线性方程 ax = b (mod m),有 ax = k*m + b,其中 k 是整数。 移项后有 ax - km = b,转化到了 EXGCD 的解法。若有模线性方程组如下: x=b1(modm1)x=b1(modm1)x = b_1 (mod m_1) x=b2(modm2)x=b2(modm2)x = b_2 (mod m_2) x=b3(modm3)x=b3(modm3...

2018-03-21 21:25:57 417

原创 乘法逆元

对于正整数 a, x, m,如果满足 ax=1(modm)ax = 1 (mod m),那么我们就称 x 是同余方程中 a 模 m 的逆元。求乘法逆元:费马小定理求逆元 p为一个素数,且 (a, p) = 1,则有 ap−1=1(modp)a^{p-1} = 1 (mod p)。 那么 a 的一个乘法逆元为 ap−2a^{p-2}.拓展GCD求乘法逆元 a * x + b * y = gc

2018-03-19 23:17:15 358

原创 欧拉函数、欧拉定理

欧拉函数:设 n 为正整数,则 1,2,……,n 中与 n 互素的整数的个数计作 ϕ(n)\phi (n),叫做欧拉函数。相关性质:设 p 是素数,ϕ(p)=p−1\phi(p) = p - 1设 p 是素数,ϕ(pa)=pa−pa−1\phi(p ^ {a}) = {p}^{a} - {p}^{a-1}设 p, q 是不同的素数,n = q * p,ϕ(n)=ϕ(p)∗ϕ(q)\phi(n)

2018-03-19 20:45:04 606

原创 Pollard Rho 方法

对于整数的分解,是指将整数拆成质数乘积的形式。Birthday Trick :我们从 [1, 10000] 中随机取出一个数,取到想要的那个数的概率为 110000{\frac{1}{10000}}。 对这个问题进行修改,我们从[1, 10000] 中随机取出两个数,取到这两个数的差为我们要的那个数的概率近似为 15000{\frac{1}{5000}} 。 从选一个数到选两个数得到我们要的数的

2018-03-18 23:47:10 864

原创 Miller-Rabin 测试算法

“Miller-Rabin 测试算法”用于大素数的检测,对于较大奇数k,如果通过了 t 次素性检测,那么这个数为素数的概率大于 1−14t1−14t{1}-{\frac{1}{{4}^{t}}},因此可以用此方法来检测一个数是否为素数。该算法的时间复杂度为 O(s*log(n))。该算法基于数论的知识内容,在这里给出相关知识点。Fermat费马小定理:设 p 为素数,a 为任意正...

2018-03-18 12:29:42 736 1

原创 Fermat费马小定理

Fermat费马小定理 ---- 定理内容:设 p 为素数,a 为任意正整数,则有  .在一般上来讲费马小定理是欧拉定理的特殊形式。费马小定理的意义和应用之一就是否定一个整数为素数。...

2018-03-18 10:09:40 851

原创 匈牙利算法

二分图中的匹配算法–匈牙利算法例题:http://acm.hdu.edu.cn/showproblem.php?pid=2444 hdu2444主要就是一个腾字,我先找出一个节点给出匹配,然后找其他节点的时候进行匹配发生冲突,然后将冲突部分重新分配,如果能分配就腾出来,多分配一个。讲解如此链接: http://blog.csdn.net/thundermrbird/article/details

2018-03-08 14:51:55 306

原创 二分图判断

判断二分图的办法是:是否能只用2种颜色给一整张图没有矛盾的上色(同一条边的两种颜色不同)。代码:对一个节点进行dfs,并且给它上色1,如果其子节点和它颜色相同就说明不是二分图。如果其子节点的上相反的颜色-1出现冲突,那么仍然不是二分图。#include <cstdio>#include <cstring>#include <vector>#include <iostream>using na

2018-03-08 14:39:22 322

原创 最长公共递增子序列

a字符串,b字符串,dp数组。 要求求出字符串a和b的最大公共递增子序列。定义状态:dp[i][j]表示a串的前i个字符和b串的前j个字符,并且以b[j]为结尾的构成的LCIS的长度。当a[i] != b[j]的时候,以上定义状态有dp[i][j] = dp[i-1][j]。以b[j]为结尾的串去和a做匹配,外层循环为a内层循环为b,实际上是用b的每一个字母为结尾去找a中能找到的最大公共递增序列。

2018-03-08 13:35:40 339

原创 ST算法

RMQ问题是指给出一个大小为n的数组Arr,要求查询处i到j之间的最大值或最小值。对于区间的最值查询有两个办法: 1.朴素的搜索 2.ST算法ST算法:设ar数组为原始数组,下标从1开始,f[i][j]表示从i开始往后的2^j个数中的最大值或最小值。(这里以最大值为例) f[1][0]代表从第一个数开始(包含这个数)往后1个数的最大值。 f[1][1]代表从第一个数开始(包含这个数)往后两个

2018-03-08 12:35:24 252

原创 Tarjan算法

强连通图:在有向图G中,如果任意两个点都是联通的(这两个点可以互相到达),那么这个图就是强连通图。极大强连通子图:不能再扩大的强连通子图(已经成为局部最大的)。强连通分量:在非强连通图中,其极大强连通子图可理解为该图的强连通分量。Tarjan算法该算法的基础:基于DFS算法,同时需要两个数组dfn和low来辅助。 dfn数组:dfn[v]表示搜索到v点的步数。 low数组:low[v]表示该点所

2018-03-08 11:27:18 281

转载 最小生成树----Prim算法(邻接矩阵存图)

起初找任意一个点作为初始点,成为其他所有点的前置点并且更新dis数组,并将这个点放入集合内(vis标记),然后找到所有点到其前置点最短的那个,线段即为局部最优加入到sum内,线段终点也加入到集合里,然后遍历所有不在集合内的点,如果遍历到的点到它前置点的距离大于到线段终点的距离,就将线段终点作为其前置点并更新dis数组,依次进行就是非优先队列版的prim算法。代码:#include <cstdio>

2018-02-06 12:28:19 1430

原创 线段树

线段树对编号连续的点构成的线段进行修改和统计操作,必须要求复合的是区间加法。所谓区间加法有这样几个例子: 总数字之和 == 左区间之和 + 右区间之和 最大值 == max(左区间最大值,右区间最大值) 最大公因数 == GCD(左区间最大公因数,右区间最大公因数) …………线段树的操作主要由“点值的修改”、“区间的查询”、“区间的修改”、“上推下放函数”。定义部分:#define Max

2018-01-29 16:22:15 224

转载 二维树状数组

(手动转自度娘)二维树状数组在树状数组的基础上增加了一个维度,是一个由数字构成的大矩阵,能进行两种操作对矩阵里的某个数加上一个整数(可正可负)或查询某个子矩阵里所有数字的和,要求对每次查询,输出结果。在二维情况下:数组A[][]的树状数组定义为: C[x][y] = ∑ a[i][j], x-lowbit(x) + 1 <= i <= x, y-lowbit(y) + 1

2018-01-29 08:06:06 632

原创 一维树状数组

一维树状数组中的元素是某一个区间内的n个元素和,对于n的值,用二进制位和图形结合则更容易理解。C1 : 0 0 0 1 —— 1个元素 C2 : 0 0 1 0 —— 2个元素 C3 : 0 0 1 1 —— 1个元素 C4 : 0 1 0 0 —— 4个元素 …………自己多写几个会容易发现:Cn内的元素个数是n的二进制表示形式的最低位

2018-01-29 07:50:09 223

原创 最短路——Spfa算法

该算法使用一个队列进行维护,最初将源点加入到队列,每次取出一个元素,并且对与其相邻的点都进行松弛,若某个点松弛成功再入队,vis数组是表示在队内的元素。定义部分:const int Max = 0x3f3f3f3f;int poi_num, edge_num, cnt;struct edge{ //链式前向星的边结构体 int v; int nex;

2018-01-25 14:59:35 493

原创 最短路——Floyd算法

该算法是大暴力,最外层循环是跳转点,内层分别是出发点和终点。#include #include using namespace std;int map[1005][1005];const int Max = 0x3f3f3f3f;void init(int n){ for(int i = 0; i <= n; i++){ for(int j = 0;

2018-01-25 14:45:43 178

原创 最短路——Bellman-Ford算法

由于Dijkstra算法难以解决负环问题,因此有Bellman_Ford算法的使用。当回路中出现负环时,由于n个点,任意一个点最多进行n-1次松弛(可以缩短路径时的操作),所以当n-1次松弛之后进行判断能否再次松弛,如果可以就说明出现负环。而这个算法的缺点是时间复杂度是立方级别的。进行n-1次松弛:for(int k = 1; k = poi_num - 1; k++){

2018-01-25 14:42:25 370

原创 最短路——Dijkstra算法

Dijkstra算法用于解决最短路问题,其时间复杂度为o(n^2)。该算法大体步骤如下: 设定一个顶点集合,首先将源点加入集合内,接下来找距离远点最近距离的一个点,将其加入到集合内,用它来更新不在集合内的所有与它相连的源点能到达的点的距离,然后不断进行这个操作,n-1次之后就更新完了所有的点。查找不在集合内的源点所能到达的最近的点并加入集合:for(int j = 1; j

2018-01-25 14:31:18 368

原创 最小生成树----Prim算法(结构体存图、优先队列)

Prime算法:先找随意一个起点,找一个与其他点相连的边中的最小的边,此时这两个点缩成1个点,继续以上步骤。用vis数组判定是否在集合内再加入。

2018-01-22 09:12:23 1270

原创 最小生成树----Kruskal算法

首先明确以下概念: (1)连通图:无向图都有任意两个节点都能有路径相通。 (2)强连通图:有向图中任意两个节点都有路径相通。 (3)连通网:连通图中的边有权。 (4)生成树:一个连通图的生成树是指一个连通子图,含有图中全部n个顶点,仅有n-1条边,如果再添加一条边就必定成环。 (5)最小生成树:连通网中所有生成树中权值和最小的生成树。Kruskal算法:定义一个概念——安全边

2018-01-22 08:07:48 282

原创 链式前向星

链式前向星,一般使用建立边结构体来解决最小生成树问题,在最小生成树中的Prim算法中使用到。这里主要考虑一下链式前向星的理解。

2018-01-22 07:35:51 695

原创 Seek the Name, Seek the Fame

题目:The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names to their newly-born babies. They seek the name, and at the same time seek

2018-01-20 16:39:28 179

原创 Power Strings

题目:Given two strings a and b we define a*b to be their concatenation. For example, if a = “abc” and b = “def” then a*b = “abcdef”. If we think of concatenation as multiplication, exponentiation by a no

2018-01-20 16:34:13 357

原创 Number Sequence

题目:Given two sequences of numbers : a[1], a[2], …… , a[N], and b[1], b[2], …… , b[M] (1 <= M <= 10000, 1 <= N <= 1000000). Your task is to find a number K which make a[K] = b[1], a[K + 1] = b[2], ……

2018-01-20 16:28:39 325

原创 Period

题目:For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive)......

2018-01-20 16:25:22 298

原创 Count the string

题目:It is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s, we can write down all the non-empty prefixes of this string.

2018-01-20 16:19:56 354

原创 剪花布条

题目:一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?

2018-01-20 16:13:08 222

空空如也

空空如也

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

TA关注的人

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