HDU 4666 Hyperspace【最远曼哈顿距离+优先队列】

这个题是动态的求最远曼哈顿距离。做法和POJ 2926 Requirements一样,都是通过二进制枚举符号的情况。

每插入一个节点都要询问最大值和最小值,因此用一个优先队列或者堆维护就可以了。


#include 
#include 
#include 
#include 
#include 
using namespace std;
#define N 60010
#define inf 0x3fffffff
int q, k, a[5];
bool vis[N];
struct node1 {
    int x, id;
    bool operator<(const node1& a) const {
        return x < a.x;
    }
}t1;
struct node2 {
    int x, id;
    bool operator<(const node2& a) const {
        return x > a.x;
    }
}t2;
priority_queue q1[1<<5];
priority_queue q2[1<<5];

int main() {
    while (scanf("%d%d", &q, &k) == 2) {
        int t;
        memset(vis, false, sizeof(vis));
        for (int i=0; i<(1<


你可能感兴趣的:(ACM,杂题,数据结构,题解)