
堆
ixRic
ixRic
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[CodeForces 1119F] Niyaz and Small Degrees(堆优化多次 DP) | 错题本
文章目录题目分析代码 题目 [CodeForces 1119F] Niyaz and Small Degrees 分析 先考虑对于一个给定的 xxx DP:dp[u][0/1]dp[u][0 / 1]dp[u][0/1] 表示 uuu 结点的度数为 (x−1)/x(x - 1) / x(x−1)/x,且其子树合法的删边代价。dp[u][0]dp[u][0]dp[u][0] 就意味着 uuu 与其父亲的边保留,dp[u][1]dp[u][1]dp[u][1] 意味着 uuu 与其父亲的边删除。 设 vvv 是原创 2020-08-04 17:07:53 · 334 阅读 · 1 评论 -
【堆】这是要搞事情啊——取出
堆是什么?请点击 取出 取出加删除元素(小根堆)算法(简单粗略加通俗): 1.取出根结点。 2.最后一个节点将根结点覆盖,len--。 3.循环:把根结点和它儿子中小的一个交换,直到没有儿子。 硬模拟: int get() { int now,next,res; res=heap[0]; heap[0]=heap[--len]; now=0; while(now*2原创 2016-10-08 13:50:28 · 410 阅读 · 0 评论 -
【堆】这是要搞事情啊——建立
interesting!堆:简单的说就是一棵完全二叉树的先序,满足任意父结点大于子结点的叫大根堆,反之则是小根堆。 建立 建立(小根堆)算法(简单粗略加通俗): 循环以下步骤 把此数(a[i])“塞”到堆尾,然后不停的和它父结点(a[i/2])比较,小就换。 给一个硬模拟的代码: void put(int k) { int now,next;//now子结点,next原创 2016-10-03 12:17:11 · 517 阅读 · 0 评论 -
【贪心】哈夫曼编码&哈夫曼树
众所周知,计算机以01串来储存和运算。 所以,如果我们想要存一个字符或汉字,例如a,计算机会将它变为一个01串,这个串就是a的编码。如果我们输入了一个词:cat。 如果a的编码是1,c的编码是10,t的编码是11,那么“cat”对应的编码就是“10111”。好了,那么问题来了:10111这个串既是“cat”,也可以理解为“cta”,到底是哪种?如果计算机有庞大的词库原创 2017-10-09 14:03:39 · 1255 阅读 · 0 评论