link:http://acm.hdu.edu.cn/showproblem.php?pid=4666

这题学会了怎么处理曼哈顿距离。

比如维数是k,那么每个点有2^k个状态,求出在每个状态下,所有点的最大值,最小值,求他们的差,从中找到最大值就行。

开始觉得不好处理的是,删除的时候怎么办。比如要删除一个点,我可以在2^k个中的每个状态里面先找到这个点在这个状态下的值,删除这个值就行了。

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <queue>
#include <deque>
#include <queue>
#include <list>
#include <map>
#include <set>
#include <vector>
#include <utility>
#include <functional>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <numeric>
#include <cassert>
#include <ctime>
#include <iterator>
const int INF = 0x3f3f3f3f;
const int dir[][] = {{-,},{,},{,-},{,},{-,-},{-,},{,-},{,}};
using namespace std;
multiset<int> a[];
int sad[][],will[][];
int main(void)
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif // ONLINE_JUDGE
int q,k;
while (~scanf("%d%d",&q,&k))
{
int apple=<<k;
for(int i=;i<;++i) a[i].clear();
for(int i=;i<q;++i)
{
int op; scanf("%d",&op);
if(op==)
{
for(int j=;j<k;++j)
{
scanf("%d",&sad[i][j]);
}
for(int j=;j<apple;++j)
{
int s=;
for(int pear=;pear<k;++pear)
{
if(j&(<<pear)) s+=sad[i][pear];
else s-=sad[i][pear];
}
will[i][j]=s;
a[j].insert(s);
}
}
else
{
int nu; scanf("%d",&nu);
for(int j=;j<apple;++j)
{
multiset<int>::iterator it;
it=a[j].find(will[nu-][j]);
if(it!=a[j].end())
a[j].erase(it);
}
}
int ans=;
for(int j=;j<apple;++j)
{
if(a[j].size()>)
{
int big=*(--a[j].end()),
small=*(a[j].begin());
// printf("big=%d small=%d\n",big,small);
if(big-small>ans) ans=big-small;
}
}
printf("%d\n",ans);
}
}
return ;
}

o(╯□╰)o

hdu4666 Hyperspace ——曼哈顿距离的更多相关文章

  1. HDU4666 Hyperspace(曼哈顿)

    题目链接. 分析: 这是多校的一个题,当时没做出来.学长说让用multiset. 用multiset将每一个数的1<<dim个状态全部保存.假设状态 i, 最远曼哈顿距离应当是 max[i ...

  2. HDU 4666 Hyperspace(曼哈顿距离)

    题目链接 这是HDU第400个题. #include <cstdio> #include <cstring> #include <set> #include < ...

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

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

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

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

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

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

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

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

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

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

  8. Hdu4311 || 4312Meeting point-1/-2 n个点中任意选一个点使得其余点到该点曼哈顿距离之和最小

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  9. Atitti knn实现的具体四个距离算法 欧氏距离、余弦距离、汉明距离、曼哈顿距离

    Atitti knn实现的具体四个距离算法  欧氏距离.余弦距离.汉明距离.曼哈顿距离 1. Knn算法实质就是相似度的关系1 1.1. 文本相似度计算在信息检索.数据挖掘.机器翻译.文档复制检测等领 ...

随机推荐

  1. RMAN的恢复篇

    Oracle 数据库的恢复实际上包含了两个概念:数据库修复(RESTORE)与数据库恢复(RECOVER): 数据库修复:是指利用备份的数据库文件来替换已经损坏的数据库文件或者将其恢复到一个新的位置. ...

  2. (五)AOS编程

    一.LOG AOS_LOG(index)  //断言,会打印出断言传进来的值 AOS_ASSERT(0);     //只会打印断言位置  return  AOS_FAIL;    //返回错误,函数 ...

  3. iOS开发 Masonry的简单使用

    首先,在正式使用Masonry之前,我们先来看看在xib中我们是如何使用AutoLayout     从图中我们可以看出,只要设置相应得局限,控制好父视图与子视图之间的关系就应该很ok的拖出你需要的需 ...

  4. jquery 返回上一页 ,关闭js代码

    1.关闭功能: $(“#guanbi”).live("click",function()){ window.close(); } 2.返回上一页: <a href=" ...

  5. viewer.js图片查看器插件(可缩放/旋转/切换)

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  6. ListView.DragEnter触发不了

    经过千百度的搜索之后,终于找到了一点线索,原文是:https://msdn.microsoft.com/en-us/magazine/mt185571.aspx 有能力的可以参阅原文,想省事的可以等待 ...

  7. LaTeX自学ing

    恩看标题嘛...Xs要自学LaTeX的说! 话说cnblogs不支持插入LaTeX格式的代码的说?..唔~ 嘛...首先是些简单的东西(像是文件的格式啦,作者啦之类的): (注意:\documentc ...

  8. 使用Settings.settings存储用户的个性化配置

    1.在vs中设计要存储的字段,如:zbl,注意范围选择用户 读取: var aa = Properties.Settings.Default.zbl; 写入: Properties.Settings. ...

  9. terminator终端工具

    terminator是个很好的终端程序,在Ubuntu Linux下安装如下: sudo apt-get install terminator 可在同一屏打开多个窗口:

  10. SPOJ GSS1 静态区间求解最大子段和

    题目大意: 给定n个数,再给q个区间询问,希望在区间s,t中找到一段连续的子序列使其和最大 因为询问上万,节点数50000,明显是用线段树去做,这里很明显的区间更新,唯一写起来有点恶心的是询问 每一个 ...