bzoj#P4792. [CERC2016] Geohash Grid

[CERC2016] Geohash Grid

题目描述

“地理哈希”是一个将二维平面坐标编码为整数的过程,这将为数据库中地理数据的存储和查询带来方便。在这个问题中,一个地图是一个建立在标准二维笛卡尔坐标系上的 2n2^n2n2^n 列的矩形网格,越往右 xx 坐标越大,越往上 yy 坐标越大。一个地图格子是一个单位正方形,满足其左下角的点的坐标为 (x,y)(x,y),其中 0x,y<2n0\le x,y<2^n

2n2^n2n2^n 列的地图上一共有 22n2^{2n}个格子。对于一个格子 cc,它的地理哈希值 h(c)h(c) 是一个 2n2n 位的非负二进制整数。从最高位开始考虑整个地图,然后重复下面两个步骤 nn 次,即可得到 cc 的地理哈希值 h(c)h(c)

1.把地图分成左右两个面积相等的区域,如果格子 cc 在左半边,那么这一位是 00,否则是 11。然后将考虑范围缩小到 cc 所在的那半边地图。

2.把地图分成上下两个面积相等的区域,如果格子 cc 在下半边,那么这一位是 00,否则是 11。然后将考虑范围缩小到 cc 所在的那半边地图。

一个“地理哈希区间” [a,b][a,b] 表示所有哈希值在 [a,b][a,b] 之间的格子。通常应用中,我们会用一些地理哈希区间去近似表示地图。给定一个格子集合 CC,以及一个正整数 tt,那么 CC 的最优t近似是指使用不超过 tt 个地理哈希区间,覆盖住所有 CC 中的格子(覆盖其它格子是允许的),同时满足覆盖住的区域的面积最小。

给定一个地图以及一个格子集合 CCCC 用一个边平行于坐标轴的简单多边形来表示。然后给定 qq 个询问t1,t2,,tqt_1,t_2,\cdots,t_q,对于每个询问 tkt_k,你需要求出 CC 的最优 tkt_k 近似覆盖住的区域的面积。

输入格式

第一行包含一个正整数 nn,表示地图的尺寸的以 22 为底的对数。
第二行包含一个正整数 mm,表示多边形顶点的个数。
接下来 mm 行,每行两个整数 xi,yix_i,y_i,按逆时针依次表示多边形每个顶点的坐标。
输入数据保证多边形不自交,边平行于坐标轴,且不存在相邻两条边是平行的。
接下来一行包含一个正整数 qq,表示询问的个数。
接下来 qq 行,每行一个正整数 t1,t2,,tqt_1,t_2,\cdots,t_q,依次表示每个询问。

输出格式

输出 qq 行,每行一个正整数,依次回答每个询问。

3 8
1 1
5 1
5 4
3 4
3 8
0 8
0 5
1 5
4 2 3 5 7
32
30
26
24

样例解释

区间 [3,29][3,29][33,33][33,33][36,37][36,37] 组成最优 33 近似,其覆盖住的总面积为 3030

数据规模与约定

对于 100%100\% 的数据,1n301\le n\le 300xi,yi2n0\le x_i,y_i\le 2^n4m2004\le m\le2001q1051\le q\le10^51ti1091\le t_i\le 10^9