摘要: 设f[i]为在i放置守卫塔时1~i的最小花费。那么显然f[i]=min(f[j]+(i-j)*(i-j-1)/2)+a[i]。 显然这是个斜率优化入门题。将不与i、j同时相关的提出,得f[i]=min(f[j]+j*(j+1)/2-ij)+i*(i-1)/2+a[i]。 套路地,假设j>k且j转移优 阅读全文
posted @ 2018-09-17 23:01 Gloid 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 最小割树:新建一个图,包含原图的所有点,初始没有边。任取两点跑最小割,给两点连上权值为最小割的边,之后对于两个割集分别做同样的操作。最后会形成一棵树,树上两点间路径的最小值即为两点最小割。证明一点都不会。 那么这个题就很好做了,连树都不用建。 阅读全文
posted @ 2018-09-17 21:57 Gloid 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 考虑差分序列。每个差分序列的贡献是n-差分序列的和,即枚举首项。将式子拆开即可得到n*mk-1-Σi*cnt(i),cnt(i)为i在所有差分序列中的出现次数之和。显然每一个数出现次数是相同的,所以cnt(i)即等于(k-1)*mk-2。于是就很好算了。 阅读全文
posted @ 2018-09-17 21:11 Gloid 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 必修五题。 阅读全文
posted @ 2018-09-17 16:13 Gloid 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 考虑异或最短路应该怎么求。那么这是个WC原题,dfs一遍找到所有有用的环丢进线性基即可,因为每一个环的权值都是可以取到且不对其他部分产生影响的。 现在给了一棵树,不妨就把他看做原图的dfs树。每增加一条边就是增加了一个环。算出权值后,现在问题变为求一个数和任选一段区间里的数的最大异或值。 比较暴力的 阅读全文
posted @ 2018-09-17 12:27 Gloid 阅读(503) 评论(0) 推荐(0) 编辑