斜率优化dp
文章平均质量分 51
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
【APIO2014】序列分割(sequence)
Description你现在有一个长度为n的序列。你可以进行k次分割,每次分割选择序列中的任意一个位置割开,获得新得到的两个区间里面的数的和的乘积的分数。 请你最大化得分。 n<=10^5,k<=200Solution首先,你操作的顺序对答案是没有影响的。 然后,你把图画一画,如果我们按顺序分割的话,那每个区间对答案的贡献就是这个区间的和*前面所有的和。 于是我们可以写出转移方程:F[i][原创 2016-06-30 12:38:33 · 2302 阅读 · 0 评论 -
【GDOI2014模拟】服务器
Description我们可以从n个数中选择一些,选择第i个数的代价为Ci,且必须选择n。对于每个没有被选择的数i,若它右边离它最近的一个被选择的数是j,则代价为j-i。 求最小代价。 n<=10^6SolutionN^2Dp还是很显然的。 设Fi表示i必须选,且i的右边已经搞定了的最小代价,那么Fi=min(Fk+(k−i−1)∗(k−i)/2)+CiFi=min(Fk+(k-i-1)*(k原创 2016-06-11 18:41:25 · 613 阅读 · 1 评论 -
[bzoj4700]适者
Description给出n个人,每个人有血量T和攻击力D。 你自己可以看做有无限血量和A的攻击力。 战斗为回合制进行,每一回合你先选择一个敌人攻击,将其血量减少你的攻击力的数值。 若一个人的血量<=0则死亡。 然后所有存活的敌人对你进行攻击,每个人对你造成D的伤害。 在战斗开始前你可以先秒杀两个敌人。 求你所受伤害的最小值。 n<=3*10^5,T,D,A<=10^4Solution原创 2017-01-18 21:14:30 · 717 阅读 · 0 评论 -
[ARC066F]Contest with Drinks Hard
Description给出一个序列a,你需要求出一个0/1序列c,使得 ∑i=1n∑j=in∏k=ijCk−∑i=1nCiAi\sum_{i=1}^{n}\sum_{j=i}^{n}\prod_{k=i}^{j}Ck-\sum_{i=1}^{n}CiAi 最大 给出m次修改形如(x,y),表示把a[x]改成y,每次修改之间独立,对于每次修改之后求出答案n,m<=3*1e5Solution首先一原创 2017-11-04 22:33:38 · 703 阅读 · 0 评论