知识点
文章平均质量分 64
Nefeertari
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
结构体内嵌比较函数bool operator < (const node &x) const {}
一般来说比较函数写在结构体内会比写在外部快struct node{ int l,r; bool operator <(const node &a)const{ return r < a.r; }}a[maxn];这种是最经典的。r相当于当前正在比较的值,这个函数就是r从小到大排。存储用优先队列时会相反,同是上面这个函数会按r从大到小排。来看下多个变量排序:struct node{ int l,r; bool原创 2021-01-23 14:15:04 · 14073 阅读 · 3 评论 -
构造矩阵的方法
转载https://www.cnblogs.com/frog112111/archive/2013/05/19/3087648.html矩阵构造方法Fibonacci数列:F(0)=1 , F(1)=1 , F(n)=F(n-1)+F(n-2)我们以前快速求Fibonacci数列第n项的方法是 构造常系数矩阵(一) Fibonacci数列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的第n项快速求法(不考虑高精度)解法:考虑1×2的矩阵【f[n-2],f[n-1]】。根据转载 2021-01-18 14:28:27 · 1099 阅读 · 0 评论 -
随笔5 威佐夫博弈和贝亚蒂定理 结论记录
博弈论之威佐夫博弈威佐夫博弈(Wythoff game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。结论:如果两个人都采用正确操作,那么面对非奇异局势,先拿者必胜;反之,则后拿者取胜。那么任给一个局势(a,b),怎样判断它是不是奇异局势呢?我们有如下公式:a(k) = [k*(1+√5)/2],b(k) = a(k) + k (其中k=0,1,2…n表示下标 ,[ ]括号框住部分表示取整)对于给出的局势(a,b)原创 2020-08-19 10:13:37 · 361 阅读 · 0 评论 -
substr函数
substr复制子字符串;要求从指定位置开始,并具有指定的长度a=s.substr(i,len);原创 2020-08-07 14:06:44 · 235 阅读 · 0 评论 -
stoi函数
头文件: #include < string >stoi(字符串,起始位置,n进制),将 n 进制的字符串转化为十进制原创 2020-08-07 14:02:04 · 1165 阅读 · 0 评论 -
网络流学习记录
发现了一篇很好的网络流入门的博客,开始学习网络流:https://www.luogu.com.cn/blog/ONE-PIECE/wang-lao-liu-di-zong-jie自己打了一遍模板,其中s为起点,t为终点#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e5+10;const int inf=0x3f3f3f3f;const int mo=1e9+7;inline原创 2020-08-04 10:34:07 · 153 阅读 · 0 评论 -
kmp next函数 kmp的周期问题,深入了解kmp中next的原理
https://www.cnblogs.com/wuyiqi/archive/2012/01/06/2314078.html----------------------------------------------k m x j i第一段黄色是k到j,第二段是m到i(复制过来不是很好对位置,还是去看原文吧)由上,next【i】=j,两段红色的字符串相等(两个字符串完全相等),s[k…j]==s[m…i]设s[x…j]=s[j…i] (xj=ji)转载 2020-08-03 13:51:10 · 195 阅读 · 0 评论 -
快读代码
inline int read(){//非常重要的快速读入代码 int x=0,f=1; char c=getchar(); while(c>‘9’||c<‘0’){//判断符号 if(c==’-’) f=-1; c=getchar(); } while(c>=‘0’&&c<=‘9’){//转换数 x=x10+c-‘0’; c=getchar(); } return xf;}...转载 2020-07-29 10:26:23 · 675 阅读 · 0 评论 -
学习笔记(倍增)Balanced Lineup G题解
倍增(RMQ):用于计算区间极值使一步一步增加转变为2^k步增加。举个例子:一只兔子从1跳到10,一步一步跳要10步,倍增的思想是:先跳8步,没到,跳到9.跳4步,过头了,不跳.跳2步,过头了,不跳.跳1步,到了,跳到10.时间复杂度是从O(n)到O(log2n);洛谷例题Balanced Lineup G这是一道求区间内最大值和最小值的题。典型倍增题。我们用f[i][j]记录以i为起点,长度为2^j的区间内的最小值,f[i][0]就是当前位置的点。我们用式子f[i][j]=max(f[原创 2020-07-28 11:00:16 · 525 阅读 · 0 评论 -
学习笔记(kmp)
开始学习与字符串有关的算法:kmp:用于比较字符串a是否是b子串的算法。设a的长度为n,b的长度为m暴力求解时间是n*m,而kmp是n+m;可以大幅度减少时间复杂度求出字符串子串中前缀和后缀相等的部分的个数代码:#include<bits/stdc++.h>using namespace std;int next[10005];void cal_next(string str,int len){ next[0]=-1; int k=-1; for(int i=1;i&l转载 2020-07-27 16:20:45 · 165 阅读 · 0 评论 -
学习笔记(Lyndon 分解)
Lyndon 串:对于字符串 s ,如果 s 的字典序严格小于 s 的所有后缀的字典序,我们称 是简单串,或者 Lyndon 串 。举一些例子 a , ab , aab , abb , ababb , abcd 都是 Lyndon 串。如果 s 是 Lyndon 串,当且仅当转载 2020-07-25 10:43:34 · 536 阅读 · 0 评论 -
不全相异元素全排列
定理:设S是一个多重集合,其中有k种不同的元素,各种元素的个数分别是:n1,n2,…nk。设S中所有元素的个数是n=n1+n2+…+nk。则S的全排列数(n-排列)为:n!/(n1!*n2!n3!…nk!)。例题链接:link原创 2020-07-20 10:10:13 · 1790 阅读 · 0 评论
分享