- 博客(11)
- 收藏
- 关注
原创 正方形判定方法
double Distance(int x1, int y1, int x2, int y2) { return sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2)); } //判断三个点是否构成直角,第一个参数点是顶点 bool IsRightAngle(int x1, int y1, int x2, int y2, int x3, int y3) {...
2019-10-25 20:10:25
592
转载 扩展gcd 逆元
扩展gcd:已知ax+by=gcd(a,b),求x,y。 ①由gcd(a,b)gcd(b,a%b)得ax+bybx+(a%b)y,继续化下去,化成ax1+by1的形式即为递归转移式,因为递归过程中a,b不能改变,改的是x,y。 bx+(a%b)y = = bx+ (a-(a/b)b)y = = bx+ay-(a/b)by == ay + b(x-a/by) 即exgcd(ax+by)== exgc...
2019-09-11 21:15:52
341
转载 Manacher算法模板(求解最长回文串)
原文地址:bestsort.cn int cnt[MAXn]; char String[MAXn]; void Manacher(char s[],int len) {//原字符串和串长 int l = 0; String[l++] = '$'; // 0下标存储为其他字符,防止越界 String[l++] = '#'; for (int i = 0; i <...
2019-09-10 19:22:54
126
转载 ac自动机模板(自用)
原文链接:bestsort.cn 有啥不懂得,点击上方链接。 #include <queue> #include <cstdlib> #include <cmath> #include <cstdio> #include <string> #include <cstring> #include <iostream>...
2019-09-10 19:21:24
140
原创 暑假训练第一讲
线段树 树状数组 一.线段树 线段树的学习顺序 单点修改+区间查询 区间修改+区间查询 区间合并 原理 线段树本质上是维护下标为1,2,…,n的n个按顺序排列的数的信息,所以,其实是“点树”,是维护n的点的信息,至于每个点的数据的含义可以有很多, 在对线段操作的线段树中,每个点代表一条线段,在用线段树维护数列信息的时候,每个点代表一个数,但本质上都是每个点代表一个数。以下,在讨论线段树的时...
2019-08-22 09:24:09
99
原创 菜鸟修炼第四周
贪心 贪心选择是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。 会场安排问题 假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数。) 对于给定的k个待安排的活动,计算使用最少会场的时间...
2019-03-15 20:52:33
120
原创 菜鸟修炼第三周(自学:三分法)
三分法 三分法用来找出二次函数的最大值和最小值。 先取 [L,R] 的中点 mid,再取 [mid,R] 的中点 mmid,通过比较 f(mid) 与 f(mmid) 的大小来缩小范围。 当最后 L=R-1 时,再比较下这两个点的值,我们就找到了答案。 1、当 f(mid) > f(mmid) 的时候,我们可以断定 mmid 一定在白点的右边。 2、当 f(mid) < f(mmid...
2018-12-03 21:36:20
182
原创 菜鸟修炼第三周
二分法 数组a[]={1,7,13,14,18,28}//非递减数组。 先分成等大小的两部分,找某个数的下标,不断的吧数组分成两部分,从而找出要找的数的下标。 int l,r; while(l&lt;r) { int mid=(l+r)/2; if(a[mid]&lt;x) l=mid+1; if(a[mid]&gt;x) r=mid-1; if(a[mid]==x) break; ...
2018-11-28 23:07:30
122
原创 菜鸟修炼第二周(自学:尺取法)
尺取 尺取,就是像尺子一样,在一段区域内,选取区间端点,通过控制下标的方法,一段一段的截取。 举个栗子。。。(大佬们都举的 Poj3061 给长度为n的数组和一个整数m,求总和不小于m的连续子集序列的最小长度。 输入 n = 10, m = 15. 5 1 3 5 10 7 4 9 2 8 输出 2 我们可以先用sum存当前子序列的和,从左边第一个数来存,知道这个子序列的和大于等于m为止,再记录下...
2018-11-23 19:52:35
232
1
原创 菜鸟修炼第一周
EOF while(scanf("%d",&amp;a)!=EOF)||while(~scanf("%d",&amp;a)) EOF是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。该宏定义在stdio.h中。 EOF不是特殊字符,而是
2018-11-21 22:52:29
158
原创 菜鸟修炼第二周
同余定理 (ab)%c=(a%cb%c)%c (a+b)%c=(a%c+b%c)%c (a-b)%c=(a%c-b%c)%c 只适用于加减乘,不用于除。 防止变量超出界限。 快速乘 int fast_mul(int a,int b,int c) { int ans=0; while(b) { if(b%2) { ans=(ans%c+a%c)%c; } a=(a%c+a...
2018-11-21 22:32:46
142
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人