题目背景 OL不在,Clao又在肝少*前线,他虽然觉得这个游戏的地图很烦,但是他认为地图的难度还是太低了,习习中作为策划还不够FM,于是他自己YY了一种新的地图和新的机制: 题目描述 整个地图呈树形结构,共有N+1 个节点,0 号节点为树的根节点,并且,与0 号节点相连的就只有1 号节点,除0 号节点外的所有节点上都会有一队战斗力为V_i的敌人存在: 指挥部设在0 号节点,玩家的操纵梯队只能出生在该节点,并且在进入地图时玩家将选择任意一个节点作为本次任务的终点,设为E ,玩家只需要将根节点到EE…
传送门 思路: 最朴素的dp式子很好考虑:设\(dp(i,j)\)表示前\(i\)个任务,共\(j\)批的最小代价. 那么转移方程就有: \[ dp(i,j)=min\{dp(k,j-1)+(sumT_i+S*j)*(sumC_i-sumC_k)\} \] 为什么有个\(S*j\)呢,因为前面的批次启动会对后面的答案有影响. 但是分析复杂度是\(O(n^3)\)的,肯定不行. 考虑一下为什么需要第二个状态呢?是为了消除后效性,因为后面的状态不知道总共启动了几次. 但我们可以把费用提前计算,一次启…
做的第一道斜率优化\(DP\)QwQ 原题链接1/原题链接2 首先考虑\(O(n^2)\)的做法:设\(f[i]\)表示在\(i\)处建仓库的最小费用,则有转移方程: \(f[i]=min\{f[j]+\sum\limits_{k=j+1}^{i}P[k](X[i]-X[k])\}+C[i]\) 于是我们枚举\(i\),再从\(i-1\)开始从大到小枚举\(j\),并记录一个前缀和,每次更新一下\(f[i]\).洛咕上貌似拿了66分,数据太水: #include <cstdio> using…
题意 题目链接 Sol 解题的关键是看到题目里的提示... 设\(f[i]\)表示到第\(i\)天所持有软妹币的最大数量,显然答案为\(max_{i = 1}^n f[i]\) 转移为\(f_i = max(f_{i - 1}, A_i \frac{f_j R_j}{A_j R_j + B_j} + B_i \frac{f_j}{A_j R_j + B_j})\) 变形一下: \[\frac{f_i}{B_i} - \frac{f_j}{A_j R_j + B_j} = \frac{A_i}{B…
传送门 推式子(快哭了……)$$s^2*m^2=\sum _{i=1}^m (x_i-\bar{x})^2$$ $$s^2*m^2=m*\sum _{i=1}^m x_i^2-2*sum_n\sum _{i=1}^m x_i+sum_n^2$$ $$s^2*m^2=m*\sum _{i=1}^m x_i^2+(sum_n-\sum _{i=1}^m x_i)^2-(\sum _{i=1}^m x_i)^2$$ 然后因为$sum_n$和$\sum _{i=1}^m x_i$两项是定值,且值相等,所…
题目链接 算是巩固了一下斜率优化吧. 设\(f[i]\)表示前\(i\)分钟最少等待时间. 则有\(f[i]=\min_{j=0}^{i-m}f[j]+(cnt[i]-cnt[j])*i-(sum[i]-sum[j])\) 其中\(cnt[i]\)和\(sum[i]\)分别表示前\(i\)分钟去等车的学生数量和他们去等车的时刻之和. 变形一下得\(f[j]+sum[j]=i*cnt[j]+i*cnt[i]-sum[i]-f[i]\) 维护一个下凸包即可. #include <cstdio> #…
一道神仙好题. 首先看到有多组\(k\),第一反应就是离线. 考虑贪心. 我们每次一定是尽量选择有儿子的节点.以便于我们下一次扩展. 但是对于一个\(k\),每次贪心的复杂度是\(O(n)\) 总复杂度是\(O(nq)\),肯定过不了. qwq 那我们只能来考虑一个快速求一个\(k\)的答案. 感觉题解的柿子好神仙啊. 这里定义\(f[i]\)表示\(k=i\)的时候的最小次数. \(sum[i]\)表示深度大于等于\(i\)的点有多少个. 则$$f[i]=max(j+\lceil \frac{…
首先根据题目中给的要求,推一下方差的柿子. \[v\times m^2 = m\times \sum x^2 - 2 \times sum \times sum +sum*sum \] 所以\(ans = v*m^2 = m\times \sum x^2 - sum*sum\) 那我们实际上就是最大化平方和. 由于题目限制了要分\(m\)段.所以我们的\(dp\)状态就是\(f[i][j]\)表示前\(i\)个数分了\(j\)段. 那么一个比较显然的转移 \(dp[i][p]=min(dp[j]…
首先易得方程,且经过变换有 $$\begin{aligned} f_i &= \min\limits_{dist_i - lim_i \le dist_j} \{f_j + (dist_i - dist_j)p_i + q_i\} \\ f_j &= p_idist_j + f_i - dist_ip_i - q_i \end{aligned}$$ 在一条直线上时,斜率优化可以用普通$CDQ$分治实现(会不会过于麻烦?),那么对于在树上斜率优化时,考虑点分治 这时就在点分治中运用$CDQ$…
BZOJ_2726_[SDOI2012]任务安排_斜率优化+二分 Description 机器上有N个需要处理的任务,它们构成了一个序列.这些任务被标号为1到N,因此序列的排列为1,2,3...N.这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti.在每批任务开始前,机器需要启动时间S,而完成这批任务所需的时间是各个任务需要时间的总和.注意,同一批任务将在同一时刻完成.每个任务的费用是它的完成时刻乘以一个费用系数Fi.请确定一个分…