ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

省选前复习小记

2021-04-06 12:35:27  阅读:206  来源: 互联网

标签:复习 int res ret 省选前 -- 估价 线性 小记


还有三天复习,而这只蒟蒻还在不知死活的颓废

数据结构小记

\(KD\)-\(Tree\)

  • 基础功能:
  • 领域查询(类似于启发式搜索,时间复杂度实际上没有保证)
  • 维护高维空间数点,(此处以\(2\)维为例),可以进行,矩阵/单点修改,矩阵/单点查询....(反正就是一颗平衡树)
  • 不是\(leafy\ tree\),每个点都代表实际上的一个节点和一个子空间,树高为\(O(\log n)\)
  • 建树的时候根据\(x\),\(y\)的方差哪个大,决定按哪一维排序,并且尽可能地选择中位数作为根,使得子树尽可能均匀来保证树高
  • 如果要求支持动态插入\删除的话,采用替罪羊树的暴力重构法,设一个阈值\(\alpha\)
if(max(siz[lc[u]],siz[rc[u]])) >= alpha * siz[u]
then rebuild(u)
  • \(\alpha\)可以取值\(0.725\)
  • 练习:[国家集训队]JZPFAR(\(\checkmark\))
  • 本来是玄学复杂度的估价函数,然后因为保证数据随机就对了(大雾)
  • 最小值的估价函数
double F(int a,int b){/*a到b区域欧式距离的估价*/
	double res = 0;	
	if(t[a].x < L[b])		res += (L[b] - t[a].x) * (L[b] - t[a].x);
	if(t[a].x > R[b])		res += (R[b] - t[a].x) * (R[b] - t[a].x);
	if(t[a].y < D[b])		res += (D[b] - t[a].y) * (D[b] - t[a].y);
	if(t[a].y > U[b])		res += (U[b] - t[a].y) * (U[b] - t[a].y);
	return res;
}
  • 最大值的估价函数
ll f(int a,int b){
	ll ret = 0;
	ret += max(s(t[a].x - L[b]),s(t[a].x - R[b]));
	ret += max(s(t[a].y - D[b]),s(t[a].y - U[b]));
	return ret;
}
  • 需要注意一点,\(KD\)-\(Tree\)在建树后的点的下标会改变,如果需要用到原来的下标,需要提前标记

\(splay,LCT\)

\(kruskal\)重构树,笛卡尔树,可并堆

线段树分治,整体二分,树套树,\(cdq\)分治

线性基,\(bitset\)

  • 线性基基础操作就不说了
  • 静态区间线性基
  • 维护前缀线性基,然后同时维护一个时间,在插入的时候尽可能使时间最大即可,具体地,在遍历到某一位时,我们保留时间较大的那一个,并把时间小的往下传
  • \(k\)小值
  • 如果要求\(k\)小值,我们可以让线性基的每一位互不影响,具体表现为,如果第\(i\)位线性基有值,那么我们就将其他第\(i\)位线性基上有值的数异或掉这一位,只要从大到小操作即可
void rebuild(){
    for (int i=60;i>=0;i--)
        for (int j=i-1;j>=0;j--)
            if (d[i]&(1LL<<j))
                d[i]^=d[j];
    for (int i=0;i<=60;i++)
        if (d[i])
            p[cnt++]=d[i];
}
long long kthquery(long long k){
    int ret=0;
    if (k>=(1LL<<cnt))
        return -1;
    for (int i=60;i>=0;i--)
        if (k&(1LL<<i))
            ret^=p[i];
    return ret;
}

可持久化数据结构

线段树进阶操作

贪心\(dp\)小记

计算几何学习

网络流/二分图

字符串

数论

组合数学

标签:复习,int,res,ret,省选前,--,估价,线性,小记
来源: https://www.cnblogs.com/y-dove/p/14621248.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有