题意:给定一棵树,每个点有权值,每条边有边权(单向边)。你可以选取K个黑点,使得从每个点移动到距离他最近的黑点的花费(距离*点权)的总和最小。 n<=100 k<=50 w[i],a[i]<=10000 思路:见IOI2005龙凡解题报告 又是一道从父亲到儿子的树形DP 为什么要多叉转二叉?因为假设 ...
分类:
其他好文 时间:
2016-12-20 19:56:08
阅读次数:
206
传送门: 很常规的一道树规,转为左儿子右兄弟。 然后f[node][anc][K]表示在node节点上,最近的有贡献祖先在anc上,在node的儿子和兄弟上有k个有贡献节点的最优值。 然后得出以下转移方程。 f[node][anc][K]=min{f[son[node]][anc][k]+f[bro ...
分类:
其他好文 时间:
2016-09-06 13:45:21
阅读次数:
148
说句实话,写完这道题,很想吐一口血出来,以示我心情的糟糕; 题目很简单,树形dp,正常做30分钟,硬是做了好几个小时,真是伤心。 题解不写了,只是吐个槽,网上没有用背包写的dp,全是左儿子右兄弟写法,没法对照一下,难受啊。 代码: 1 #include<iostream> 2 #include<cs ...
分类:
其他好文 时间:
2016-09-05 19:28:37
阅读次数:
223
还是比较好想到的..设第一个数为x,那么以后的所有数都能用x和M表示出来。 然后再根据非递减的限制条件得出x的取值范围。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #define ll long long 5 usin ...
分类:
其他好文 时间:
2016-06-28 09:18:15
阅读次数:
213
树背包, 左儿子右兄弟来表示树, dp(x, y, z)表示结点x, x的子树及x的部分兄弟共建y个伐木场, 离x最近的伐木场是z时的最小代价. 时间复杂度O(N^2*K^2)--------------------------------------------------------------
分类:
其他好文 时间:
2016-02-01 17:51:07
阅读次数:
224
设f[i][j][k]表示i上游最近的一个伐木场为j且在i所在的子树里共建了k个伐木场(不包含在i的)的最小运费和设v为u的儿子,dist[u]为u到0号点的距离。则当i>=j时f[u][last][i]=max{f[u][last][i-j]+dist[v][last][j]+w[v]*(dist...
分类:
其他好文 时间:
2015-10-26 22:06:49
阅读次数:
186
题目大意:有一个单调不降整数序列,定义平均值数列为这个数列的相邻两项的平均值组成的序列,现在给定这个平均值序列,问原序列有多少种
这相当于给定了相邻两项之间的对称轴 那么我将这个数轴沿着这个对称轴折叠 相邻两项在数轴上就重合了
如果将整个数轴沿着所有的对称轴各折叠一次,所有的点就会重合于一点 此时所有对称轴组成的区间的交集大小就是解的数量
注意无解情况
500W的读入还真有人敢传。。。
...
分类:
其他好文 时间:
2015-01-22 09:27:56
阅读次数:
162
题意:自己去看
题解:
我们把平均数序列看成一个线段,那么这个线段就被序列中的数分成了若干段。
然后在其中一段上选一个点,原序列应该是唯一的,
【对应点:当前点+对应点/2=平均数序列中两段交界点】
所以它到下一段的对应点就是唯一的,而此时我们不妨把整个序列沿着当前段和下一段的交界点折一下,
这样当前选的这个点直接平移到折完后的那部分就是它的对应点了~
然后我们就可以把整个序列折来折...
分类:
其他好文 时间:
2015-01-21 18:22:40
阅读次数:
212