- 博客(5)
- 收藏
- 关注
原创 哈夫曼树的构造
定义: 给定数列{ai} 哈夫曼数是一棵二叉树,满足数列中的所有的数都是它的叶节点,且每一个叶节点的权值*它到根的距离之和最短。 构造方法: 将原数列看成一个森林,每次挑出最小的两个节点合并,直到只剩下一个节点,就构造好了一颗哈夫曼树。 (证明略~) 示例代码: #include<cstdio> #include<string> #include<...
2018-03-15 20:11:37 1957
原创 LCA模板
copy代码神器 void dfs(int x){ for (int j=lnk[x];j;j=nxt[j]) if (!dep[son[j]]) { dep[son[j]]=dep[x]+1; f[son[j]][0]=x; fa[son[j]]=x; dfs(son[j]); } } void build(){ for (int j=1;j&l...
2018-03-15 19:28:32 180
原创 BZOJ1412: [ZJOI2009]狼和羊的故事
题目描述: Description “狼爱上羊啊爱的疯狂,谁让他们真爱了一场;狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! Orez的羊狼圈可以看作一个n*m个矩阵格子,这个矩阵的边缘已经装上了篱笆。可是Drake很快发现狼再怎么也是狼,它们总是对羊垂涎三尺,那首歌只不过是一个动人的传说而已。所以Orez决定...
2018-03-14 20:59:31 363
原创 斜率优化总结
适用范围: 斜率优化是DP的一种优化,适用于转移方程式中除了f[i]和f[j]还和其他和ij有关的变量的DP,例如:f[i]=min(f[j]+(a[i]-a[j])^2)(a数组递增) 实现方法: 以上面的方程为例。 step1:展开: 假设f[i]必定由f[j]转移而来,则 f[i]=f[j]+(a[i]-a[j])^2=f[j]+a[i]^2-2*a[i]*a[j]+a[j]^...
2018-03-02 20:52:48 1165
原创 BZOJ3675: [Apio2014]序列分割
题目描述: Description 小H最近迷上了一个分隔序列的游戏。在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列。为了得到k+1个子序列,小H需要重复k次以下的步骤: 1.小H首先选择一个长度超过1的序列(一开始小H只有一个长度为n的序列——也就是一开始得到的整个序列); 2.选择一个位置,并通过这个位置将这个序列分割成连续的两个非空的新序列。 每次进行...
2018-03-01 21:13:06 215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人