题目描述 有这样一款新的坦克游戏.在游戏中,你将操纵一辆坦克,在一个N×M的区域中完成一项任务.在此的区域中,将会有许多可攻击的目标,而你每摧毁这样的一个目标,就将获得与目标价值相等的分数.只有获得了最高的分数,任务才算完成.同时,为了增加游戏的真实性和难度,该游戏还做了以下的限制: 1)坦克有射程r的限制.为方便计算,射程r规定为:若坦克位于(x, y)格,则它可攻击的目标(x1, y1)必须满足|x-x1|, |y-y1|∈[0, r]. 2)对坦克完成任务的时间有严格限制,规定为t秒.其中…
设$f[i][j][k]$表示坦克位于$(i,j)$,目前打了不超过$k$个位置的最大得分. 初始值$f[1][1][k]$为在$(1,1)$射程内最大$k$个位置的分数总和. 对于每次移动,会新增一行或者一列$O(R)$个位置,那么显然也是从大到小取. 暴力转移是$O(R)$的,不能接受,但是注意到这是个凸函数,故存在决策单调性,分治求解即可. $ans=\max(f[i][j][T-i-j+2])$ 时间复杂度$O(nm(T+R\log R))$. #include<cstdio> #in…
P2877 [USACO07JAN]牛校Cow School 01分数规划是啥(转) 决策单调性分治,可以解决(不限于)一些你知道要用斜率优化却不会写的问题 怎么证明?可以暴力打表 我们用$ask(l,r,dl,dr)$表示处理区间$[l,r]$时,这段区间的决策点已固定在$[dl,dr]$中 设$mid=(l+r)/2$,暴力处理$mid$的最优决策点$dm$ 再向下分治$ask(l,mid-1,dl,dm)$,$ask(mid+1,r,dm,dr)$ 对于本题,先按$t[i]/p[i]$从大…
Bzoj4951:决策单调性 分治 国际惯例题面:一句话题面:供应商出货日期为Ei,售价为Pi:用户收购截止日期为Si,收购价格为Gi.我们要求max((Si-Ej)*(Gi-Pj)).显然如果我们把这两者都按照Ei,Si递增排序,则Pi,Gi都是单调降的.为什么?如果一个供应商生产时间后且价格高,显然你不会选择他:如果一个用户购买时间短且收购价格低,显然你也不会选择他.然后我们会写n^2暴力了.考虑优化. 这种DP要么斜率+数据结构优化,要么就是决策单调性.考虑斜率优化,发现这是一个三维凸包问…
[NAIPC2016]Jewel Thief(决策单调性+分治) 题面 原题提交地址(题目编号H) 原题面下载地址 有\(n\)个物品,每个物品有一个体积\(w_i\)和价值\(v_i\),现在要求对\(V \in [1,m]\),求出体积为\(V\)的 背包能够装下的最大价值 \(1 ≤ n ≤ 1000000; 1 ≤ m ≤ 100000; 1 ≤ w_i ≤ 300; 1 ≤ v_i ≤ 10^9\) 分析 决策单调性发现 注意到物品的体积很小,考虑按体积分类,选取同种体积的物品时,一定…
传送门 显然考虑 $dp$,发现时间只和当前位置和攻击次数有关,设 $F[i][j][k]$ 表示当前位置为 $i,j$ ,攻击了 $k$ 次得到的最大分数 初始 $f[1][1][k]$ 为位置 $1,1$ 能打到的前 $k$ 大位置的分数和 每次移动都会多一行或多一列目标可以选择,攻击时显然优先攻击分数大的位置,因为要排序, 加上原本 $i,j,k$ 复杂度 $O(nm(T+ \log R)R)$ ,考虑优化 先考虑从 $f[i][j-1][k-t]$ 转移到 $f[i][j][k]$,设此…
P3515 [POI2011]Lightning Conductor 式子可转化为:$p>=a_j-a_i+sqrt(i-j) (j<i)$ $j>i$的情况,把上式翻转即可得到 下面给一张图证明这是满足决策单调性的 把$a_j+sqrt(i-j)$表示在坐标系上 显然$sqrt(i-j)$的增长速度趋缓 曲线$a$被曲线$b$超过后是无法翻身的 对两个方向进行决策单调性分治,取$max$即可 #include<iostream> #include<cstdio>…
显然有决策单调性,但由于逆序对不容易计算,考虑分治DP. solve(k,x,y,l,r)表示当前需要选k段,待更新的位置为[l,r],这些位置的可能决策点区间为[x,y].暴力计算出(l+r)/2的决策位置s,两边递归下去继续操作.solve(k,x,s,l,mid-1),solve(k,s,y,mid+1,r). 注意到每个位置每层只会被一个区间遍历到,加上树状数组在线更新逆序对的复杂度,总复杂度为$O(kn\log^2n)$ #include<cstdio> #include<al…
https://loj.ac/problem/6039 我们设dp[i][j]表示考虑所有价值小于等于i的物品,带了j块钱的最大吸引力. 对于ci相同的物品,我们一定是从大到小选k个物品,又发现最大的k个的价值在k变大的时候增长率是单调减的. 同时对于同样的ci,被转移和转移到的状态mod ci同余. 这些dp值也具有单调性,因此这个dp具有决策单调性. 我们用分治优化转移.负责度O(c*k*logk) #include<iostream> #include<cstring> #i…
题目要求... 化简得... 显然m和sum^2是已知的,那么只要让sigma(si^2)最小,那就变成了求最小平方和的最小值,经典的决策单调性,用分治优化即可. 斜率优化忘得差不多就不写了 #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> #define ll long long using namespace…