前缀和优化 当DP过程中需要反复从一个求和式转移的话,可以先把它预处理一下.运算一般都要满足可减性. 比较naive就不展开了. 题目 [Todo]洛谷P2513 [HAOI2009]逆序对数列 [Done]洛谷P2511 [HAOI2008]木棍分割 [Done]洛谷P4099 [HEOI2013]SAO [Done]NOIAC37 染色 单调队列优化 前置技能:单调队列(经典的问题模型:洛谷P1886 滑动窗口) 用于优化形如\(f_i=\min/\max_{j=l_i}^{i-1}\{g_…
[BZOJ5311/CF321E]贞鱼/Ciel and Gondolas(动态规划,凸优化,决策单调性) 题面 BZOJ CF 洛谷 辣鸡BZOJ卡常数!!!!!! 辣鸡BZOJ卡常数!!!!!! 辣鸡BZOJ卡常数!!!!!! 所以我程序在BZOJ过不了 题解 朴素的按照\(k\)划分阶段的\(dp\)可以在\(CF\)上过的. 发现当选择的\(k\)增长时,减少的代价也越来越少, 所以可以凸优化一下,这样复杂度少个\(k\) 变成了\(O(nlogw)\) #include<iostrea…
丘中有麻plant 改自这儿,by ZBQ. 还有隐藏的一页不放了.. 直接走下去的话,如果开始时间确定那么到每个点的时间确定,把time减去dis就可以去掉路程的影响了. 这样对于减去d后的t,如果想要摘一部分,那么应是取其中最大的t恰好摘它,其它t较小的会早熟然后等着..(意会一下吧) 所以t大的会对t小的产生贡献,而要恰好摘t小的,那就摘不了t大的了. 所以对t排序并不会影响答案.从小到大依次分K段就行了.i对其中每个作物j的贡献是ti-tj. 注意t相等时虽然会同时摘,但是不能直接去重!…
BZOJ_4609_[Wf2016]Branch Assignment_决策单调性+带权二分 Description 要完成一个由s个子项目组成的项目,给b(b>=s)个部门分配,从而把b个部门分成s个组.分组完成后,每一组的任 意两个点之间都要传递信息.假设在(i,j)两个点间传送信息,要先把信息加密,然后快递员从i出发到总部,再加 密,在到j点.出于安全原因,每次只能携带一条消息.现在给出了道路网络.各个部门和总部的位置,请输出快 递员要走的最小总距离. Input 第一行包含四个整数n,b…
BZOJ_5311_贞鱼_决策单调性+带权二分 Description 众所周知,贞鱼是一种高智商水生动物.不过他们到了陆地上智商会减半. 这不?他们遇到了大麻烦! n只贞鱼到陆地上乘车,现在有k辆汽车可以租用. 由于贞鱼们并不能在陆地上自由行走,一辆车只能载一段连续的贞鱼. 贞鱼们互相有着深深的怨念,每一对贞鱼之间有怨气值. 第i只贞鱼与第j只贞鱼的怨气值记为Yij,且Yij=Yji,Yii=0. 每辆车载重不限,但是每一对在同辆车中的贞鱼都会产生怨气值. 当然,超级贞鱼zzp长者希望怨气值的…
题目:https://www.luogu.org/problemnew/show/P4383 关于带权二分:https://www.cnblogs.com/flashhu/p/9480669.html 自己只能想到 “如果把负边看作不存在,那么分出的连通块的直径一定可以被整个连进最终路径里”.然后就不知道连通块不是恰好 K+1 个怎么办,且也不知道是不是对的…… 原来可以直接把问题看成 “选出恰好 K+1 条不相交路径” .这样也考虑到了 “恰好 K 条” 的限制,并且好像挺对的. 结果自己还是…
题目链接 \(Description\) 给定一棵边带权的树.求删掉K条边.再连上K条权为0的边后,新树的最大直径. \(n,K\leq3\times10^5\). \(Solution\) 题目可以转化为,求树上不相交的\(k+1\)条链,使得它们的边权和最大(已不想再说什么了..). 选择链数越多,答案增长得越慢,减少的时候还会减少得越快,即形成了一个\(K-Ans_K\)的上凸包:而如果没有链数的限制,DP是很容易的(有链数得加一维\(k\)). 带权二分.DP用\(f[x][0/1/2]…
题目链接 \(Description\) 有\(n\)只精灵,两种精灵球(高级和低级),每种球能捕捉到第\(i\)只精灵的概率已知.求用\(A\)个低级球和\(B\)个高级球能捕捉到精灵数的最大期望. \(n\leq10^5\). \(Solution\) 设\(f[i][a][b]\)表示前\(i\)只用了\(a\)个低级球,\(b\)个高级球的最大期望.转移时四种情况显然.复杂度\(\mathcal O(nAB)\). 随着某种球可使用数的增多,f应是凸函数,即增长越来越慢.而且两种球都满足…
洛谷题目传送门 用两种不一样的思路立体地理解斜率优化,你值得拥有. 题意分析 既然所有的土地都要买,那么我们可以考虑到,如果一块土地的宽和高(其实是蒟蒻把长方形立在了平面上)都比另一块要小,那么肯定是直接并购,这一块对答案没有任何贡献. 我们先把这些给去掉,具体做法可以是,按高为第一关键字,宽为第二关键字从大到小排序,然后上双指针扫一遍. 于是,剩下的就是一个高度递减.宽度递增的矩形序列.考虑怎样制定它们的并购方案会最优.显然如果要并购,一定要挑序列中的一段区间,这样贡献答案的就只有最左边矩形的…
题目要求... 化简得... 显然m和sum^2是已知的,那么只要让sigma(si^2)最小,那就变成了求最小平方和的最小值,经典的决策单调性,用分治优化即可. 斜率优化忘得差不多就不写了 #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> #define ll long long using namespace…