随笔分类 - 基础算法
摘要:给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。示例 1:输入: "aacecaaa"输出: "aaacecaaa"示例 2:输入: "abcd"输出: "dcbabcd" 算法:KMP
阅读全文
摘要:#include #include #include using namespace std; const int N=100; bool st[N][N]; int res[N][N],n,m; int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0}; int main(void){ cin>>n>>m; for(int i=1,d=0,x=0,y=0;...
阅读全文
摘要:#include #include #include using namespace std; class Node{ public: Node *next[26]; bool isend; Node(){ for(int i=0;inext[word[i]-'a']) p->next...
阅读全文
摘要:对一个数组,如果要同时进行多次求区间和操作,修改元素操作。怎样能使时间复杂度降到最低?线段树为我们解决了这样一个问题。
阅读全文
摘要:#include #include #include using namespace std; vectormaxs,mins; vectorst; int where(int num, int n, int mi, int mx){ return (num-mi)*n/(mx-mi); } int vmax(vector& arr, int n){ int mx=INT_MIN...
阅读全文
摘要:堆,是一种完全二叉树的树状结构,分为小根堆与大顶堆。本文论述以及代码实现都是小根堆,大根堆同理。 如上图所示,我们可以看到一个完全二叉树,而每个结点的编号与其左右儿子的关系为(假设某结点的编号为u):left=2*u,right=2*u+1。 堆有如下的操作: 1.建堆 2.向下调整 3.向上调整
阅读全文
摘要:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。
阅读全文
摘要:冒泡排序做了优化,都是很基础的排序算法就不多做什么说明了。
阅读全文
摘要:输入一个长度为n的整数序列。 接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数n和m。 第二行包含n个整数,表示整数序列。 接下来m行,每行包含三个整数l,r,c,表示一个操作。 输出
阅读全文
摘要:#include using namespace std; const int N=1000010; int a[N],q[N]; void merge_sort(int a[], int l, int r){ if(l>=r)return ; int mid=l+r>>1; merge_sort(a,l,mid),merge_sort(a,mid+1,r); i...
阅读全文
摘要:时间复杂度:O(n); 主要利用快排的partition思想(if(j-l+1>=k)左半边,否则右半边)
阅读全文
摘要:void quick_sort(int a[], int l, int r){ if(l>=r)return ; int i=l-1,j=r+1,x=a[l]; while(ix); if(i<j)swap(a[i],a[j]); } quick_sort(a,l,j),quick_sort(a,j+1,r); }
阅读全文
摘要:又到了丰收的季节,恰逢小易去牛牛的果园里游玩。牛牛常说他对整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛。在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第x个苹果是属于哪一堆的。牛牛觉得这个问题太简单,所以希望你来替他回答。 输入描述: 输出描述: m行,第i行输出第
阅读全文

浙公网安备 33010602011771号