- 博客(35)
- 资源 (1)
- 收藏
- 关注
转载 除以零——特德·姜
除以零 特德·姜 1 任何数字除以零,都不会得出一个有意义的数字来。理由是除法被定义为乘法的逆转:如果你先除以零,然后再乘以零,就会重新得到开始那个数字。然而,乘以零只会得出零,不会得出任何别的数字。没有任何数字乘以零会得出非零的结果。因此,除以零的结果实际上是“无意义的”。 1A 里瓦斯太太进来的时候,雷内正望着窗外。 “才待了一个星期就要出院吗?连真正的待都谈不上。老天知道,我可是非得长期待下去不可。” 雷内强作笑脸说:“我肯定你不会待很久的。”里瓦斯太太爱在病房里指手画脚。大.
2021-11-20 23:39:15
727
原创 C语言实现泛型vector容器
vector 是什么?vector收录在STL(C++标准库)里,是一种特殊的数据结构,名字叫做“动态数组”或者“不定长数组”,有时也被翻译成“容器”。其实就是一种非静态数组,可以进行修改、增长。vector简单用法vector<int>test;//建立一个vectortest.push_back(1);test.push_back(2);//把1和2压入vector这...
2019-06-19 09:08:50
7331
3
原创 树状数组求逆序对
树状数组求逆序对树状数组可以进行Point Update Interval Query 点更新,段求和的操作。同时也可以进行求逆序对。首先要先了解树状数组的概念,树状数组是一种数据结构,具体的讲解我不写了,这个不是今天的重点 具体讲解步入正题在使用树状数组求逆序对中,树状数组的背景含义将有所变化。 以a[]数组表示我们要存储的一个数列,tree[]表示树状数组。初始化我们把tree数组全...
2019-03-15 22:04:28
208
原创 __int128的I/O操作
_int128 类型的数据是大整数类型,貌似只可以在Linux操作系统环境下的gcc编译器才可以使用,但是C99标准未提供__int128的I/O操作的具体操作,需要我们自己去实现。下面是找的IO模板,若使用printf("%lld\n", (__int128)a);这种操作虽然可以输出东西但是你会在编译中得到如下警告warning: format ‘%lld’ expects argument...
2019-03-10 09:31:18
555
原创 简单数论
判断素数 判断素数 判断素数一般来说判断素数我们会使用O(n\sqrt nn)的判断方法,就像下面一样if (n &amp;amp;amp;lt;= 3) { return n &amp;amp;amp;gt; 1; } int Sqrt = (int)sqrt(n); for (int i = 2; i &amp;amp;amp;lt;= Sqrt; i++) { if(n % i == 0) {
2019-02-26 21:10:38
331
原创 二分图匹配相关算法
二分图匈牙利算法 二分图匈牙利算法二分图匈牙利算法这里简单记录下二分图匹配的相关算法,供自己使用。如果各位游客看到觉得浪费时间,便请移步,文章全为个人模板记录匈牙利算法匈牙利算法研究的是二分图的最大匹配,是对给定的二分图求得最大的满足条件的匹配数,匹配对。其算法思想是利用Berge定理和Hall定理将初始匹配通过迭代寻找增广路径得到最大匹配,每次迭代得到的匹配大小加1具体迭代实现有DFS...
2019-02-25 23:09:47
444
原创 快速傅里叶变换模板记录
例题记得应该是 hdu的 1402,傅里叶变换是一个模板。怎么写是大致固定的,但是如何使用就有考究了。具体傅里叶的讲解我存上一片博客,写的相当不错。FFT详解---在此声明地址(https://blog.csdn.net/GGN_2015/article/details/68922404)。非常佩服这样的同学,不仅知识学的多,而且还可以写的文章清晰明了,讲解清楚#include <io...
2019-02-24 09:29:04
212
原创 Hopcroft-Karp 算法
Hopcroft-Karp算法是求二分图最大匹配的匈牙利算法的优化算法。代码虽然比匈牙利算法的代码量大,复杂一些,但时间复杂度优化不少。这里先暂记一下模板,里面有注释。日后在补上说明和讲解,其实我不会证明。学算法都只是学会了怎么用,没学懂过证明。(惭愧)。以下第一张图是洛谷的模板题使用匈牙利的情况。第二张是使用 Hopcroft-Karp的情况。代码不记得是不是模板题的代码,但...
2019-01-31 19:47:03
2793
原创 树的最小支配集,最小点覆盖与最大独立集
最小支配集定义1:对于图G=(V,E)来说,最小支配集指的是从V中取尽量少的点组成一个集合,使得对于V中剩余的点都与取出来的点有边相连。也就是说,设V‘是图G的一个支配集,则对于图中的任意一个顶点u,要么属于集合V’,要么与V‘中的顶点相邻。在V’中出去任何元素后V‘不再是支配集,则支配集是极小支配集。称G的所有支配集中顶点个数最少的支配集为最小支配集,最小支配集中顶点的个数称为支配数。最...
2019-01-26 17:37:05
767
原创 sublime-text的配置
Linux 下 sublime-text编译运行C/C++。Linux 发行版是Ubuntu16.04 LTS 。sublime-text配置C/C++单文件 ,编译运行。单文件编译适合刷题,哈哈。加上sublime-text编辑功能强过很多IDE现在敲敲代码都是用sublime-text或者vim了。Tools->Build-System->new Build-system...
2019-01-22 16:40:17
258
原创 PowerString 之KMP字符串匹配
PowerString这道题所带来的KMP字符串匹配算法的小知识点之前记录了KMP算法的简单模板。一个是KMP_Index 和 KMP_Count前者用于解决模式串在主串中第一次出现的位置。后者算是KMP的拓展,计算模式串在主串中出现了多少次。KMP算法的核心是next 数组的理解和应用。简单的KMP例题直接套用模板,稍微复杂一些的题目就要去思考next 数组和题目之间的联系。关于next 数...
2019-01-22 16:07:11
468
原创 KMP简单模板
例题是 Oulipo题意是问主串中模式串出现啦多少次。属于简单KMP的应用,使用扩展KMP,实现计数即可。特此记录下KMP的模板方便以后使用。/* * Do not go gentle into that good night * ----Dylan Thomas * Author: looooop * Cr...
2019-01-19 17:26:26
189
原创 Tarjan
没有写的太细,就是当记录模板了。因为更具体的细节我也不是太明白,写出来误导了别人就不好了Tarjan算法可以缩点,求强连通分量(有向图范围),求割点,桥,双联通分量(无向图范围)。今天记录一下Tarjan算法求无向图的割点。Tarjan算法,首先要有两个必备数组 dfn[] 和 low[] dfn[i]就是时间戳,即在什么时刻搜索到了点i;low[i]则是i点能回溯到的dfn最小的祖先...
2018-12-17 20:00:03
246
原创 洛谷 p1197 星球大战
传送门:星球大战致敬老鹰乐队,播放上一曲Hotel California,边听边看。题意:反叛军想要摧毁帝国的星球。帝国的星球之间有着以太作为连接,以次帝国的星球直接或者间接相连着。反叛军每摧毁一个星球,其星球就不复存在,其和其他星球的以太隧道也将断开。给出一个k 是反叛军将要摧毁的星球数目,然后依次告诉你这k个即将被摧毁的星球的编号。问每次叛军摧毁一个星球后,有多少个连通块,如果两个星球...
2018-12-12 20:29:06
293
原创 luogu p3379 LCA模板
题意就是要求任意两点的LCA,并指定了书的根节点,从根节点开始dfs和预处理。题目数据不强,估计有意降低难度,保证输入是棵树,所以没有孤立的点。算是记录,练习一下倍增LCA的写法。/* * Do not go gentle into that good night * ----Dylan Thomas * Aut...
2018-12-10 09:59:22
157
原创 luogu p1967 货车运输
题意:有n座城市,其间有m条道路相连,构成无向图,图中可能存在孤点。每条道路有一个限重值,货车走这条道路时所载货物的重量不应超过限重值。有q次询问,每次询问给出两个城市,问从城市1到城市2之间货车的最大载重是多少。思路:从第一个城市 即节点1开始建立一颗最大生成树,然后在树上进行LCA操作,找出最近公共祖先,两个节点之间最小边权的最大值(即为题中的最大载重)。1.先构造最大生成树,用Kru...
2018-12-10 09:01:40
327
原创 RMQ问题 ST_table 实现
void RMQ_init(int l, int r){ int i, j; for (i = l; i <= r; ++i) dp[i][0] = a[i]; for (j = 1; l + (1 << j) - 1 <= r; ++j) { for (i = l; i + (1 << j) ...
2018-12-08 11:50:12
188
原创 斐波那契公约数
F(n)表示第n项的斐波那契数。问F(n)和F(m)的最大公约数暴力做法是直接求出F(n)和F(m)然后用gcd或者__gcd求,但这种做法显然是要费时间的。结论:gcd(F(n),F(m))= F(gcd(n,m))直接使用矩阵快速幂可快速求得F(n)和F(m)的最大公约数struct mat{ll a[3][3],r,c;}; mat mul(mat x,mat y){ ...
2018-12-08 11:28:34
213
转载 有重复全排列
#include<iostream>#include<algorithm>using namespace std;void swap(char& a,char& b) //两个元素进行交换{ char c = a; a = b; b = c;}bool isSwap(char b[]...
2018-12-07 21:51:31
697
原创 网上找的头文件
ACM头文件#include <iostream> #include <stdio.h> #include <string.h> #include <stack> #include <queue> #include <map> #include <set> #include &am
2018-12-07 17:28:56
129
原创 洛谷 P3119草鉴定
题目大意有n个草场,有向图连接,从第一个草场出发,最终回到第一个草场。每经过一个草场就可以吃一次草,问假如可以偷偷逆向走一条道路,最多可以吃到多少次草刚看到这道题,第一想法就是Tarjan缩点,求强连通分量。但是题目有个额外要求,可以有一次的机会逆向走一条道路。刚开始有点不会处理这个额外的要求。有模糊的想法但不对,看到别人的题解后感觉可以行的通。先进行Tarjan缩点,构造一个DAG图,然后分...
2018-12-04 19:48:31
262
原创 codevs1332 Tarjan的写法
上篇文章,记录了用Kosaraju算法写这道模板题,为了学习强连通分量,又去学习下Tarjan算法。先看书,嗯,感觉看文字看完了,讲的啥玩意,为啥呀?不懂。于是还是先百度一下吧。啊,这篇文章不错,讲了一些,还给了模板,虽然背后的原理还是没懂,但大致算法步骤知道了。自己加了很多注释。/* *looooop * Do not go gentle into that good night...
2018-11-10 16:16:45
188
原创 codevs-1332 上白泽慧音
题意不用多说,有向图,求强联通分量。找到强连通分量中定点最多的分量,并输出该最大分量中包含的顶点。是一道求强连通分量的模板题,用的是Kosaraju算法。Kosaraju算法步骤:1.先根据题意建原图与原图的反图2.根据原图进行第一次DFS,(DFS1)得到一个ord[]数组,存放DFS1的遍历顺序3.再根据ord[]数组,按照第一次的遍历顺序去DFS(DFS2)反图,染色。染...
2018-11-10 11:31:50
230
原创 gcd的一点注意
lcm = a * b / gcd(注意,这样写法有可能会错,因为a * b可能因为太大 超出int 或者 超出 longlong)所以推荐写成 : lcm = a / gcd * b unsigned long long gcd(ull m,ull n){ while(m>0) { ull c = n % m; n = ...
2018-07-22 19:26:49
351
转载 KMP
/*pku3461(Oulipo), hdu1711(Number Sequence)这个模板 字符串是从0开始的Next数组是从1开始的 求T串是否为S串的子串?主串为 abdabdabc S串 模式串 abdabc T串S[0]=T[0] S[1]=T[1],S[2]=T[2]...S[4]=T[4]S[5]!=T[5] 一般情况下重新匹配S[1]和T[...
2018-05-04 21:21:40
181
原创 康托展开式
应用:{1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排列一共6个。123 132 213 231 312 321 。代表的数字 1 2 3 4 5 6 也就是把10进制数与一个排列对应起来。他们间的对应关系可由康托展开来找到。如我想知道321是{1,2,3}中第几个小的数可以这样考虑 :第一位是3,当第一位的数小于3时,那排列数小于321 如 123、...
2018-03-19 08:48:29
426
转载 数位DP模板
typedef long long ll; int a[20]; ll dp[20][state];//不同题目状态不同 ll dfs(int pos,/*state变量*/,bool lead/*前导零*/,bool limit/*数位上界变量*/)//不是每个题都要判断前导零 { //递归边界,既然是按位枚举,最低位是0,那么pos==-1说明这个数我枚举完了 ...
2018-03-08 16:48:42
247
原创 博弈-套路板子
巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个。最后取光者得胜。当n 和 m 满足:n %(m+1)== 0.先手必败;威佐夫博弈: 首先有两堆石子,博弈双方每次可以取一堆石子中的任意个,不能不取,或者取两堆石子中的相同个。先取完者赢。当局势(a,b)是(int)((b-a)*(sqrt(5)+ 1)/2 ) == a;时即 a == (int)* ((...
2018-02-08 10:32:45
240
转载 高精度减法模板
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn = 1000;char s1[maxn], s2[maxn], s3[maxn];int a[maxn], b[maxn];int main(){ int l...
2018-02-08 10:02:54
194
原创 高精度加法
string add(string a,string b){ string s; int len1,len2; len1=a.size()-1; len2=b.size()-1; int flag=0; while(len1>-1&&len2>-1) { int sum=flag+(a[len1-...
2018-02-08 09:49:17
171
原创 最长上升子序列
#include#include#include#include#includeusing namespace std;typedef long long LL ;const int maxn = 1e6 + 9;int t;int p;int a[maxn];int dp[maxn];int main(){ scanf("%d",&t); while(t
2018-01-24 10:53:12
160
原创 快速幂
LL qpow(LL a, LL b, LL mod) //a^b%mod{ LL ans=1; while(b) { if(b&1) ans=(ans*a)%mod; a=(a*a)%mod; b>>=1; } return ans;} ...
2018-01-24 10:52:57
156
原创 扩展GCD
void exgcd(LL a,LL b,LL &c,LL &x,LL &y){ if(!b) { c=a; x=1; y=0; } else { exgcd(b,a%b,c,y,x); y-=x*(a/b); }}
2018-01-24 10:52:43
168
原创 扩展GCD-2
typedef long long ll;//扩展gcd求解x,y同时还把gcd(a,b)求出来了,exgcd的返回值就是gcd(a,b)ll exgcd(ll a, ll b, ll &x, ll &y) { if(b == 0) { x = 1; y = 0; return a; }
2018-01-24 10:52:24
267
原创 最短路的Floyd-Dijkstra-Spfa板子
int maps[105][105];int n,m;//初始化void init(){ for(int i=1;i<=n;++i) { for(int j=1;j<=n;++j) { if(i==j) maps[i][j]=0; else
2018-01-22 13:00:47
387
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人