题解:
分块水题。
不懂看代码:
#include
#include
#include
#include
#include
#define N 101000
#define P 2050
#define eps 1e-10
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
int n,m;
double h[N];
in...
分类:
其他好文 时间:
2015-02-02 12:36:44
阅读次数:
159
题目大意:一个人站在(0,0)处,每次操作都会改变一栋楼的高度,问每次操作之后这个人会看到多少栋楼。
思路:将所有楼分块,在每一块内暴力维护一个单调递增的序列,这样只要这个块中的一栋楼能被看到,那么这一块内能被看到的楼肯定是一段,这样方便统计。
至于是哪一段,二分就可以了。
CODE:
#define _CRT_SECURE_NO_WARNINGS
#includ...
分类:
其他好文 时间:
2015-02-01 13:35:24
阅读次数:
185
题目大意:给定n座楼,初始高度为0,每次可以改变某栋楼的高度,求每次改变高度之后从原点可以看到几栋楼
记录每栋楼楼顶与原点连线的斜率 那么一栋楼可见当且仅当前面所有楼的斜率都小于这栋楼
将n栋楼分为√(0.5*n*logn)块 每一块内维护一个单调上升子序列(注意不是LCS) 比如说4 1 2 3 5 那么维护的序列就是4 5
修改的时候块内暴力重建 然后查询顺着块撸一遍 每次记录当前的最大...
分类:
其他好文 时间:
2014-12-16 11:49:11
阅读次数:
120