摘要: 显然可以想出f[i][j]表示前i个产品加工好A机器使用j的时间,B机器最少的使用时间 但是内存不够,于是考虑i可以不用记录,然后就ac了 阅读全文
posted @ 2018-05-11 12:40 geniuschenjj 阅读(144) 评论(0) 推荐(0) 编辑
摘要: dp_斜率优化 阅读全文
posted @ 2018-03-11 20:55 geniuschenjj 阅读(120) 评论(0) 推荐(0) 编辑
摘要: O(n^2)dp方程:f[i]=min(f[j]+(P[i]-P[j])*x[i]-G[i]+G[j]+c[i])(0<j<i) P[i]表示p[i]的前缀和,G[i]表式p[i]*c[i]的前缀和,f[i]表示i处建仓库且i之前的所有工厂的产品都安顿的最小代价 我们可以发现该方程可以用斜率优化 斜 阅读全文
posted @ 2018-03-11 18:07 geniuschenjj 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 显然f[i]=min(f[j]+(sum[i]-sum[j]+i-(j+1)-l)^2) sum[i]表示前缀和 但显然这样的时间复杂度无法得满分,于是我们考虑斜率优化。 为了方便书写,令sum[i]=sum[i]+i,l=l+1 方程变为f[i]=min(f[j]+(sum[i]-sum[j]-l 阅读全文
posted @ 2018-03-10 19:48 geniuschenjj 阅读(142) 评论(1) 推荐(0) 编辑
摘要: 树链剖分就是把树拆成一系列链,然后用数据结构对链进行维护。 树链剖分主要变量: dep[x]表示x节点的深度,size[x]表示以x为根节点的树的大小,son[x]表示x的重儿子(重儿子即x的所有儿子中size最大的儿子), fa[x]表示x的父亲,top[x]表示x所属重链的头部。 首先,dep, 阅读全文
posted @ 2018-03-09 10:53 geniuschenjj 阅读(115) 评论(1) 推荐(0) 编辑
摘要: treap相对splay容易理解 对每个节点x,tr[x].rd=rand(); 然后对tr[x].rd操作,使其满足堆性质 阅读全文
posted @ 2018-03-09 10:18 geniuschenjj 阅读(109) 评论(1) 推荐(0) 编辑
摘要: 花了一天时间调试终于过了。网上非指针的splay太少了,学长大佬们拒绝指导,只能靠自己了。 其实splay是为了保证时间复杂度,所以每次操作进行一次splay。 splay共三种操作:zig,zig_zig,zig_zag。 设当前点为x,y=fa[x],z=fa[y] 1.zig y为root时直 阅读全文
posted @ 2018-03-09 10:12 geniuschenjj 阅读(204) 评论(1) 推荐(0) 编辑