
板子
文章平均质量分 74
芋圆西米露
情不自禁流下属于真正弱者的泪水/doge/doge/doge
展开
-
判断素数(一般筛到线性筛)
【...】今天我们来判断素数~目录【原始】【普通筛——埃拉托斯特尼(Eratosthenes)筛法】【线性筛——欧拉Euler筛】【原始】时间复杂度O(n*sqrt(n))bool isprime(int n){ int i; for(i=2;i<=sqrt(n);i++) if(n%i==0) ...原创 2018-07-22 10:20:40 · 10205 阅读 · 2 评论 -
求最短路径的四种方法(Dijkstra,Floyd,Bellman-Ford,SPFA算法)
【前言】还不知道图是什么的可以看看这篇:图的基本概念。最短路径,即在网络(带权的图)中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径。第一个顶点为源点,最后一个顶点为终点。【问题分类】单源最短路问题(特定点到所有点的最短路)和多源最短路问题(任意两点之间的最短路)。其中又分为有向图和无向图,有权图和无权图。根据边权的正负,又分为带负权边和不带负权边的最短路。【最...原创 2019-01-28 16:26:11 · 5347 阅读 · 0 评论 -
2018宁夏邀请赛 B. Goldbach(Miller-Rabin素数检测算法裸题)
【题解】枚举,用Miller-Rabin素数检测算法判断素数。【代码】#include<bits/stdc++.h>using namespace std;typedef unsigned long long ll;ll ModMul(ll a,ll b,ll n){ ll ans=0; while(b){ if(b&1) ...原创 2019-08-22 15:20:58 · 291 阅读 · 0 评论 -
大数乘法(板子)
#include<bits/stdc++.h>using namespace std;char a[10005],b[10005];int x[10005],y[10005],z[20005];int main(){ int l1,l2,i,j,k; while(~scanf(" %s %s",a,b)) { memset(z,0,s...原创 2018-06-13 19:58:32 · 700 阅读 · 3 评论 -
zcmu 2149 wjw的排序问题(归并排序)
【题目】wjw的排序问题时间限制: 1 Sec内存限制: 128 MB提交: 48解决: 12[提交][状态][讨论版]题目描述菜鸡wjw觉得最近对排序算法的理解又上了一个档次,于是准备研究一下自己会的所有排序算法,经过测试,他写的所有代码里最快的只有一句话"std::sort(a,a+len)",于是他终于发现自己依旧是个菜鸡...那么问题来了,如果不用"std...原创 2018-06-04 13:47:51 · 404 阅读 · 0 评论 -
zcmu 1129: 第五章:一不小心爱上你(斯特灵公式)
【题目】1129: 第五章:一不小心爱上你Time Limit:5 SecMemory Limit:128 MBSubmit:504Solved:129[Submit][Status][Web Board]DescriptionO型血的人大多数是行动派,郑微更是将这个特征发挥到了极致。次日上课,阮阮前所未有地发现她在课堂上奋笔疾书,大为惊讶,便凑过去问了一声...原创 2018-05-08 22:49:30 · 339 阅读 · 0 评论 -
中国剩余定理 (孙子定理) 的证明和代码
目录【引入】【中国剩余定理】【代码实现】【借鉴于】【引入】《孙子算经》里有这样一个题目:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?术曰:“三、三数之剩二,置一百四十;五、五数之剩三,置六十三;七、七数之剩二,置三十,并之,得二百三十三。以二百一十减之,即得。凡三、三数之剩一,则置七十;五、五数之剩一,则置二十一;七、七数之剩一,则置十五。一百...原创 2019-08-21 21:02:33 · 2118 阅读 · 0 评论 -
分解质因数、求因子数和因子和(唯一分解定理)
【唯一分解定理】又称算术基本定理,可以描述为:任意一个大于1的正整数都能表示成若干个质数的乘积,且表示的方法是唯一的。换句话说,一个数能被唯一地分解成质因数的乘积。公式:,因子数:p1可以取的个数为[0, a1],p2可以取的个数为[0, a2],pk可以取的个数为[0, ak],根据乘法原理,总的因子个数就是这些指数+1的连乘,即(1 + Ye1) * (1 + Ye2) ...原创 2019-08-29 13:31:37 · 2554 阅读 · 0 评论 -
倍增算法实现后缀数组详解+实现代码
【前言】不要被文章的长度吓到,因为罗穗骞的论文要更长更详尽,我只是取了其中的一部分进行学习并做一个学习笔记,便于以后有需要的时候回顾。文章的内容主要是介绍后缀数组的实现,后缀数组的应用部分主要是结合例题来理解。目录【后缀数组】【引入】【后缀数组的实现】【倍增算法】【具体实现】【步骤解析】【复杂度分析】【后缀数组的应用】【最长公共前缀】【单个字符串的相...原创 2019-08-30 13:59:33 · 1144 阅读 · 0 评论 -
八大排序:冒泡排序、插入排序、希尔排序、选择排序、堆排序、归并排序、快速排序、基数排序
目录【前言】【冒泡排序(Bubble Sort)】(稳定)【快速排序(Quick Sort)】(不稳定)【插入排序(Insert Sort)】(稳定)【希尔排序(Shell Sort)】(不稳定)【选择排序(Selection Sort)】(不稳定)【堆排序(Heap Sort)】(不稳定)【归并排序(Merge Sort)】(稳定)【基数排序(Radix So...原创 2019-02-28 20:58:05 · 5066 阅读 · 0 评论 -
逆序数 + 正序数(归并排序)
目录【板子】【逆序数】【正序数】【板子】八大排序:冒泡排序、插入排序、希尔排序、选择排序、堆排序、归并排序、快速排序、基数排序【逆序数】1203: 逆序数Time Limit: 1 SecMemory Limit: 128 MBSubmit: 555Solved: 113[Submit][Status][Web Board]Description...原创 2018-06-29 22:59:33 · 3304 阅读 · 0 评论 -
树状数组(单点修改+区间修改)
【引入】树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个数组的值(如果加入多个辅助数组则可以实现区间修改与区间查询)。这种数据结构(算法)并没有C++...原创 2018-07-24 16:51:29 · 3735 阅读 · 1 评论 -
组合数取模(板子)
【引用自】组合数取模【一些常见的取值情况】我们要解决的问题是,ll C[1001][1001];void calc_Cmn(){ for(int i=0;i<1001;i++){ C[i][0]=C[i][i]=1; for(int j=1;j<i;j++) C[i][j]=(C[i-1][j-...原创 2019-08-29 10:56:47 · 821 阅读 · 1 评论 -
字典树与01字典树详解
【镇楼】 不满足于粗浅的表面了解字典树吗,今天!由我给大家带来!字典树与01字典树的解析!!目录【引入】【字典树】【01字典树】【引用参考】【引入】字典是干啥的?查找字的。那么字典树顾名思义,自然也就是起查找作用的一种树,查找的是啥?单词。我们先来看以下两个问题:1、给出n个单词和m个询问,每次询问一个单词,回答这个单词是否在单词表中出现过。答:...原创 2019-08-06 16:55:31 · 4267 阅读 · 3 评论 -
网络流 最大流最小割与最小费用流
目录【镇楼】【引入】【基本定义和概念】【最大流算法】【最小割】【最小费用最大流】【引用】【镇楼】 天啦真的好好懂!!!麻麻再也不用担心我的网络流学习啦!!!【引入】首先,我们来看一个网络流图实例。最大流问题:给定指定的一个有向图,其中有两个特殊的点源点S(Sources)和汇点T(Sinks),每条边有指定的容量(Capacity),求...原创 2019-07-30 15:26:19 · 1628 阅读 · 0 评论 -
zcmu 1185: 走迷宫(bfs板子)
【题目】1185: 走迷宫Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 354 Solved: 140[Submit][Status][Web Board]Description给一张个迷宫,问能否从起点走到终点,只能往上下左右走,不能斜着走Input多组测试数据,每组第一行两个正整数,分别为n和m表示n这个迷宫有n...原创 2018-08-08 14:15:58 · 786 阅读 · 1 评论 -
ST表实现RMQ详解+例题(一维+二维)
目录【ST算法】【引入】【实现】【一维】【二维】【例题】【一维】【二维】【ST算法】 【引入】区间最值RMQ问题的两种实现方法:1.线段树(预处理时间复杂度,查询与修改时间复杂度,适用于带修改的情况)2.ST算法(预处理时间复杂度 ,查询时间复杂度 ,适用于无修改操作且查询较多的情况)【实现】【一维】ST算...原创 2019-04-24 16:04:22 · 559 阅读 · 0 评论 -
区间DP入门+四边形优化
一.什么是区间DP?区间DP,顾名思义,求区间最值问题。通过合并小区间最优解来更新大区间,然后逐渐更新出答案。二.核心思路要求解在一个区间上的最优解,那么就要把这个区间分割成一个个小区间,求解每个小区间的最优解,再合并小区间得到大区间。所以在代码实现上,先枚举区间长度len为每次分割成的小区间长度(由短到长不断合并),内层枚举该长度下的起点和终点,然后在这个起点与终点之间枚举分割点,求...原创 2019-07-11 16:42:46 · 595 阅读 · 0 评论 -
uva 10229 Modular Fibonacci(矩阵快速幂求斐波那契数列 or 找规律)
【例题】uva 10229 Modular Fibonacci矩阵快速幂求斐波那契数列板子题。规律:fib数列对2^m取模的循环节为3*(2^(m-1)).【代码一】#include<bits/stdc++.h>using namespace std;int fib[22][2000000];int main(){ int m,n; for...原创 2019-07-15 21:16:49 · 276 阅读 · 0 评论 -
线段树 单点修改+区间修改和查询 例题+代码
目录【单点修改,区间查询 例题】【hdu 1166 敌兵布阵】【hdu 1754I Hate It 】【区间修改,区间查询 例题】【hdu 1698Just a Hook】【单点修改,区间查询 例题】1.单点修改、区间查询 - hdu 1166 敌兵布阵2.单点修改、区间查询最值 - hdu 1754I Hate It【hdu 1166 敌兵布阵】...原创 2019-07-03 21:31:19 · 1012 阅读 · 0 评论 -
普通、带修(可持久化)莫队算法入门例题详解
目录【莫队算法】【普通莫队】【代码】【题面】【带修莫队】【代码】【题面】【总结】【莫队算法】参考大米饼的莫队算法,目前的题型概括为三种:普通莫队,带修莫队以及树形莫队。【普通莫队】例题:2038: [2009国家集训队]小Z的袜子(hose)题意:给定编号1-n的n只袜子的颜色,输出从询问的区间[L,R]中随机抽出两只袜子颜色相同的概率。...原创 2019-05-24 20:19:54 · 755 阅读 · 0 评论 -
马拉车算法 Manacher + 例题: hihocoder #1032 最长回文子串
【马拉车Manacher算法】引入:计算字符串的最长回文字串最朴素的算法就是枚举字符串的每一个子串并判断这个子串是否为回文串,这个算法的时间复杂度为O(n^3),显然无法令人满意。稍微优化的算法是枚举回文串的中点,这里要分为两种情况,一种是回文串长度是奇数的情况,另一种是回文串长度是偶数的情况,枚举中点再判断是否是回文串,这样能把算法的时间复杂度降为O(n^2),但是当n比较大的时候仍然无...原创 2019-04-29 10:03:29 · 272 阅读 · 0 评论 -
HDU - 5943 Kingdom of Obsession (二分图匹配 匈牙利算法)
【题解】题意:问是否能将n个数字s+1,s+2,s+3,...,s+n,安排在1,2,3,...,n的位置上,要求每个数字放在能够整除它的位置。思路:当s<n时,[s+1,n]放在自己的编号上才是最优的,因此我们只需要考虑[n+1,s+n]放到[1,s]的情况;当s>=n时,我们需要考虑[s+1,s+n]放到[1,n]的情况。所以当s<n时,我们只需要交换一下s,n即可处...原创 2019-07-06 14:37:35 · 231 阅读 · 0 评论 -
Gym - 101667E:How Many to Be Happy? (dinic算法求最小割)
【题解】题意:给定一个无向连通图,令H(e)为使得边e被连通图的最小生成树包含所需要删掉的最少的边数目。思路:构造一个最小生成树,我们需要先选取最小的边,再选取较大的边,这就是最小生成树的Kruskal算法。那么当边e连接u,v两点时,我们要保证连接u,v的最短边就是e,才能保证最小生成树内包含e,所以我们只要使e的两个端点为源点和汇点,跑出一个最小割,即为H(e),最后求和即可。【代...原创 2019-07-21 10:19:42 · 400 阅读 · 0 评论 -
单调栈详解和入门例题解析
【单调栈】基本过程:让我们来模拟一个递增的单调栈的实现过程,以序列{7, 2, 5, 3, 11, 9}为例。主要步骤如下:若栈为空或者栈顶元素小于当前元素则压入,否则弹出栈内比当前元素大的所有元素。第一步:栈为空,压入7。此时栈内:7 。第二步:7比2大,弹出7,压入2。此时栈内:2 。第三步:2比5小,压入5。此时栈内:2 5 。第四步:5比3大,弹出5,2比3小...原创 2019-07-21 20:51:19 · 869 阅读 · 0 评论 -
字符串的模式匹配算法 —— BF算法、KMP算法和拓展KMP
目录【BF算法】【KMP算法】【拓展KMP】【前言】著名的模式匹配算法有BF算法和KMP算法,本文章主要着重讲KMP算法及其拓展。【BF算法】BF(Brute-Force)算法,是最简单直观的模式匹配算法。看下图,上边的是主串a,下边的是模式串b。分别用i,j做各自串的指针,若a[i]==b[j],i++,j++,继续比较;若不相等,i=i-j+2,j=1,重新开始...原创 2018-06-22 15:22:28 · 3334 阅读 · 0 评论 -
快速幂与矩阵快速幂 原理与应用(板子)
目录【快速幂】【代码实现】【应用】【矩阵快速幂】【矩阵乘法】【代码实现】【应用】【快速幂】快速幂用于高效求(a^b) mod n 的结果。考虑用分治思想,当b为偶数时,我们可以把a^b转化为a^(b/2)*a^(b/2),当b为奇数时,我们可以把a^b转化为a^(b/2)*a^(b/2)*a。以此类推,最终b会变成1,并且只需要logb次运算。【...原创 2018-07-18 10:43:49 · 923 阅读 · 0 评论