自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

沉默的大多数

试问编程路应长,却道,此心安处是吾乡。

  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 最长路径

#include<cstdio>#include<cstring>#include<iostream>#include<vector>#define maxn 23388using namespace std;int n, dis = -1, v, flag[maxn];typedef pair<int,int> pii;...

2018-08-29 22:42:38 1397

原创 判断奇偶

#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int N=1e6+11;char s[N];int main(){ gets(s); int n=strlen(s); if(s[n-1]&1)//奇数 ...

2018-08-29 22:38:01 526

转载 中国剩余定理

转自中国剩余定理与扩展1.模数互质#include<iostream>#include<cstdio>#include<climits>#include<cstring>#include<algorithm>using namespace std;int n,m[105],a[105],lcm=1;int exgc...

2018-08-29 21:35:06 107

原创 KMP 寻找子串

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1010;int next[maxn];int l1=15,l2=3;//两串长度 char str1[maxn]="abcaccdeacdaacd",str2[maxn]="acd";int sum;void...

2018-08-29 21:16:12 237

原创 Kruskal、Prim

引用了算法导论--最小生成树(Kruskal和Prim算法)稠密用Prim,稀疏用Kruskal1.Kruskal此算法可以称为“加边法”,初始最小生成树边数为0,每迭代一次就选择一条满足条件的最小代价边,加入到最小生成树的边集合里。 1. 把图中的所有边按代价从小到大排序; 2. 把图中的n个顶点看成独立的n棵树组成的森林; 3. 按权值从小到大选择边,所选的边连接的两个顶点u...

2018-08-26 22:38:30 670

原创 Dijkstra、Bellman-ford

1.Dijkstra邻接矩阵实现(时间少)时间复杂度 O(n²) 空间复杂度 O(n²) 不能出现负权边。#include <iostream>#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <cst...

2018-08-26 18:28:26 638

原创 Floyd-Warshall

 用来算多源间最短距离和路径。 时间复杂度 O(n^3) 空间复杂度 O(n^2) 稠密图效果最佳,边权可正可负#include <bits/stdc++.h>typedef long long LL;const int MAXN = 100;const int INF = 0x3f3f3f3f;using namespace std;int path[MA...

2018-08-26 12:33:53 971

原创 费马大定理

当整数时,关于的方程 没有正整数解。 对于:当a为奇数时:,,。当a为偶数时:,,。 

2018-08-26 11:08:40 3529

原创 线段树

例题题目:https://www.nowcoder.com/acm/contest/135/I(不过这题用线段树会暴栈)可以用前缀和做https://blog.csdn.net/aaakkk_1996/article/details/81177513以下是模板:#include <bits/stdc++.h>using namespace std;typedef lo...

2018-08-25 01:20:44 107

转载 逆元

转自:数论学习_逆元意义及求法  首先说明逆元的概念,类似于倒数的性质。方程ax≡1(mod  p),的解称为a关于模p的逆,当gcd(a,p)==1(即a,p互质)时,方程有唯一解,否则无解。对于一些题目会要求把结果MOD一个数,通常是一个较大的质数,对于加减乘法通过同余定理可以直接拆开计算,但对于(a/b)%MOD这个式子,是不可以写成(a%MOD/b%MOD)%MOD...

2018-08-24 13:47:46 158

原创 求绝对值_abs、fabs、fabsf

求绝对值int abs(int i);                   double fabs(double i); float fabsf(float i);         

2018-08-19 14:32:38 998

原创 深搜DFS_桃花(求图的最长路径)

例题链接:https://www.nowcoder.com/acm/contest/136/C 题目描述    桃花一簇开无主,可爱深红映浅红。                                        ——《题百叶桃花》    桃花长在桃树上,树的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到树上任意一条链上的所有桃...

2018-08-19 12:20:41 2127

原创 牛客小白月赛6 D_字符串丝带

例题链接:https://www.nowcoder.com/acm/contest/136/D题目描述    WHZ送给了HtBest一个“字符串丝带”,这条丝带由n个小写字母按照一定的顺序排列组成,HtBest收到新礼物后有许多问题,类似“第i个位置的字母在前i个位置中出现了几次?”,HtBest很希望知道答案,于是求助你帮忙解答。 输入描述:第一行有2个正整数n,m,分别表...

2018-08-19 11:48:11 223

原创 最小生成树_挖沟(求连通全图的最短路径)

例题链接:https://www.nowcoder.com/acm/contest/136/H 题目描述    胡队长带领HA实验的战士们玩真人CS,真人CS的地图由一些据点组成,现在胡队长已经占领了n个据点,为了方便,将他们编号为1-n,为了隐蔽,胡队长命令战士们在每个据点出挖一个坑,让战士们躲在坑里。由于需要在任意两个点之间传递信息,两个坑之间必须挖出至少一条通路,而挖沟是一件很麻...

2018-08-19 11:41:00 908

原创 并查集_Hdu1232(畅通工程)

并查集在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比赛规定的...

2018-08-17 17:41:05 214

原创 双端队列求滑动区间最值

 给出一个可能包含重复的整数数组,和一个大小为 k 的滑动窗口, 从左到右在数组中滑动这个窗口,找到数组中每个窗口内的最大(小)值。给出数组 [1,2,7,7,8], 滑动窗口大小为 k = 3. 最大 [7,7,8],最小[1,2,7].Poj2823(最大注释掉了)#include<cstdio>int f[1000005],p[1000005],q[10000...

2018-08-17 00:30:23 494

转载 计算两圆相交面积

转自:[模板] 求两圆相交面积(模板) 两圆相交分如下集中情况:相离、相切、相交、包含。设两圆圆心分别是O1和O2,半径分别是r1和r2,设d为两圆心距离。又因为两圆有大有小,我们设较小的圆是O1。相离相切的面积为零,代码如下:double d = sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));if (d >= r1+r2...

2018-08-16 18:44:20 40001 8

原创 最大连续子矩阵和

问题求一个M*N的矩阵的最大子矩阵和。比如在如下这个矩阵中:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2 拥有最大和的子矩阵为:9 2-4 1-1 8其和为15。代码#include <bits/stdc++.h>using namespace std;const int maxn=100;int max_sub...

2018-08-16 18:11:11 600

原创 最大连续子序列和

 一个序列,连续子序列和的最大值,以及左值和右值的下标(从0开始)。如:1 -3 -5 2 6 -1 4 9下标3到7即从(2到9)之和最大,为20。#include <iostream>const int maxn=100;using namespace std;int ml, mr, l, r;int max_sub_array(int x[], int...

2018-08-16 17:24:27 572

转载 01背包、完全背包、多重背包、分组背包

参考链接:01背包、完全背包、多重背包问题的C++实现 史上最易懂的01背包,完全背包,多重背包讲解浅谈分组背包 各种背包的描述:01背包(ZeroOnePack): 有N件物品和一个容量为V的背包。(每种物品均只有一件)第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。完全背包(CompletePack): 有N种物品和一个容量为V的...

2018-08-16 16:43:46 970

转载 01背包问题

转自:总结——01背包问题 (动态规划算法)0-1 背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大? 分析一波,面对每个物品,我们只有选择拿取或者不拿两种选择,不能选择装入某物品的一部分,也不能装入同一物品多次。 解决办法:声明一个 大小为  m[n][c] 的...

2018-08-15 23:40:35 226

转载 动态规划进阶——最长公共子序列(POJ1458)、最长上升子序列(百练2757)

转自:教你彻底学会动态规划——进阶篇在我的上一篇文章中已经详细讲解了动态规划的原理和如何使用动态规划解题。本篇文章,我将继续通过例子来让大家更加熟练地使用动态规划算法。    话不多说,来看如下例题,也是在动态规划里面遇到过的最频繁的一个题,本题依然来自于北大POJ:    最长公共子序列(POJ1458)    给出两个字符串,求出这样的一个最长的公共子序列的长度:子序列中的每个...

2018-08-15 20:14:34 1859

转载 动态规划入门——数字三角形问题(The Triangle)Poj1163

转自教你彻底学会动态规划——入门篇(这篇文章写的非常好,思路清晰,浅显易懂,反正我是一遍就看明白了,感谢大神)   动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又...

2018-08-15 11:43:18 805

原创 分解质因数

概念:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。 分解质因数只针对合数。题目:分解质因数,比如360=2*2*2*3*3*5 其质因数为2 2 2 3 3 5//将一个数n分解为若干个从小到大排列的质数列#include <iostream>using namespace std;int main(){ i...

2018-08-14 00:37:36 435

原创 整数分解

改自:https://blog.csdn.net/summerxiachen/article/details/62421985整数分解在数学中,整数分解(英语:integer factorization)又称素因数分解(prime factorization),是将一个正整数写成几个约数的乘积。例如,给出45这个数,它可以分解成9×5。根据算术基本定理,这样的分解结果应该是独一无二的。这个...

2018-08-14 00:26:34 2027 2

原创 map 映射

概念:map就是从键(key)到值(value)的映射。因为重载了[]运算符,map像是数组的“高级版”。例如可以用一个map<string, int> month_name来表示“月份名字到月份编号”的映射然后用month_name["July"] = 7这样的方式来赋值基本操作函数: C++maps是一种关联式容器,包含“关键字/值”对...

2018-08-13 23:55:17 8784

转载 红黑树

转自:https://blog.csdn.net/sun_tttt/article/details/65445754易懂的漫画:https://www.sohu.com/a/201923614_466939介绍红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但是这样在动态插入中保持树的完美平衡代价太高,所以,我们稍微放松逛一下限...

2018-08-13 23:46:04 109

转载 多机调度

转自https://www.cnblogs.com/cxmhy/p/4477670.html多线程问题 之多机调度问题类型一:机器是完全相同的,不同的作业处理时间是独立的问题描述:设有n个独立的作业{1,2,...n},由m台相同的机器进行加工处理。作业i所需的处理时间为ti。现规定,任何作业可以在任何一台机器上加工处理,但未完工之前不允许中断处理。任何作业不能拆分成更小的子作业。...

2018-08-13 16:39:52 3441

原创 区间调度问题_多线程

区间调度问题_单线程是一个人,这里是k个人。题目:https://nanti.jisuanke.com/t/28880有n项工作,k个人,每项工作分别在si开始,ti结束。对每项工作,人都可以选择参加或不参加,但选择了参加某项工作就必须至始至终参加全程参与,注意(x1,y1) (x2,y2) y1==x2 不算重叠。求最多参加几项工作。样例输入5 21 45 92 7...

2018-08-13 11:55:40 259

原创 字符串:getline、gets、substr、find、提取数字、倒置、去前后0、串联

  getline(cin, str);// 接收一个string型字符串,可以接收空格并输出,需要#include<string> 需要注意的是,当同时使用cin>>,getline()时,,在cin>>输入流完成之后,getline()之前,要getchar();一下。如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直...

2018-08-12 23:18:47 561

转载 区间调度问题_单线程(最多、最大区间)

1、最多区间调度转自:https://www.cnblogs.com/yjlblog/p/7506887.html 本文由 YJLAugus 创作(这个大佬的博客还挺萌的)问题描述:有n项工作,每项工作分别在si开始,ti结束。对每项工作,你都可以选择参加或不参加,但选择了参加某项工作就必须至始至终参加全程参与,即参与工作的时间段不能有重叠(即使开始的时间和结束的时间重叠都不行)。求最...

2018-08-12 23:10:48 866

转载 C++ pair

转自:https://www.cnblogs.com/ttzm/p/5881003.html类模板:template<class T1,class T2> struct pair参数:T1是第一个值得数据类型,T2是第二个值的数据类型。功能:pair将一对值组合成一个值,          这一对值可以具有不同的数据类型(T1和T2),          两个值可以...

2018-08-12 22:52:01 368

原创 斐波那契数列

1、1、2、3、5、8、13、21、34、……1.递归法:   缺点:重复计算的次数太多,效率低。时间复杂度:O(2^N)#include<bits/stdc++.h>using namespace std;long long Fib(long long N){ if (N < 3) return 1; else ...

2018-08-12 20:57:27 105

原创 归并排序求逆序对

逆序对定义:对于一个包含N个非负整数的数组A[1..n],如果有i < j,且A[ i ]>A[ j ],则称(A[ i] ,A[ j] )为数组A中的一个逆序对。例如,数组(3,1,4,5,2)的逆序对有(3,1),(3,2),(4,2),(5,2),共4个。归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divid...

2018-08-12 20:35:14 959

原创 二分法查找

#include<bits/stdc++.h>#define N 10using namespace std;int findx(int a[],int k)//数组名和要找的数 { int l=0,r=N; int mid=(l+r)/2; while(l<r&&a[mid]!=k) { if(a[mid]<k)l=mi...

2018-08-12 20:11:53 126

原创 查找数组和vector中的最大和最小值(的位置)

 注意maxpos和minpos是数组下标而不是值!1.数组#include <bits/stdc++.h>using namespace std;int main() { int a[5] = {12,2,100,45,78 }; int maxpos=max_element(a,a+5)-a;//最大值的位置 int minpos=min_element(...

2018-08-12 17:52:10 2878

原创 阶乘

1.普通阶乘 #include<stdio.h>long long jc(long long n){ return n==0? 1:jc(n-1)*n;}int main(){ printf("%lld",jc(10)); return 0;}2.大数阶乘//本题题目源于HDU 1042 计算N!#include <iostream>...

2018-08-12 17:33:26 123

转载 分治和递归

转自:https://blog.csdn.net/dcj0913/article/details/39271721一、基本概念   在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法...

2018-08-12 16:47:42 738

原创 坐标离散化

离散化把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:原数据:1,999,100000,15;处理后:1,3,4,2;原数据:{100,200},{20,50000},{1,400};处理后:{3,4},{2,6},{1,5};思路:先排序,再删除重复元素,最后就是索引元素离散化...

2018-08-12 11:09:49 567

原创 莫队算法 CF617E、洛谷P1972、小z的袜子

莫队算法该算法为ACM国家队前队长@莫涛发明,先膜拜巨犇。%%%%%%Orz莫队算法主要是用于离线解决 通常不带修改只有查询,没有修改的一类区间问题。假如知道了区间[l,r]中选择两个是相同颜色的情況数,那么可以在O(1)的时间内得出[l+1,r]或者[l-1,r]。每一个查询区间相当于曼哈顿坐标,所以可以用莫队算法得出曼哈顿最小生成树然后处理区间即可。但是还有更简单的做法,把x分成s...

2018-08-11 13:38:55 235

ACM模板(入门级、中级)

这是我打ACM时自己整理的模板,适合入门级选手,大佬勿看,包含:ACM基础、数据结构、常用技巧、模拟构造、分治递归、动态规划、贪心、图论、搜索、计算几何等。下载后不建议直接拿来用,而应该把它当成学习资料,学习路径,最终整理出自己的模板,祝大家变得更强!

2021-12-16

空空如也

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

TA关注的人

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