传送门 题意简述:给一个N个点的凸多边形,求离每一个点最远的点. 思路:先根据初中数学知识证明决策是满足单调性的,然后上分治优化即可. 才不是因为博主懒得写二分+栈优化呢 代码: #include<bits/stdc++.h> #define ri register int using namespace std; inline int read(){ int ans=0; bool f=1; char ch=getchar(); while(!isdigit(ch)){if(ch=='-')…
题目描述 有这样一款新的坦克游戏.在游戏中,你将操纵一辆坦克,在一个N×M的区域中完成一项任务.在此的区域中,将会有许多可攻击的目标,而你每摧毁这样的一个目标,就将获得与目标价值相等的分数.只有获得了最高的分数,任务才算完成.同时,为了增加游戏的真实性和难度,该游戏还做了以下的限制: 1)坦克有射程r的限制.为方便计算,射程r规定为:若坦克位于(x, y)格,则它可攻击的目标(x1, y1)必须满足|x-x1|, |y-y1|∈[0, r]. 2)对坦克完成任务的时间有严格限制,规定为t秒.其中…
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\) 分析 决策单调性发现 注意到物品的体积很小,考虑按体积分类,选取同种体积的物品时,一定…
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…
传送门 题意:给出一个nnn个点的轮廓,要求找一个高度最小的点使得它能够看见所有拐点. 思路:之间建半平面交然后取半平面交上的每个交点和每个轮廓更新答案即可. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; typedef long long ll; const int N=305; struct pot{ double x,y; pot(double _x=0,double _y=0):x(_x…