题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4666

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <queue>
#include <set>
using namespace std;
const int maxn = ; struct MaxHeap{
int d; //k维的各种加或减的和;
int p; //每个坐标和所属的标号
MaxHeap(int d=,int p=):d(d),p(p) {}
bool operator < (const MaxHeap& r) const{
return d < r.d;
}
};
struct MinHeap{
int d;
int p;
MinHeap(int d=,int p=):d(d),p(p) {}
bool operator < (const MinHeap& r) const{
return d > r.d;
}
};
priority_queue<MaxHeap> Max[]; //存储1<<k种坐标组合情况;
priority_queue<MinHeap> Min[];
int q,k;
bool del[maxn]; //标记别删除的点; int main()
{
//freopen("E:\\acm\\input.txt","r",stdin);
while(cin>>q>>k){
memset(del,,sizeof(del));
for(int i=;i<;i++){
while(!Max[i].empty()) Max[i].pop();
while(!Min[i].empty()) Min[i].pop();
}
int a[],od;
MaxHeap temp1; MinHeap temp2;
for(int m=;m<=q;m++){
scanf("%d",&od);
if(od == ){
for(int i=;i<k;i++) scanf("%d",&a[i]);
for(int i=;i<(<<k);i++){
int add = ;
for(int j=;j<k;j++)
if(<<j & i) add += a[j];
else add -= a[j];
temp1 = MaxHeap(add,m);
temp2 = MinHeap(add,m);
Max[i].push(temp1);
Min[i].push(temp2);
}
}
else{
int id;
scanf("%d",&id);
del[id] = true;
}
/***** 统计答案 ******/
int ans = ;
for(int i=;i<(<<k);i++){
if(!Max[i].empty()) temp1 = Max[i].top(); //下面从最大堆中取没被删除的最大;
while(!Max[i].empty() && del[temp1.p]){
Max[i].pop();
temp1 = Max[i].top();
}
if( Max[i].empty()){ //最大堆为空,没temp1没取到元素;直接退出。
ans = ; break;
}
if(!Min[i].empty()) temp2 = Min[i].top(); //下面从最小堆中取没被删除的最小;
while(!Min[i].empty() && del[temp2.p]){
Min[i].pop();
temp2 = Min[i].top();
}
if( Min[i].empty()){ //最小堆为空,没temp2没取到元素;
ans = ; break;
}
ans = max(ans,temp1.d-temp2.d);
}
printf("%d\n",ans);
}
}
}

hdu4666 最远曼哈顿距离的更多相关文章

  1. hdu 4666:Hyperspace(最远曼哈顿距离 + STL使用)

    Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  2. poj 2926:Requirements(最远曼哈顿距离,入门题)

    Requirements Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3908   Accepted: 1318 Desc ...

  3. POJ-2926 Requirements 最远曼哈顿距离

    题目链接:http://poj.org/problem?id=2926 题意:求5维空间的点集中的最远曼哈顿距离.. 降维处理,推荐2009武森<浅谈信息学竞赛中的“0”和“1”>以及&l ...

  4. [HDU 4666]Hyperspace[最远曼哈顿距离][STL]

    题意: 许多 k 维点, 求这些点之间的最远曼哈顿距离. 并且有 q 次操作, 插入一个点或者删除一个点. 每次操作之后均输出结果. 思路: 用"疑似绝对值"的思想, 维护每种状态 ...

  5. HDU 4666 Hyperspace (最远曼哈顿距离)

    Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  6. HDU 4666 最远曼哈顿距离

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4666 关于最远曼哈顿距离的介绍: http://blog.csdn.net/taozifish/ar ...

  7. HDU 4666 Hyperspace (2013多校7 1001题 最远曼哈顿距离)

    Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  8. 2018 Multi-University Training Contest 10 CSGO(HDU - 6435)(最远曼哈顿距离)

    有 n 种主武器,m 种副武器.每种武器有一个基础分数k种属性值 X[i] . 选出一种主武器 mw 和一种副武器 sw,使得两种武器的分数和 + 每个属性的差值尽量大.(参考下面的式子) 多维的最远 ...

  9. Codeforces 491B. New York Hotel 最远曼哈顿距离

    最远曼哈顿距离有两个性质: 1: 对每一个点(x,y)  分别计算  +x+y , -x+y , x-y , -x-y 然后统计每种组合的最大值就能够了, 不会对结果产生影响 2: 去掉绝对值 , 设 ...

随机推荐

  1. Android之提交数据到服务端方法简单封装

    在Android应用中,除了单机版的应用,其余的应用免不了需要频繁地与服务端进行数据交互,如果每一种方法都独立写一段代码,那会造成代码大量重复,冗余,这不是我们所希望的,所以我们可以对其进行一些封装, ...

  2. nest 'for' loop.

    /* nest for loop demo. Note that,'upside' triangle controls 'inner condition'. */ import kju.print.P ...

  3. Array,ArrayList 和 List<T>的选择和性能比较.

    Array Class Provides methods for creating, manipulating, searching, and sorting arrays, thereby serv ...

  4. SQL Server中的死锁

    简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的.理解死锁首先需要对死锁所涉及的相关观念有一个理解. 一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理 ...

  5. NgNice项目案例

    技术构架: 服务端技术:NodeJS + Express4.x + Mongodb + Mongoose 前端技术: AngularJS1.2.x + Bootstrap3.x 源码:https:// ...

  6. JavaScript Boolean(布尔) 对象

    创建 Boolean 对象 Boolean 对象代表两个值:"true" 或者 "false" 下面的代码定义了一个名为 myBoolean 的布尔对象: va ...

  7. javascript基础学习(十)

    javascript之数组 学习要点: 数组的介绍 定义数组 数组元素 数组的方法 一.数组的介绍 数组中的元素类型可以是数字型.字符串型.布尔型等,甚至也可以是一个数组. 二.定义数组 1.通过数组 ...

  8. Java中实现对象的比较:Comparable接口和Comparator接口

    在实际应用中,我们往往有需要比较两个自定义对象大小的地方.而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的.所以Java中 ...

  9. C# 窗体靠近屏幕边缘自动隐藏*学习(类似于QQ)

    using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; us ...

  10. __call方法简介

    作用:当程序试图调用不存在或不可见的成员方法时,PHP会先调用__call方法来储方法名及参数. __call方法包含两个参数:即方法名和方法参数.其中,方法参数是以数组形式存在的.