BZOJ4145: [AMPPZ2014]The Prices
f[sta][i]表示买完sta中集合中的物品,当前在i号城市的最小代价
转移的时候枚举一下最后买的物品以及从哪儿买
前缀和优化一下
复杂度O(n2^mm)
cf 1129 E. Legendary Tree
每次可以给定两个不相交且非空的点集以及一个常数({S}, {T}, p),系统会返回(u∈S, v∈T)且(u, v)经过p的点的对数。
需要在11111次操作后还原出树的形态
n <= 500
首先转化为有根树,假设1是根。根据题目描述我们实际上得到了几个操作
1.询问点集S中有多少在p的子树内 - ({S}, {1}, p)即可
2.询问某个点p的子树大小 - {{2, 3, 4, 5}, {1}, p}
接下来考虑怎么还原出一棵树,显然我们只要维护出父子关系就行了
首先询问出所有点的siz,从小到大排序,那么此时每个点的孩子一定在它左边。接下来动态的从做往右扫,实时维护一下没有找到父亲的所有节点。
然后直接在点集中二分就行了。
UOJ #311. 【UNR #2】积劳成疾
每个长度为k的区间都是独立的,所以我们直接对着最大值dp
f[i][j]表示长度为i的序列,最大值为<=j时 的所有答案,也就是对整体进行dp
转移的时候只需要考虑第一个j在哪儿,其余的可以通过f[i][j - 1]转移