hdu 4666 线段树+最大曼哈顿距离

POJ 2926 Requirements【最远曼哈顿距离】 n个5维坐标的点,求这n个点中曼哈顿距离的最大值。 暴力枚举肯定超时。 只考虑二维空间上两个坐标之间的曼哈顿距离(x1, y1) 和 (x2, y2),|x1-x2| +|y1-y2|去掉绝对值符号后共有下列四种情况 (x1-x2) + (y1-y2), (x1-x2) + (y2-y1), (x2-x1) + (y1-y2), (x2-x1) + (y2-y1) 转化一下: (x1+y 阅读详情

由于要求n个点的最大曼哈顿距离,并且要执行插入,删去操作,如果对距离公式什么都不做的话,会发现复杂度太高了,tle肯定。再来看一下二维式子,无非有四种方式:

(x1-x2)+(y1-y2),(-x1+x2)+(y1-y2),(x1-x2)+(y2-y1),(x2-x1)+(y2-y1).

毫无规律再变化一下。

(x1+y1)-(x2+y2),(-x1+y1)-(-x2+y2),(x1-y1)-(x2-y2).....

所以可以用线段树来维护一个点的相应的值。

二进制来表示x1,y1,z1,t1,k1的正负值。

//hdu 4666 线段树+最大曼哈顿距离
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int que[60005],q[60005][6],ans[60005],op,wei;
#define inf 0x3f3f3f3f

struct ee
{
    int ma,mi,l,r;
}tree[4*60005];

void pushup(int c)
{
    tree[c].ma=max(tree[c*2].ma,tree[c*2+1].ma);
    tree[c].mi=min(tree[c*2].mi,tree[c*2+1].mi);
}

void insert(int a,int s,int time)
{
    if(tree[a].l==tree[a].r)
    {
        int i,cnt=0;
        for(i=0;i<wei;i++)
        {

           if((1<<i)&time)
           {
               cnt+=q[s][i+1];

           }
           else
           {
               cnt-=q[s][i+1];

           }
        }
        tree[a].ma=cnt;tree[a].mi=cnt;
        return;
    }
    int mid=(tree[a].l+tree[a].r)/2;
    if(s<=mid)
        insert(a*2,s,time);
    else
        insert(a*2+1,s,time);
    pushup(a);
}

void build(int a,int sta,int end)
{
    tree[a].l=sta;
    tree[a].r=end;
    tree[a].ma=-inf;
    tree[a].mi=inf;
    if(sta==end)
        return;
    int mid=(sta+end)/2;
    build(a*2,sta,mid);
    build(a*2+1,mid+1,end);
    pushup(a);
}

void clear(int a,int s)
{
    if(tree[a].l==tree[a].r)
    {
        tree[a].ma=-inf;
        tree[a].mi=inf;
        return;
    }
    int mid=(tree[a].l+tree[a].r)/2;
    if(s<=mid)
        clear(a*2,s);
    else
        clear(a*2+1,s);
    pushup(a);
}

void init()
{
    memset(ans,0,sizeof(ans));
    memset(q,0,sizeof(q));
    int i;
    for(i=1;i<=op;i++)
    {
        scanf("%d",&que[i]);
        if(!que[i])
        {
            for(int j=1;j<=wei;j++)
            {
                scanf("%d",&q[i][j]);
            }
        }
        else
            scanf("%d",&q[i][0]);
    }
}

int main ()
{
    //freopen("d:\\in.txt","r",stdin);
    while(scanf("%d%d",&op,&wei)==2)
    {
       init();
       int ii;
       for(ii=0;ii<(1<<wei);ii++)       //二进制枚举状态
       {
          build(1,1,op);
          for(int i=1;i<=op;i++)
          {
              if(que[i]==1)
              {
                clear(1,q[i][0]);
              }
              else
              {
                insert(1,i,ii);
              }
              ans[i]=max(ans[i],tree[1].ma-tree[1].mi);
          }
       }
       for(int i=1;i<=op;i++)
        printf("%d\n",ans[i]);
    }
    return 0;
}


hdu acm1166线段树 hdu 1166线段树代码 立即下载

相关推荐

从ESP/ABS选型看轮速传感器:为什么你的车用了AK+PWM+7/14mA三种协议?

本文深入解析了汽车轮速传感器的三种主流协议(7/14mA电流型、PWM型和AK协议型)及其混合应用场景。通过对比不同协议的技术特点、成本效益和工程挑战,揭示了现代车辆采用多种传感器协议背后的设计逻辑,包括成本控制、性能平衡和冗余设计等关键因素。

weixin_29266679的博客 531

【Codeforces 1093G】Multidimensional Queries | 线段树、曼哈顿距离

题目大意: 给出一个nnn个kkk元组(k≤5)(k \le 5)(k≤5),支持两种操作: 1 i (b1,b2,b3,⋯bk)1\ i \ (b_1,b_2,b_3,\cdots b_k)1 i (b1​,b2​,b3​,⋯bk​),将第iii个kkk元组置换为当前kkk元组 2 l r2 \ l \ r2 l r ,询问[l,r][l,r][l,r]区间内两两之间最大的曼哈顿距离 题目思路: 转换为kkk维空间问题。

一只酷酷光儿的博客 425

【学习路线】 游戏客户端开发入门到进阶

游戏开发是一个交叉性极强的技术领域,对开发者提出了高维度的要求。作为初学者,不要急于求成,打牢基础、注重原理、勤于实践,你的成长将会非常快速而稳健。希望这份学习路线与书单能为你指明方向,迈出职业开发者的第一步。

hhw_hhw的博客 2128

【数据结构】最大曼哈顿距离

最大曼哈顿距离算法

cyy010617的博客 4884

Livox MID360与Fast-LIO2的实战部署指南:从驱动安装到点云处理

本文提供Livox MID360激光雷达与Fast-LIO2激光惯性里程计从零开始的实战部署指南。详细介绍了Ubuntu系统下的驱动安装、网络配置、点云数据验证以及Fast-LIO2算法的编译、参数配置与联合启动流程,帮助开发者快速搭建移动机器人SLAM系统,并包含关键参数调优与常见故障排查方法。

java5的博客 1023

AI量化投资开源平台——Qlib(微矿)的学习使用笔记(随缘更新)

Qlib 涵盖了量化投资的全过程,为用户的 AI 算法提供了高性能的底层基础架构,从框架设计上让用户可以更容易地应用 AI 算法来辅助解决量化投资的各个关键问题(例如 Alpha 预测,风险预测,市场动态性建模)。本文旨在记录一些面向初学者的基础内容。

in_void的博客 3133

n个点,求任意两点曼哈顿距离 的最大值

设点A(x1,y1),B(x2,y2); 则man(A,B)=|x1-x2|+|y1-y2|; 这种不好处理,我们把他变成相减的形式: (a * x1 + b * y1)- (a * x2 - b * y2) 其中a,b取值为:1,-1. 为什么两个括号的a相同? 显然:对|x1-x2|取掉绝对值后, x1,-x2 的符号同时改变,而我们要改成相减的形式,把-x2的负号消去,所以x1,x2的符合就相同了。 y1,y2同理。 得到上述式子后我们就可以这样做: 由于左右括号均只与某个点有关。所.

bjfu170203101的博客 7317

SCADA|KingSCADA通过组合框选择修改变量的值

《SCADA项目中组合框控件的使用方法》 本文详细介绍了SCADA系统中组合框(下拉框)控件的应用方法。通过具体示例演示如何实现:当选择"雷工笔记"时变量值为100,选择"雷工杂谈"时为200,选择"小李食代"时为300的功能。主要实现步骤包括:1)创建项目并添加组合框控件;2)设置Items选项及对应数值;3)创建内存变量;4)使用GetCurrentIndex()和GetItemData()方法;5)在选项变化事件中编写脚本。该控件在SCADA

做有价值的事,积累有价值的笔记! 864

HDU 4666 Hyperspace (曼哈顿距离+线段树维护极值)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4666 #include&lt;bits/stdc++.h&gt; using namespace std; #define debug puts("YES"); #define rep(x,y,z) for(int (x)=(y);(x)&lt;(z);(x)++) #define ll lon...

满月照亮的路 373

基于PyTorch+Transformer实现谣言检测系统

本项目使用基于`PyTorch+Transformer`的谣言检测模型,将文本中的谣言事件进行连续向量化,通过一维卷积神经网络的学习训练来挖掘表示文本深层的特征,避免了特征构建的问题,并能发现那些不容易被人发现的特征,从而产生更好的效果。

优快云 精品推荐 6349

ReAct 智能体 Agent:架构解析与实践拓展

ReAct 智能体 Agent 凭借其推理与行动协同的独特架构,在众多人工智能应用场景中展现出巨大的潜力。从智能办公到教育辅导,从智能家居到工业物联网,ReAct 智能体通过精准推理和高效行动,为用户提供了更加智能、便捷的服务体验。然而,在实际应用过程中,仍面临工具调用安全、模型持续学习、多智能体协作管理以及性能优化等多方面的挑战。通过合理的策略和技术创新,如强化工具审核机制、构建持续学习框架、设计高效协作协议和采用性能优化手段,我们有望逐步克服这些挑战,进一步提升 ReAct 智能体的性能和可靠性。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1686

hdu简单的线段树

地址:http://acm.hdu.edu.cn/showproblem.php?pid=1754 I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 26556    Accepted Submission

ten_three 1093

Java开发者终极抉择:IntelliJ IDEA vs VS Code —— 4大维度深度对比评测

🔥关注墨瑾轩,带你探索Java的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手!🚀🔥技术宝库已备好,就等你来挖掘!🚀🔥订阅墨瑾轩,智趣学习不孤单!🚀🔥即刻启航,编程之旅更有趣!🚀在Java开发领域,选择合适的集成开发环境(IDE)对于提高开发效率和代码质量至关重要。和(简称VS Code)是两个广受好评的开发工具,各自拥有独特的特性和庞大的用户群。本篇将从多个维度深入探讨这两款IDE对Java开发者来说的优劣,包括但不限于性能、用户体验、生态系统、调试能力、以及特定Java功能的支持等方面。

java专栏 8590

HDU - 4666 - Hyperspace(动态多维曼哈顿距离)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4666 题意:一开始点的个数为零,有两个操作就是0表示增加一个点,1表示删除一个点,每次操作都要输出最大曼哈顿距离。 思路:poj - 2926加强版,不同的是本题需要一个数据结构来维护最大值最小值,比如线段树,mu,或者搞两个堆。 multiset: #include <bits/st...

sugarbliss 392

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

HDU-4666 Hyperspace 曼哈顿距离

  题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4666   题意:动态的增加或者删掉k维空间的点,求每次操作后剩下的点集中的最大的麦哈顿距离。   如果是一维情况很好做,直接用个数据结构来维护就行了,那么多维情况怎么办?其实多维情况是可以降到一维情况的。考虑二维的情况:|xi-xj|+|yi-yj|,我们展开绝对值之后,就可以得到四个式子:(...

weixin_30662849的博客 173

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

HDU 4666 Hyperspace (线段树+曼哈顿距离+离线查询)

Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 1450    Accepted Submission(s): 708   Problem Description The great Mr.Smith ha...

满月照亮的路 318

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Hyperspace HDU - 4666

http://acm.hdu.edu.cn/showproblem.php?pid=4666 动态求最远曼哈顿距离 线段树维护区间最值就好 但是k维空间会有2^k种情况 只能离线每一种情况 最后么一个位置在所有情况中取最值 如果在线求的话 只能建2^m棵线段树 浪费太多没有必要的空间 #include <bits/stdc++.h> using namespace std; co...

sunyutian1998的博客 231

ACM的分类训练题集

1、数论 大概有素数测试(筛法),扩展欧几里得算法,同余模运算,高斯消元,中国剩余定理,莫比乌斯反演等等。 我不擅长这方面(数学烂,还好后期团队里有两位数学大神),不发表评论。 推荐题目: 同余模运算:poj2635, poj3292,poj1845,poj2115 素数测试与筛法:poj2191,poj1811 高斯消元:poj1681,poj1222

kaggle expert,全球排名前1000,清华计算机研究生,兴趣算法工程 1573

HDU 1754 线段树入门

1.做的第一道线段树的题,纯套模板,单点修改线段树,没什么要注意的点。 //裸 线段树的建立 线段树的更新 线段树的查找 //采用数组建树的方法 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; using namespace std; const int maxn=200000; int inte...

shadandeajian的博客 451

线段树——HDU - 1754 ,

辣鸡学线段树中。。。。。。感觉很神奇预备知识:1:线段树是一种二叉搜索树,它从上至下逐步将一个大区间划分成一些更小的单元区间,每个区间对应线段树中的一个节点:2:树中的每个节点代表着一段区间[L,R],每个节点(除叶子节点)的左儿子代表的区间为[L,mid],右儿子则为[mid+1,r]。可以发现对于一个节点来说,左右儿子所代表的区间加起来正好为当前节点的区间3:叶子节点的所代表的长度为1,根节点...

Abandoninged的博客 342

Codeforces 1093G题解(线段树维护k维空间最大曼哈顿距离)

题意是,给出n个k维空间下的点,然后q次操作,每次操作要么修改其中一个点的坐标,要么查询下标为[l,r]区间中所有点中两点的最大曼哈顿距离。 思路:参考blog:https://blog.youkuaiyun.com/Anxdada/article/details/81980574,里面讲了k维空间中的最大曼哈顿距离求法,然后利用这个方案改一改,用线段树来维护这些值就好了。 1 #...

weixin_34290096的博客 247

HDU 1754(线段树)

题目链接:点击打开链接题目大意:n个数字,m次操作,Q i j是查询i到j学生最高分,U i j是修改第i个学生的成绩为j。题目思路:线段树区间最值模板题..参照了好多模板才把我的区间求和模板变成了区间最值..现在好像两个模板在我脑海里有点打架了..慢慢来吧应该会好起来的。。以下是代码:#include&lt;iostream&gt; #include&lt;cstdio&gt; #include...

smilestruggler_Fly To Higher 325

HDU 4666 Hyperspace

Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 136    Accepted Submission(s): 66 Problem Description The great Mr.Smi

dongdongzhang_的专栏 1975

Hyperspace HDU - 4666 (最远曼哈顿距离模板题)

The great Mr.Smith has invented a hyperspace particle generator. The device is very powerful. The device can generate a hyperspace. In the hyperspace, particle may appear and disappear randomly. At th...

untilyouydc 313

hdu 5626 Clarke and points 最大曼哈顿距离

题目:点击打开链接 题意:给n( 分析:这题和poj2926那题一样。 |xi−xj|+|yi−yj|,拆绝对值可以得到: 正正:xi−xj+yi−yj=(xi+yi)−(xj+yj) 负负:−xi+xj−yi+yj=(−xi−yi)−(−xj−yj) 正负:xi−xj−yi+yj=(xi−yi)−(xj−yj) 负正:−xi+xj+yi−yj=(−xi+yi)−

01的世界 918

HDU 6435 (最远曼哈顿距离)

题意: 给一些主武器和副武器,每个武器有一个价值和最多五个属性值,选择一个主武器和一个副武器,使得价值加上五个属性的差值最大。 思路: 因为最多只有五个属性,而abs(x1-x2)=max(x1-x2,x2-x1),所以每个武器的每个属性对于最后的答案有两种情况,加上这个属性值或者减去这个属性值。 所以枚举属性值的每种加减情况,然后选主副武器相反的加减值相加,取最大值。每个值初始化为-INF。...

陋室 391
上一篇: uva10529 概率dp+区间dp
下一篇: hdu 5106 hdu 5435 数位dp
labrother
博客等级 码龄11年 2粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值