- 博客(178)
- 资源 (6)
- 收藏
- 关注
原创 WPS的C++开发面试经历
一面2021.05.06 早上10:00 面试总时长:1小时06分0、自我介绍 && 面试官介绍岗位。1、说一说对面向对象的理解。2、子类构造函数跟析构函数的顺序。3、说一下虚函数的原理(虚函数指针、虚函数表)。4、知道纯虚函数吗?什么情况下要用纯虚函数?5、知道虚继承吗?为什么要用虚继承?有什么好处?6、说一说对静态的理解。7、引用和指针的区别。什么时候要用引用?8、说说C++11新特性。(着重问了override、auto)。9、说一说C+..
2021-05-10 16:34:48
474
原创 深入探讨KMP
KMP网上已经有很多资料了,详细的模拟过程,这里就不展开讲了。这篇文章主要是探讨如何构造next[]数组、复杂度的证明、KMP的缺陷以及该如何改进算法使得性能更优。一、KMP匹配代码int match (char* P, char* T) { int* next = buildNext(P); int n = (int) strlen(T), i = 0; int m = (int) strlen(P), j = 0; while ( j < m &
2020-07-22 09:36:08
1470
1
原创 HDU - 1394【Minimum Inversion Number】 线段树求逆序数对
这是一个很老很经典的题了。。题意:已知一个长度为n的数列,该数列由数字0~n-1无重复组成,n现有一种操作,将数列的第一个数移到最后一个去,最终最得到n个数列。求这n个数列中,逆序数对的最小对数。解题思路:先依次将数列中的数字插入到线段数中,ans[i]表示0~i中比a[i]大的数的个数,求出第一个数列的逆序数对的个数。每次将a[i]移到最后一位,都会使该数列的逆序数对
2017-11-16 22:05:00
357
原创 AC自动机
知识点详解hdu 2222#include #include #include #include #include using namespace std;const int N = 1e6+10;struct node{ int count; //是否为该单词的最后一个节点 node *next[26]; //T
2017-01-22 16:24:00
481
原创 欧拉函数
在数论,对正整数n,欧拉函数是小于等于n的数中与n互质的数的数目。ll phi(ll x) { ll ans = x; for(ll i = 2; i*i <= x; i++) { if(x%i == 0) { ans = ans/i*(i-1); while(x%i==0) x/=i; } } if(x > 1) ans = ans/x*(x-1); r
2016-11-25 15:41:46
530
原创 manacher算法模板
内存较大的:#include #include #include #include #include using namespace std; #define inf 310010 char s[inf], str[inf]; int p[inf], len; void gets() { int li = strlen(str);
2016-11-23 23:42:50
540
原创 codeforces 13D. Triangles(计算几何 dp)
D. Trianglestime limit per test2 secondsmemory limit per test64 megabytesinputstandard inputoutputstandard outputLittle Petya likes to draw. He drew N red and M
2016-10-31 20:25:02
849
原创 几何知识点
1、点积作用:可以用来判断两个向量之间的夹角,如【codeforces 13B】向量a = (x1, y1), 向量b = (x2, y2)点积ans = x1*x2 - y1*y2点积如果为负,则向量a,b形成的角大于90度;如果为零,那么向量a、b垂直;如果为正,那么向量a、b形成的角为锐角。
2016-10-29 20:50:42
690
原创 LIS && LCS && LCIS
1、LIS:一个a序列,求它的最大上升子序列的最大长度2、LCS:两个序列a和b,求他们最大公共子序列的长度 3、LCIS:两个序列a、b,求他们最大公共上升子序列长度【求长度并输出序列:CF10D. LCIS】#include using namespace std;int a[1010], b[1010];int f[1010], fa[1010];
2016-10-27 23:13:28
427
原创 hash
#include using namespace std;#define ll __int64#define ull unsigned long long //自动取余 const int inf = 5e6+10; const ull bas = 311; ull lhas[inf], rhas[inf], base[inf]; char s[inf]; int m
2016-10-24 09:59:35
403
原创 扩展欧几里得
扩展欧几里得定理:对于两个不全为0的整数a、b,必存在一组解x,y,使得ax+by==gcd(a,b)#include using namespace std;#define ll __int64ll gcd(ll a, ll b) { ll res = a; while(b) { res = a%b; a = b, b = res; } return a;}
2016-10-23 20:58:22
393
原创 RMQ 区间最值的问题
int RMQ(int L, int R) { int k = 0; while((1<<(k+1)) <= R-L+1) k++; //如果2^k+1 <= R-L+1,那么k还可以加1 return min(d[L][k], d[R-(1<<k)+1][k]); }
2016-10-22 23:14:32
461
原创 并查集
【一次做cf,用递归版的超时了,非递归版的就ac了】递归版#include using namespace std;const int N=1e3;int fa[N];int find(int x){ return fa[x]==x?x:find(fa[x]); } void Union(int x, int y){ int fx = fin
2016-10-16 21:51:51
435
原创 2016.10.12算法精讲第十一章
今天遇到几个比较好玩的题目~~折纸问题【题目】请把一段纸条竖着放在桌子上,然后从纸条的下边向上方对折1次,压出折痕后展开。此时折痕是凹下去的,即折痕突起的方向指向纸条的背面。如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有三条折痕,从上到下依次是下折痕、下折痕和上折痕。给定一个输入参数N,代表纸条没次都从下边向上方连续对折N次,请从上到下打印所有折痕的方向。例如:
2016-10-13 19:47:21
619
原创 codeforces 1A
【1C. Ancient Berland Circus】 【立体几何】三角形面积的几种求法:1、s=(1/2)*底*高 2、海伦公式:S = √[p(p-a)(p-b)(p-c) ]其中p=1/2(a+b+c) =(1/4)√[(a+b+c)(a+b-c)(a+c-b)(b+c-a)]3、s=1/2的
2016-10-09 22:41:49
635
原创 网络流
一、最大流之增广路算法这个博客讲解放入挺详细的:点击打开链接前向弧:离开点u的有向弧后向弧:进入点u的有向弧【恩~有一点我觉得有必要记录一下】建立这些后向弧的必要性:如果不建立后向边就容易出现上面这种情况,结果会偏小,路径是:1->2->5、1->2->3->5、1->3->5。建立后向边之后,路径会增加一条:1->2->5、1->2->3->5、1->3-
2016-10-06 22:10:58
591
原创 codeforces 723E. One-Way Reform(欧拉回路||网络流)
E. One-Way Reformtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere are n cities and m two-way roads
2016-10-06 08:15:04
937
原创 codeforces 722C. Destroying Array(并查集||set)
C. Destroying Arraytime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array consisting of n n
2016-10-02 22:31:11
782
原创 codeforces 721D. Maxim and Array(贪心)
D. Maxim and Arraytime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputRecently Maxim has found an array of n i
2016-10-01 21:35:32
975
原创 codeforces 721C. Journey(dp+拓扑)
C. Journeytime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputRecently Irina arrived to one of the most famous
2016-10-01 16:13:01
563
转载 母函数(Generating function)
本文转自TankyWoo的博客:http://www.wutianqi.com/?p=596在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以
2016-09-29 20:33:12
433
原创 codeforces 719C. Efim and Strange Grade
C. Efim and Strange Gradetime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputEfim just received his grade for t
2016-09-24 10:34:00
677
原创 codeforces 665F. Four Divisors(求n以内因子数是4的数的个数)
F. Four Divisorstime limit per test10 secondsmemory limit per test768 megabytesinputstandard inputoutputstandard outputIf an integer a is divisible by another i
2016-09-23 19:49:57
2293
原创 hdu 5901(模板,10^11以内的素数个数)
Count primes Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
2016-09-23 19:11:39
2094
原创 codeforces 716D. Complete The Graph(最短路)
D. Complete The Graphtime limit per test4 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputZS the Coder has drawn an undirected
2016-09-21 20:21:05
1356
原创 玲珑oj 1032A-B(组合数学)
1032 - A-BTime Limit:1s Memory Limit:128MByteSubmissions:528Solved:105DESCRIPTION你有nn个球,需要把他们放到mm个盒子里。要求拥有最多球的盒子唯一,问方案数。INPUT一行两个数n,mn,m.(n,m≤500n,m≤500)OUTPUT一行一个数,表
2016-09-15 11:10:12
752
原创 codeforces 712D. Memory and Scores(dp)
D. Memory and Scorestime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputMemory and his friend Lexa are competi
2016-09-14 16:21:00
771
原创 hdu 5876 Sparse Graph(补图最短路)
Sparse GraphTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Problem DescriptionIn graph theory, the complement of a graph G is a graph H on the s
2016-09-13 22:20:01
502
原创 hdu 5873 Football Games
Football GamesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1224 Accepted Submission(s): 473Problem DescriptionA mysterious
2016-09-13 20:20:34
594
原创 【组队补题题】The Seventh Hunan Collegiate Programming Contest Semilive
题目链接:点击打开链接Problem A UVA 12289 One-Two-ThreeProblem B UVA 12290 Counting GameProblem C UVA 12291 Polyomino ComposerProblem D UVA 12292 Polyomino DecomposerProblem E UVA 12293 Box GameProbl
2016-03-27 22:39:37
546
原创 双塔DP
专题链接:点击打开链接A.【POJ 2609】Ferry LoadingB.【ZOJ 3331】Process the Tasks有两台机器,n(0个任务,每个任务用1号机器需要花费时间T1,用2号机器需要花费T2(0,只有第i个任务完成时才能做第i+1个任务,问怎样安排才能使最终所用的时间最短?解题思路:开二维数组dp[i][j],表示处理完第i个任务后,时间差是j时的塔
2016-03-26 22:14:16
1093
原创 ZOJ 3327Friend Number(模拟题)
题目链接:【ZOJ 3327】定义P(x)是x中所有数字的乘积,如:P(123)=6,输入x(0,求使得P(y)=P(x)成立的最小的y解题思路:分类讨论1、x中有0:如果0在末尾,那就从倒数第二位开始+1,否则就是从最后一位开始+1(注意进位)2、x中没有0:从最后一位开始,往前计算,到第i位时,素数2、3、5、7的个数,并判断能不能这些素数得到一个num,使得num>x[i
2016-03-26 19:30:51
394
原创 CSU 1681 Adjoin(树形dp && 树的直径)
题目链接:【CSU 1681】一共有n个点,m条线,每条线将两个点连接在一起,导致这n个点中有些点是连通的有些点是不连通的,加入最少的线,使得n个点两两连通,求每两个点之间最大距离的最小值树的直径:树上两个点之间的最大距离每一个连通块就是一棵树,先求出每一棵树的直径,用数组d[]记录,然后从小到大排序,找到最大直径,合并树(直径小的合并到直径大的),更新最大直径#inclu
2016-03-21 10:24:52
610
原创 递归算法——约瑟夫问题
题目链接:【HDU 2211】杀人游戏题目链接:【HDU 2925】 Musical Chairs题目链接:【HDU 5643】 King's Game (约瑟夫问题的变形)
2016-03-13 22:02:20
1918
原创 蓝桥杯 历届试题 兰顿蚂蚁 (模拟)
题目链接:【历届试题 兰顿蚂蚁】问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。 平面上的正方形格子被填上黑色或白色。在其中一格正方形内有一只“蚂蚁”。 蚂蚁的头部朝向为:上下左右其中一方。 蚂蚁的移动规则十分简单: 若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格; 若蚂蚁在白格,左转90度
2016-03-12 11:58:09
508
原创 HDU 2489 Minimal Ratio Tree(dfs+最小生成树)
题目链接:【HDU 2489】从n(2题目中节点值以及两个点之间的线的权值范围是[1,100] (除了两个相同的点之间的线的权值)#include #include #include #include #include using namespace std;int node[20], p[20][20], vis[20];int s[20], d[20], g[
2016-03-11 23:28:33
457
原创 带权值的并查集
题目链接:【POJ 1182】好题!父节点跟子节点之间一共有三种关系,父节点吃子节点,子节点吃父节点,父节点跟子节点是同类,所以用三进制表示fa[B]=A,rank[B]=0表示与父节点是同类,rank[B]=1表示被父节点吃,rank[B]=2表示吃父节点一共分两大类进行操作:1、x跟y的父节点相同 2、x跟y的父节点不同下面是我做题时画的图,方便理解,父节点跟子节点之间的
2016-03-08 21:04:30
2650
原创 HDU 1710 Binary Tree Traversals(已知先序中序求后序)
题目链接:【HDU 1710】输入先序遍历跟中序遍历,输出后序遍历#include #include #include #include #include using namespace std;const int N=1010;struct node{ int v; node *left , *right; node():left(NULL),right(NULL)
2016-03-05 15:14:14
691
原创 CodeForces 631C Report(找规律)
题目链接:【CodeForces 631C】长度是n的数列,m个次访问,两种操作:1、t=1,将数列1~r从小到大排序;2、t=2,将数列1~r从大到小排列。输出最后得到的数列如果i>j&&ri>rj,那么i之前的操作都是无效的,所以我们可以根据这个删选t、r,因此第一个r(记为R)肯定是最大的数组a存的是原数列数组a[j](R将数组b从小到大排序仔细找找规律,想象一下我们
2016-03-05 13:51:46
1786
原创 codeforces 628E Zbazi in Zeydabad(线段树||树状数组优化)
题目链接:【codeforces 628E】Z-pattern:n*m的方形里面,第一行、最后一行、 反对角线都是Z输入n*m由‘z’和‘.’组成的字符矩阵,问有多少个Z-pattern(1
2016-03-03 23:15:55
689
sourcetree中文版 Windows
2018-02-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人