线段树实现起来细节有点多,用了multiset
参考了一下大佬的题解
排序时需要注意顺序问题
- 先左后右
- 先入后出
- 入边从高到低
- 出边从低到高
感性理解一下即可
加入边时考虑是否会变高
删除边时考虑是否会变低
线段树实现起来细节有点多,用了multiset
参考了一下大佬的题解
排序时需要注意顺序问题
感性理解一下即可
加入边时考虑是否会变高
删除边时考虑是否会变低
扫描线参考HDU1542 Atlantis
可以横竖各做一遍
需要注意的是会重复计算,需要与上一次结果作差
也可以只做一遍
用数组记录宽度,数组记录竖线数量
还需要,记录是否有左右端点竖线
需要注意的是端点竖线重合和顺序问题
高度相同时先做覆盖再做取消覆盖,否则会重叠线段会多次计算
首先有一个结论
对于一个的矩形,经过格子数目为个
更一般的,可由上式化简,对于,经过格子数目为
证明有多种
给出一种我当时想出来的
暴力统计就能过了,复杂度比较玄学,大概是,为一个不是很大常数(我猜的)
其实还有更有理有据的做法
每一对都会被算到两次,但只会被算到一次
复杂度
代码为暴力统计
很综合的一道搜索题
从下往上搜
记为1-k 层最小体积,为1-k 层最小面积
记为剩余体积,为当前面积
对于第层
可行性剪枝
最优化剪枝
对于最后一种剪枝的证明