堆
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 · 265 阅读 · 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 · 369 阅读 · 0 评论 -
【堆】这是要搞事情啊——建立
interesting!堆:简单的说就是一棵完全二叉树的先序,满足任意父结点大于子结点的叫大根堆,反之则是小根堆。建立建立(小根堆)算法(简单粗略加通俗):循环以下步骤把此数(a[i])“塞”到堆尾,然后不停的和它父结点(a[i/2])比较,小就换。给一个硬模拟的代码:void put(int k){ int now,next;//now子结点,next原创 2016-10-03 12:17:11 · 476 阅读 · 0 评论 -
【贪心】哈夫曼编码&哈夫曼树
众所周知,计算机以01串来储存和运算。 所以,如果我们想要存一个字符或汉字,例如a,计算机会将它变为一个01串,这个串就是a的编码。如果我们输入了一个词:cat。 如果a的编码是1,c的编码是10,t的编码是11,那么“cat”对应的编码就是“10111”。好了,那么问题来了:10111这个串既是“cat”,也可以理解为“cta”,到底是哪种?如果计算机有庞大的词库原创 2017-10-09 14:03:39 · 1181 阅读 · 0 评论