
算法
Hl_Zy
人类
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线段树背诵用模板
#include #define lson o#define rson otypedef long long LL;const int maxn = 100005; int n, a, b, c, k, q;LL sum[maxn2], add[maxn2], mul[maxn2], p; void up(int o) { sum[o] = (sum[o1]+sum[原创 2017-02-05 15:14:20 · 270 阅读 · 0 评论 -
一些图论算法
1、有向图/无向图最小环/最大环: 此问题多次考,屡T不爽 (1)遍历找环 :不要看到dfs就觉得不好,其实变少的时候dfs比其他找环方式要好得多、、、、;//无边权:///*void 找(int 当前点,int 层数){ 当前点=找过;for(i=1;i{ if(后面点[i]==找过){最小环数/最大原创 2016-11-11 10:21:13 · 2021 阅读 · 1 评论 -
后缀数组背诵用模板
原理很简单,但是看代码学习实在是太慢了、花了4个小时、 bool cmp(int *y,int a,int b,int k) { int aa=a,bb=b,aaaa=a+k,bbbb=b+k; if(aaaa>=len)aaaa=-1; if(bbbb>=len)bbbb=-1; return aa==bb&&aaaa==bbbb; }原创 2017-03-09 09:02:12 · 266 阅读 · 0 评论 -
欧拉函数、中国剩余定理背诵用模板
long long phi(int x) { long long ans=x; for(int i=2;i*i { if(!(x%i)) { ans=ans/i*(i-1); while(!(x%i)原创 2017-02-06 18:55:24 · 400 阅读 · 0 评论 -
点积和叉积和凸包背诵用模板
点积: x1*x2+y1*y2 用处:求向量夹角, cos(a,b)=(a·b)/(|a|*|b|) 叉积: x1*y2-x2*y1原创 2017-02-06 13:39:54 · 402 阅读 · 0 评论 -
旋转卡壳 背诵用模板
double rotating_calipers(point *poi,int n) { int q=1;//第一个的对踵点是第二个(初始化) double ans=0;//答案清零 poi[n]=poi[0];//最后一个点是它本身 (防+1溢出) for(int p=0;p { while(cha(poi[p+1原创 2017-03-13 17:02:57 · 383 阅读 · 0 评论 -
树的重心 背诵用模板
树的重心=最大子树节点数 最小 的点void dfs(int now,int fu){ size[now]=1; int maxx=0; for (int i=xia[now];i!=-1 ; i=hou[i]){ int nd=zhong[p]; if (nd==fu || you[nd]) continue;原创 2017-03-15 21:49:19 · 431 阅读 · 0 评论 -
STL 合集(不断补充)
先要有一个指针:iterator用法:定义指针: vector::iterator a ps:定义一个存放int的容器指针 a queue::iterator b ps:定义一个存放int的队列指针 b输出相应值: coutvect原创 2017-03-04 16:42:45 · 406 阅读 · 0 评论 -
k-d tree背诵用模板
int xycmp;struct dian{int xy[2],xiao[2],da[2];}a[N]; bool cmp(dian a,dian b){ return a.xy[xycmp]}struct kdtree{int xia[N][2];dian s[N],q; void up(int k) {原创 2017-03-26 23:43:21 · 328 阅读 · 0 评论 -
manacher 背诵用模板
void manacher(){ int n=0,k=0; ch[0]='$'; int len=strlen(ch+1);//从一开始读的 for(i=1;i { a[++n]='#',a[++n]=ch[i]; } a[++n]='#';fo原创 2017-03-26 23:50:03 · 286 阅读 · 0 评论 -
一些数学算法
余数基本公式: 求a,b最大公约数:int gcd(int a,int b){if(aint c=a/b;int d=a%b;while(d!=0){a=b;b=d;c=a/b;d=a%b; }return b;}求a,b最小公倍数:int lcm(int a,int b) return原创 2016-11-14 07:56:16 · 1100 阅读 · 0 评论 -
位运算的性质
基本符号:&按位与 |按位或 ^按位异或 ~按位取反 >右移 实际用处:1、一个数&1 就是二进制的最末位,,, 1就是奇,0就是偶 :用于取数 &111 就是取三位;2、一个数| 1 就是把二进制的最末位 强行变1;;; :用于赋值 |100 就是把第原创 2017-01-05 21:49:45 · 2246 阅读 · 0 评论 -
树状数组背诵用模板
一维:int lowbit(x){return (x^(-x));}void jiaru(int i,int zhi){for(;ic[i]+=zhi; }int qiuhe(int end){int sum=0; for(;end>=0;end-=lowbit(end))sum+=c[end];return sum;}原创 2017-02-02 20:45:57 · 249 阅读 · 0 评论 -
kmp
#include#include#includeusing namespace std;int biao[1005],i,j,s1,s2;char a[1000005],b[1005];int main(){scanf("%s",a+1);scanf("%s",b+1);s1=strlen(a+1);s2=strlen(b+1);biao[1]=原创 2017-01-02 19:55:25 · 262 阅读 · 0 评论 -
dinic背诵用模板
#includeusing namespace std;#include#includeconst int inf=10005;struct edge{int zhi,zhong;}bian[200001];queueq;int tot,hou[200001],xia[10001],deep[10001],s,t,i,j,m,n,yuan[10001],x,y,原创 2017-02-06 16:48:46 · 237 阅读 · 0 评论 -
splay
splay是省选、noi常用算法,但它过于繁琐、、、、、实在难打,而且很容易错。下面是框架和注意点,千万别出错:易错点:1、忘update()2、连接直接写pre3、忘splay4、splay判断一条线5、splay循环判断中出现null原创 2017-01-21 19:08:41 · 330 阅读 · 0 评论 -
扩展lucas背诵用模板
lol exlucas(ll n,int xuhao){ lol lin;lin.zhi=1;lin.fang=0;if(n==1||n==0)return lin;ll cifang=n/P[xuhao],sheng=n%P[xuhao],daan=1;if(n>=P[xuhao])for(ll i=1;i{ daan=(daan*i)%P[xuh原创 2017-02-22 18:53:20 · 425 阅读 · 0 评论 -
自创算法——暴力自动机
暴力时利用自动机的最小性,可以在暴力dfs时和匹配答案时使用自动机优化,可以使纯暴力更快。struct baoli{ baoli *xia[51]; baoli() { memset(xia,NULL,sizeof(xia)); } }root;trie树的结构体,xia【51】代表有51个可能的分支bool inse原创 2017-02-09 14:23:40 · 1088 阅读 · 1 评论 -
最小费用最大流背诵用模板
这是我纯自己打的,洛谷上竟然A了不敢相信、丑陋的代码:#include#includeusing namespace std;#includebool you[5001];int dui[500000];int pre[5001],xia[5001],hou[50001struct lal{int zhi,fei,zhong;}bia原创 2017-02-28 17:06:02 · 376 阅读 · 0 评论 -
哈希背诵用模板
int kuai(int a,int b,int p){int daan=1; while(b){if(b%2)daan=(daan*a)%p;a=(a*a)%p;b=b/2;}return daan;}int hash(char *now,int zuo,int you){int zhi=0;for(int i=zuo;i{原创 2017-02-20 18:19:20 · 340 阅读 · 0 评论 -
ac自动机背诵用模板
struct ac { node *fail; node * next[26]; int ci; ac() { fail = NULL; ci= 0; memset(xia, NULL, sizeof (xia)); }} *q[50000原创 2017-02-02 21:30:25 · 368 阅读 · 0 评论