笔记
文章平均质量分 85
zhaoweiming2019
东莞垃圾OIer
展开
-
莞中 2022暑假训练题04:树型DP
2022莞中暑假集训树型DP专题笔记原创 2022-08-11 14:54:49 · 115 阅读 · 1 评论 -
FHQ-Treap 简介
FHQ-treap 即非旋Treap,是一种短小精悍,功能丰富的平衡树。据说它的效率介于 Treap 和 Splay 之间(可能是我的FHQ常数比较小,跑得比我的Treap还快)。它可以实现 Splay 可以实现的所有功能,包括平衡树的基本操作和区间翻转操作。它的实现难度比 Splay 要简单很多,没有 Splay 那么多转来转去的操作,不会令人头晕,而且FHQ代码的对称性良好,易于调试。有两种 FHQ-Treap,一种是按值为关键字的,一种是按下标为关键字的(适用于区间翻转等操作时)。...原创 2022-08-11 14:52:51 · 754 阅读 · 0 评论 -
莞中 2022暑假训练题02:平衡树
2022莞中暑假集训平衡树专题题解原创 2022-08-11 14:51:44 · 280 阅读 · 0 评论 -
莞中 2022暑假训练题01 最小费用最大流
2022莞中暑假集训最小费用最大流笔记原创 2022-08-11 14:50:19 · 173 阅读 · 0 评论 -
归并排序【模板】
归并排序时间复杂度:O(log2n)流程1.分界点为中点:mid=(left + right)/22.分别递归排序两边3.归并——合二为一 O(n)这里我们就得到了两个排好序(从小到大),然后:再开出一个数组res,用i,j两个指针分别指向第一个第二个的开头比较i1与j1,不妨设i1小于j1,这时将i1放进res的第一个位置将i指针右移一位,指向i2比较i2与j1,不妨设j1小于i2,这时就将j1>放人res的第二位如此类推…如果当某一段的数放完了,另一段还有原创 2020-08-08 23:07:45 · 110 阅读 · 0 评论 -
一维前缀和与二维前缀和
前缀和什么是前缀和?前缀和是一个数组的某项下标之前(包括此项元素)的所有数组元素的和。作用:快速求出某一段区间的总和such as:求出a[3]+a[4]+…+a[15]=sum[15]-sum[2] //sum为前缀和优势:可以在O(1)的复杂度求出某一部分的总和设b[]为前缀和数组,a[]为原数组,根据这句话可以得到前缀和的定义式和递推式:【一维前缀和】根据上面的定义,我们可以很容易得到 sum[i] = sum[i-1] + a[i] 这样就可以得到前i个数的和原创 2020-08-08 23:01:19 · 84 阅读 · 0 评论 -
快速排序[模板]
快速排序确定分界点x:方法:q[l] //左端点q[r] //右端点q[(l+r)/2] //中点q[随便] //任意2.调整区间:把<=x的和>=x的分开(x随意,放两边都可以)暴力实现:int a[],int b[]; //a装<=x,b装>=xmemset(a,0x3f3f3f3f,sizeof(a));memset(b,0x3f3f3f3f,sizeof(b));for(int i=l;i<=r;原创 2020-08-08 22:53:36 · 100 阅读 · 0 评论 -
快速幂详解【模板】
快速幂洛谷链接AcWing链接快速幂的思想当我们求37时朴素算法就是Pow,或者连乘7次,这个要进行7次运算但我们可以用快速幂的思想31=332=933=81然后再将三次的值相加,就可以求出37这个思想还可以用于这道题 64位整数乘法这个思想非常高效,可以将原来O(n)的算法改成O(log2n)快速幂的模板int qmi(int m, int k, int p){ int res = 1 % p, t = m; while (k) {原创 2020-08-04 20:21:22 · 125 阅读 · 0 评论 -
判断回文数[模板]
要求: 判断一个数是否为回文数bool isPalindrome(int x) { if(x<0) return 0; int tmp=x;//x最后会变 long long res=0; while(x)//把每一位扣出来 { res=res*10 + x%10; x/=10; } return res==tmp; }原创 2020-07-22 23:10:39 · 78 阅读 · 0 评论 -
增减序列(IncDec Sequence)
增减序列题意:给定一个长度为 n 的数列 a1,a2,…,an,,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。分析:每次任意选两个数,一个加上1,另外一个减去1把b[2]到b[n]都变成0情况1: 2<=i,j<=n,选b[i]和b[...原创 2020-05-07 22:20:23 · 470 阅读 · 0 评论 -
完全背包笔记【优化】
优化后的完全背包PS:DP优化的根本就是等价变形AcWing链接优化前#include <bits/stdc++.h>using namespace std;int n,v;int c[1005],w[1005];int f[1005][1005]; int main(){ scanf("%d%d",&n,&v); for(int i=1;...原创 2020-04-27 22:40:55 · 133 阅读 · 0 评论 -
完全背包笔记
完全背包1.状态表示a.集合:所有从第i个物品开始选,总体积不超过j的物品的集合b.属性:max2.状态计算:a.f[i]的子集划分只要总体积不超过j就可以一直选如上图,在1到i中选,且总体积小于等于j,但第i个物品只能选0个,所以不选第i个物品故最大值为f[i-1,j]ps:做所有DP问题的时候,核心就是这个集合的定义三重简化成2重的推导过程总体推导过程:核...原创 2020-04-27 22:03:52 · 78 阅读 · 0 评论