[BalkanOI2016]Lefkaritika】的更多相关文章

题目大意: 一个n*m的格子上有b个障碍物,现在让你往上面放正方形(长宽在格线上).问可以放多少种边长.位置不同的正方形? 思路: 很容易想到一个O(n^3)的暴力: 首先前缀和,然后枚举某一个顶点和正方形的边长,判断一下正方形里面是否为空,如果空,则为一种满足条件的答案. 枚举边长可以改成二分,这样复杂度是O(n^2 log n)的. 再考虑一个O(n^2)的动规: 用f[i][j]保存以(i,j)为右下角顶点的正方形的个数,显然,如果(i-1,j)(i,j-1)(i-1,j-1)(i,j)上…
题目概述 一个$n \times m$的整点集.其中$q$个点被m被设置为不能访问. 问这个点集中含有多少个不同的正方形,满足不包含任何一个不能访问的点. 对于$50\%$的数据满足$1 \leq n,m \leq 10^4, 1 \leq q \leq 10^3$ 对于另外$50\%$的数据满足$1 \leq n,m \leq 2\times 10^5, 1 \leq q \leq 200$ Solution  我们规定行递增的方向为$x$的正方向,列递增的方向为$y$的正方向. 设$f[i]…
题目大意: 平面直角坐标系内有n个点,每个点有一个点权. 你从原点p出发,走若干个点然后回到原点. 两个点之间只能笔直走,你的收获为你的路径围起来的区域内的所有店权和除以路径长度. 问最大收益. 思路: 不难发现:每走一步,相当于在路径形成的多边形中增加一个三角形. 我们可以预处理出所有这样以p为顶点的三角形内的点权和. 首先对于所有的点极角排序. 按极角序枚举每一个点i,作为三角形的第二个顶点. 对于极角序在i后面的结点,按照i再排一遍极角序,枚举第三个顶点j. 用树状数组二位数点即可. 题目…