知识点
文章平均质量分 91
Faithfully__xly
这个作者很懒,什么都没留下…
展开
-
浅谈Huffman树
学习ing二叉哈夫曼树一、定义给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。(摘自百度百科)带权路径:到达该叶子节点经过的边数×叶子节点当前代表的数二、实现贪心每次从所给序列中找到两个权值最小的点合并,将合并后的新权值放回...原创 2019-10-28 12:13:08 · 1473 阅读 · 0 评论 -
CSP-S赛前专题总结
图论最短路生成树强连通差分约束拓扑排序欧拉图最短路1.建模:将原问题转化通过某种性质转化为图论问题注意: 建图的时候是否可以优化(是否加了一些对答案无影响的边) 和某些特定数量的点有关,考虑枚举。(枚举时也可以优化,比如只枚举前几个,便可以推出最后一个,诸如此类) 一些需要用到的值,考虑预处理。枚举+拼凑答案可以建模的情况:最值(e.g.墨墨的等式)...原创 2019-10-20 23:30:12 · 144 阅读 · 0 评论 -
树上信息维护【讲解+代码】
dfs序一棵树被 dfs 时所经过的节点的顺序。一般的作用是维护子树信息,如果记录 dfn[i] 表示 i 号点的 dfs 序,sze[i] 表示 i 号点的子树大小那么 x 是 y 的祖先等价于: dfn[y] ∈ [ dfn[x] , dfn[x] + sze[x] − 1] 树上操作:单点加 单点求值 子树加 子树求和 链加 链求和链加:将节点x到y最...原创 2018-10-06 20:51:18 · 327 阅读 · 0 评论 -
第22届全国青少年信息学奥林匹克联赛初赛 提高组
可能是一篇退役记???原创 2018-10-13 21:57:27 · 812 阅读 · 0 评论 -
分治算法学习笔记
2019/8/7xehoth授课Part I 点分治复习课√由于以前学过,所以听起来蛮轻松。例题1 tree例题2 聪聪可可例题3 Raceget一个超棒的求树的重心的方法利用性质:树的重心的任意一颗子树大小都不超过节点数的一半自己以前的写法被华丽丽地卡TPart II 线段树合并(好像和分治没啥关系,不管那么多了)复习课*2√由于以前也听过……今天重新打了一遍,...原创 2019-08-09 09:35:00 · 169 阅读 · 0 评论 -
补 - 扩展欧几里得算法
之所以不在原文上修改,是因为以前没有用Markdown,现在改起来令人窒息。索性重新写。扩展欧几里得算法最基础的应用:求ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b) 的一组特解(具体证明见上一篇博客)稍作变化:通过适当变形,我们就可以求出ax+by=cax+by=cax+by=c 的一组特解1.如果gcd(a,b)∤cgcd(a,b)\nm...原创 2019-08-13 18:22:12 · 247 阅读 · 0 评论 -
快速计算n!中素因子的个数
Learning我们来一个样例说明一下:1 2 3 4 5 6 7 8 我们求得在8!中2的个数 1 1 1 首先我们先计算出2的倍数的个数:8/2=4 1 1 其次我们计算出4的倍数的个数: 8/4=2 1 最后我们解出第三层的2的个数: 8/8=1我们把4+2+1=7,所以一共7个2出现了。即:cnt(x)=[n/(x1)]+[n/(x2)]+[n...原创 2019-08-22 14:32:09 · 685 阅读 · 0 评论 -
【转载】c++中setw()与setfill()的用法详情
Learning在C++中,setw(int n)用来控制输出间隔。例如:cout<<‘s’<<setw(8)<<‘a’<<endl;则在屏幕显示s a//s与a之间有7个空格,加上a就8个位置setw()只对其后面紧跟的输出产生作用,如上例中,表示’a’共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,则按实...转载 2019-08-23 15:30:05 · 475 阅读 · 0 评论