hdu 4666 最大曼哈顿距离
思路:这题我是看了题目后,上百度搜了一下才知道还有求最大曼哈顿距离的方法。直接把代码copy过来,研读一下,知道了代码实现机制,自然就很容易想到用优先队列来维护每种状态下的xi,yi之和的最大值最小值,以及其属于哪个点。那么对于删点操作只需要标记为不存在就可以了。在队列出队时,若队顶元素不存在,就出队。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <vector>
#include <cstdlib>
using namespace std;
const int Maxn=;
const int inf=0x7fffffff;
struct Que{
int Val,id;
int operator > (const Que &temp) const
{
return Val<temp.Val;
}
int operator < (const Que &temp) const
{
return Val>temp.Val;
}
};
priority_queue <Que> Min[];
priority_queue < Que, vector<Que>, greater<Que> > Max[];
int x[],vi[Maxn];
void init()
{
memset(vi,,sizeof(vi));
int i;
for(i=;i<=;i++)
{
while(!Min[i].empty())
Min[i].pop();
while(!Max[i].empty())
Max[i].pop();
}
}
int main(){
int i, j,od,tmp,dem,k,q,t,s;
while(scanf("%d%d", &q,&dem)!=EOF){
init();
memset(vi,,sizeof(vi));
tmp=<<dem;
Que p;
for(i=;i<=q;i++)
{
scanf("%d",&od);
if(od==)
{
for(j=;j<dem;j++)
scanf("%d",&x[j]);
for(j=; j<tmp; j++){
t=j;s=;
for(k=; k<dem; k++){
if(t&)
s+=x[k];
else s-=x[k];
t>>=;
}
p.id=i;
p.Val=s;
Min[j].push(p);
Max[j].push(p);
}
}
else
{
int x;
scanf("%d",&x);
vi[x]=;
}
Que l,r;
int ans=;
for(j=;j<tmp;j++){
l=Min[j].top();
r=Max[j].top();
while(vi[l.id])
{
Min[j].pop();
l=Min[j].top();
}
while(vi[r.id])
{
Max[j].pop();
r=Max[j].top();
}
ans=max(ans,r.Val-l.Val);
}
printf("%d\n",ans);
}
}
return ;
}
hdu 4666 最大曼哈顿距离的更多相关文章
- HDU 4666 Hyperspace(曼哈顿距离)
题目链接 这是HDU第400个题. #include <cstdio> #include <cstring> #include <set> #include < ...
- Hdu 4311-Meeting point-1 曼哈顿距离,前缀和
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4311 Meeting point-1 Time Limit: 2000/1000 MS (Java/Oth ...
- HDU - 3567 IDA* + 曼哈顿距离 + 康托 [kuangbin带你飞]专题二
这题难度颇大啊,TLE一天了,测试数据组数太多了.双向广度优先搜索不能得到字典序最小的,一直WA. 思路:利用IDA*算法,当前状态到达目标状态的可能最小步数就是曼哈顿距离,用于搜索中的剪枝.下次搜索 ...
- hdu 4666:Hyperspace(最远曼哈顿距离 + STL使用)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- HDU 4666 最远曼哈顿距离
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4666 关于最远曼哈顿距离的介绍: http://blog.csdn.net/taozifish/ar ...
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
题意: 许多 k 维点, 求这些点之间的最远曼哈顿距离. 并且有 q 次操作, 插入一个点或者删除一个点. 每次操作之后均输出结果. 思路: 用"疑似绝对值"的思想, 维护每种状态 ...
- HDU 4666 Hyperspace (最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- HDU 4666 Hyperspace (2013多校7 1001题 最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- Hdu 4312-Meeting point-2 切比雪夫距离,曼哈顿距离,前缀和
题目: http://acm.hdu.edu.cn/showproblem.php?pid=4312 Meeting point-2 Time Limit: 2000/1000 MS (Java/Ot ...
随机推荐
- POJ1179Polygon(DP)
Polygon Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4456 Accepted: 1856 Descripti ...
- ADO.NET 快速入门(五):从 DataSet 更新数据库
该主题说明了如何使用 DataSet 在数据库中更新数据.你依然可以直接使用 SqlCommand 在数据库中插入.更新.和删除数据,记住这一点也很重要.理解“从数据库填充DataSet”涵盖的概念有 ...
- UVa572 Oil Deposits DFS求连通块
技巧:遍历8个方向 ; dr <= ; dr++) ; dc <= ; dc++) || dc != ) dfs(r+dr, c+dc, id); 我的解法: #include< ...
- BZOJ 3170: [Tjoi 2013]松鼠聚会 切比雪夫距离
3170: [Tjoi 2013]松鼠聚会 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- Codeforces Gym 100286I iSharp 水题
Problem I. iSharpTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...
- Python2.7.3移除字符串中重复字符(一)
移除重复字符很简单,这里是最笨,也是最简单的一种.问题关键是理解排序的意义: # coding=utf-8 #learning at jeapedu in 2013/10/26 #移除给定字符串中重复 ...
- [MEAN Stack] First API -- 5. Using $resource to setup REST app
Front-end changes: app.js: Uinsg $resource /** * Created by Answer1215 on 12/9/2014. */ 'use strict' ...
- iOS开发——网络Swift篇&JSON与XML数据解析
JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit) 一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...
- C/C++产生随机数
<一> C/C++如何产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数. (1) 假设你仅仅要产生随机 ...
- 操作cookie
$.extend($, { setCookie: function(c_name, value, expiredays) { var exdate = new Date(); exdate.setDa ...