poj 3419 Difference Is Beautiful 离线线段树

HFSS - 侧馈矩形微带天线设计与仿真 一、设计指标 中心频率:2.45GHz 介质板厚度:1.6mm 介质板相对介电常数:4.4 二、理论计算 辐射贴片宽度w=c2f(εr+12)−12w=\frac{c}{2 f}\left(\frac{\varepsilon_{r}+1}{2}\right)^{-\frac{1}{2}}w=2fc​(2εr​+1​)−21​ 辐射贴片长度L=cfεe−2ΔLL=\frac{c}{f \sqrt{\varepsilon_{\mathrm{e}}}}-2 \Delta LL=fεe​​c​−2ΔL 阅读详情
Difference Is Beautiful
Time Limit: 5000MS Memory Limit: 65536K
Total Submissions: 2102 Accepted: 656

Description

Mr. Flower's business is growing much faster than originally planned. He has now become the CEO of a world-famous beef corporation. However, the boss never lives a casual life because he should take charge of the subsidiary scattered all over the world. Every year, Mr. Flower needs to analyze the performance reports of these subsidiary companies.

Mr. Flower has N companies, and he numbered them with 0 to N – 1. All of the companies will give Mr. Flower a report about the development each year. Among all of the tedious data, only one thing draws Mr. Flower's attention – the turnover. Turnover of a company can be represented as an integer Pi: positive one represents the amount of profit-making while negative for loss-making.

In fact, Mr. Flower will not be angry with the companies running under deficit. He thinks these companies have a large room for future development. What dissatisfy him are those companies who created the same turnover. Because in his eyes, keeping more than one companies of the same turnover is not necessary.

Now we know the annual turnover of all companies (an integer sequence Pi, the ith represents the turnover of the ith company this year.). We say a number sequence is perfect if all of its numbers are different from each other. Mr. Flower wants to know the length of the longest consecutive perfect sequence in a certain interval [L, R] of the turnover sequence, can you help him?

Input

The first line of the input contains two integers N and M. N is the number of companies. M is the number of queries. (1 ≤ N, M ≤ 200000). The second line contains N integer numbers not exceeding 106 by their absolute values. The ith of them represents the turnover of the ith company this year. The following M lines contain query descriptions, each description consists of two numbers: L, R (0 ≤ L ≤ R ≤ N – 1) and represents the interval that Mr. Flower concerned.

Output

The output contains M lines. For each query, output the length of the longest consecutive perfect sequence between [L, R]  

Sample Input

9 2
2 5 4 1 2 3 6 2 4
0 8
2 6

Sample Output

6
5

Hint

The longest perfect sequence of the first query in the sample input is '5 4 1 2 3 6', so the answer for this query is 6.


题意很简单,就是问一个区间内最长的连续无重复元素的子序列的长度,有多组询问。


这题是在叉姐的魔法训练上看到的,我用的方法和正解不同,我是用离线线段树做的,有兴趣的小伙伴们也可以去看看其他的做法,也是很巧妙的。

这题当我看到数据量之后,而且是多组询问,我自然的就想到了用离线线段树来做,可能是最近这一类的题目做多了吧,现在看什么都像。。。

我们线段树的每个节点的意义就是以这个点作为起点,满足条件的最长的区间长度,首先我们预处理出每个数字左边第一个和他相同的数字的位置,这个因为数据量就1e6,所以很简单,不会的就去看我下面的代码好了,然后我们把所有的询问都读进来,再按照询问的右边界r从小到大排序。然后对于每组询问,我们把比右区间r小的节点都插入到线段树里并更新其他的节点,怎么插入呢?对于位于第i位的数字ai,他左边第一个和他相同的数字的位置是l[i],那么就把l[i]+1到i的所有节点都加1,因为这个区间里的所有数字都和ai不相同,所以最长区间都要加上ai,所以加1。对于第i+1个数,我们不是更新l[i+1]+1到i+1的所有节点,而是更新max(l[i],l[i+1])+1到i+1的所有区间,因为当l[i+1]比l[i]小的时候,因为a[i]和a[l[i]]相同,所以对于l[i+1]到l[i]这个区间里的节点已经不能再更新了,他们的最大长度已经确定了,所以我们在更新的时候要维护一个最大的l[i],然后对于每一组询问,就是一个线段树求区间最大值过程了。具体的细节就看代码就好了。。。


#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int maxn = 2e5+10;
int ma[maxn*4],b[maxn],l[maxn],add[maxn*4];
const int inf = 1e6+2;
int c[2000010];
struct aa{
    int l,r,id,ans;
}a[maxn];
int n,m;

bool cmp(aa i,aa j){
    return i.r<j.r;
}

bool cmp1(aa i,aa j){
    return i.id<j.id;
}

void pushdown(int rt){
    if(add[rt]){
        add[rt<<1]+=add[rt];
        add[rt<<1|1]+=add[rt];
        ma[rt<<1]+=add[rt];
        ma[rt<<1|1]+=add[rt];
        add[rt]=0;
    }
}

void update(int L,int R,int c,int l,int r,int rt){
    if(l>=L&&r<=R){
        add[rt]+=c;
        ma[rt]+=c;
        return ;
    }
    pushdown(rt);
    int mid=(l+r)/2;
    if(mid>=L) update(L,R,c,l,mid,rt<<1);
    if(mid+1<=R) update(L,R,c,mid+1,r,rt<<1|1);
    ma[rt]=max(ma[rt<<1],ma[rt<<1|1]);
}

int query(int L,int R,int l,int r,int rt){
    if(l>=L && r<=R)
        return ma[rt];
    pushdown(rt);
    int ans=0,mid=(l+r)/2;
    if(mid>=L) ans=max(ans,query(L,R,l,mid,rt<<1));
    if(mid+1<=R) ans=max(ans,query(L,R,mid+1,r,rt<<1|1));
    return ans;
}

int main()
{
    //freopen("in.txt","r",stdin);
    while(cin>>n>>m){
        memset(add,0,sizeof(add));
        memset(ma,0,sizeof(ma));
        memset(c,0,sizeof(c));
        for(int i=1;i<=n;i++)
            scanf("%d",&b[i]);
        for(int i=1;i<=n;i++){
            l[i]=c[b[i]+inf];
            c[b[i]+inf]=i;
        }
        for(int i=0;i<m;i++){
            scanf("%d %d",&a[i].l,&a[i].r);
            a[i].l++;
            a[i].r++;
            a[i].id=i;
        }
        sort(a,a+m,cmp);
        int cnt=1,maxx=0;
        for(int i=0;i<m;i++){
            while(cnt<=a[i].r){
                maxx=max(maxx,l[cnt]);
                update(maxx+1,cnt,1,1,n,1);
                cnt++;
            }
            a[i].ans=query(a[i].l,a[i].r,1,n,1);
        }
        sort(a,a+m,cmp1);
        for(int i=0;i<m;i++)
            printf("%d\n",a[i].ans);
    }
    return 0;
}


基于STM32设计的万能红外遥控器(学习型) 当前介绍了一种基于STM32微控制器设计的红外遥控器,支持接收解码功能和发送功能,可以将接收的码原样发送出去。 红外遥控器作为智能设备控制方式之一,在一定程度上满足了人们对于快速方便控制的需求。 当前设计的红外遥控器支持学习模式和发送模式。通过矩阵键盘上的数字键选择发送对应的控制码。 一共支持学习10个控制码,对应矩阵键盘上的数字。0~9。 阅读详情

相关推荐

如何在 Windows 11 上安装 ChatGPT:CMD + 图形界面两种方式

我没说在 Windows 11 上装 ChatGPT 应用有多难,但你要是知道有哪几种官方途径可用,事情就会顺一点,尤其是对新手。对大多数用户来说,商店应用就是正确的选择。如果你在受管理的设备上,或者想避开商店,那么通过 Edge 或 Chrome 装 PWA 是完全站得住脚的替代方案。不管你选哪条路,真正的收获都是把 ChatGPT 从浏览器标签页里挪出来,放进一个它真正像个工具的地方。把它固定到任务栏、配好 Alt + 空格,你就会纳闷以前没它是怎么干活的。

山岚的运维笔记 299

单调性+二分+RMQ-poj-3419-Difference Is Beautiful

题目链接: http://poj.org/problem?id=3419 题目大意: 给n个数(n 解题思路: o(n^2)算法肯定会超时,所以想能否优化到o(nlgn),利用单调是关键。 首先可以预处理下记录:dp[i]表示第i个位置满足没有相同元素的情况下向前能够延伸到的最早位置,la[i]表示数i在之前出现的最迟位置,注意有负数,统一加上1000000,可以借用la[i]求出

cc_again的专栏 1466

高速光耦在隔离串口通信中的选型与优化策略

本文深入探讨了高速光耦在隔离串口通信中的关键作用与选型优化策略。针对串口通信中因普通光耦响应慢导致的误码问题,文章详细分析了响应时间、电流传输比、供电电压与隔离耐压等核心选型指标,并对比了6N137、HCPL-0601等主流型号。同时,提供了电路设计、PCB布局的优化技巧及实用的调试指南,旨在帮助工程师实现高速、稳定的隔离串口通信。

grpc6streamer的博客 322

poj 3419 Difference Is Beautiful (区间最长连续不重复数 dp+二分+RMQ)

Difference Is Beautiful Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1893   Accepted: 579 Description Mr. Flower's business is growing much faster than or

To be what you what to be! 2013

01 高等数学 上下册知识点总结

极限与连续 8个等价无穷小 8个常用泰勒公式 高数复习——多元函数微分学 一、概念 一元函数: 可微<=>可导 △y=A△x+o(△x)dy=AdxA=f′(x)\triangle y=A\triangle x+o(\triangle x)\\dy=Adx\\A=f'(x)△y=A△x+o(△x)dy=AdxA=f′(x) 多元函数: 可微=>可导(可导指两个偏导数存在,反之不成立) 可微=>连续(反之不成立) △z=A△x+B△y+o(p)dz=Adx+BdyA=δzδxdx

qq_44292038的博客 1万+

glm-4v-9b环境配置全攻略:从CUDA版本冲突到bitsandbytes异常排查(RTX A4000实测)

本文详细介绍了在RTX A4000显卡上配置GLM-4V-9B多模态大模型的完整流程,重点解决CUDA版本冲突和bitsandbytes异常问题。通过4-bit量化技术显著降低显存占用,提供从环境预检到量化部署的实战指南,帮助开发者在有限显存环境下高效运行大模型。

weixin_30369041的博客 407

poj3190Stall Reservations(贪心+优先队列)

题目链接: 啊哈哈,点我点我 思路: 首先根据挤奶时间的先后顺序排序。。。然后将第一头牛加入优先队列。。然后就是加入优先队列的牛应该根据越早结束挤奶那么优先级更高,如果时间结束点相等,那么开始时间早的优先级高。。。 然后从前向后枚举。如果碰到有牛的挤奶时间的开始值大于优先队列的首部的结束值,那么说明这两头牛可以一起公用一个挤奶房。。然后从优先队列中删除这头牛。。那么这个问题就得到解决了

大洋深处 4054

AUTOSAR NvM 实车故障深度剖析:车载存储问题快速定位与工程解决方案

软件配置与代码逻辑无问题时,排查底层驱动与ECU硬件,步骤如下:底层驱动排查:排查Fls/Eep驱动配置,是否适配目标MCU(如TC397、S32K),编程/擦除/读取时序是否合理;检查Fls/Eep驱动错误处理逻辑,是否未处理Flash编程失败、读取错误等异常;验证Flash高速编程模式是否启用,是否能提升写入/读取速度;排查MemIf层配置,是否正确对接NvM与Fls/Eep驱动,是否存在调度延迟。

getusushu的博客 78

【POJ3419】Difference Is Beautiful

Difference Is Beautiful Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2247   Accepted: 703 Description Mr. Flower's business is growing much faster than

better_space的博客 427

RK3568笔记十七:LVGL v8.2移植

若该文为原创文章,转载请注明原文出处。本文介绍嵌入式图形库移植到Linux开发板ATK-RK3568上的步骤。

4232

Autosar Configuration(十四)SomeIP之配置SoAd

本文主要介绍SomeIp协议栈中的SoAd在Configurator中的详细配置

king110108的专栏 2600

poj 3419 Difference Is Beautiful (dp+二分+RMQ或者dp+离线线段树)

Difference Is BeautifulTime Limit: 5000MS Memory Limit: 65536K Total Submissions: 2141 Accepted: 672 DescriptionMr. Flower’s business is growing much faster than originally planned. He has n

Miracle_ma的专栏 759

基于STM32、HAL库的MPX5500DP气压传感器 驱动程序设计

define MPX5500DP_MIN_VOLTAGE 0.2f // 最小输出电压(V)#define MPX5500DP_MAX_VOLTAGE 4.7f // 最大输出电压(V)#define MPX5500DP_MIN_PRESSURE 0.0f // 最小压力(kPa)#define MPX5500DP_MAX_PRESSURE 500.0f // 最大压力(kPa)* @brief 读取压力值(kPa)// 计算压力值 (线性转换)

corlin6688的博客 196

POJ_3419 Difference Is Beautiful(ST表)

Difference Is Beautiful Time Limit: 5000MS Memory Limit: 65536K Problem Description Mr. Flower’s business is growing much faster than originally planned. He has now become the CEO of a world-famous b...

sigh_的博客 333

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

POJ 3419 Difference Is Beautiful(RMQ变形)

题意:N个数,M个询问,每个询问为一个区间,求区间最长连续子序列,要求每个数都不同(perfect sequence,简称PS)。 题解:很容易求出以每个数为结尾的ps,也就是求区间的最大值。有一个不同就是长度可能会超出询问范围,所以先对PS的首位置二分,然后RMQ。注意一点,序列有可能出现负数,所以先加最大值变为正数。其实也不算变形,挺裸的…… 这题卡线段树,然而我只会线段树,心塞…… 代...

weixin_30537451的博客 257

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

POJ 3419 Difference Is Beautiful

Description Mr. Flower's business is growing much faster than originally planned. He has now become the CEO of a world-famous beef corporation. However, the boss never lives a casual life because

Occult 698

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

poj 3419 求一段区间内的最长不重复子串

这个题实际上预处理出两个数组就好了,st[i]表示i位置往左最远能延伸到哪里,【st[i],i】为不重复子串 那么在询问一段区间内最长的不重复子串是多长的时候有两种情况 , 对于L R区间内所有的【st[i] , i】,有一部分st[i]是 由于st是单调的,显然,,,所以可以二分找出最右的那个i满足st[i]

努力奋斗才能梦想成真 1577

杭电1230java,HDU ZOJ POJ 杭电浙大北大 3大OJAC代码4000份大合集

【实例简介】利用vjudge源码改造爬虫抓取vjudge全局共享答案资源。ACMer,请用于参考思路,对拍代码,不要直接提交。【实例截图】【核心代码】2b14e69c-a8ca-4274-9c29-473316da4bbc├── HDU│ ├── 1000.cpp│ ├── 1001.cpp│ ├── 1002.cpp│ ├── 1003.cpp│ ├── 1004.cpp│...

weixin_32301287的博客 517

poj 1682 Clans on the Three Gorges dp(好题)

这是poj上的一道比较好的动态规划的题目,奈何很少有人做过这道题,所以,我想把它发上来给大家看一下,应该会有收获吧。

cstdio_hao的专栏 963

poj 2385 Apple Catching dp

http://poj.org/problem?id=2385 题意:有两棵苹果树,每分钟都会有一棵树上会掉下来一个苹果,你必须要站在这棵树下才能接到这棵树掉下来的苹果,你可以在两棵树之间来回走动,而且不花费时间,但是来回走的次数不超过w次,现在告诉你每分钟从哪棵树上会掉下来苹果,问你最多能接着多少个,你的其实位置实在第一棵树下。 思路:用dp[i][j][k]表示第i分钟,已经来回走了

cstdio_hao的专栏 756

poj 1679 The Unique MST 最小生成树

点击打开链接 http://poj.org/problem?id=1679 题意:给一个无向图,问最小生成树是否唯一,如果唯一就输出最小生成树的所有边的权值的和,如果不唯一,那么就输出Not Unique! 思路:在用prime算法求最小生成树的过程中,在找到权值最小的一个节点之后,先判断一下,这个节点的权值是否可以由好几条路径求得,并且权值都等于当前权值,如果是的话,那么最小生成树就不唯

cstdio_hao的专栏 746

poj 2137 Cowties dp

http://poj.org/problem?id=2137 题意:有n头牛,xi

cstdio_hao的专栏 740

poj 3228 Gold Transportation 二分+最大流

一道比较经典的网络流题,值得一看

cstdio_hao的专栏 644

poj 1681 Painter's Problem 高斯消元

http://poj.org/problem?id=1681

cstdio_hao的专栏 630

poj 2142 The Balance 扩展欧几里得

点击打开题目链接 题意:

cstdio_hao的专栏 610

poj 1692 Crossed Matchings DP

点击打开题目链接 题意:给

cstdio_hao的专栏 589
上一篇: poj 3237 树链剖分+线段树
下一篇: hdu 2476 String painter(区间dp)
ACMer_浩
博客等级 码龄12年 0粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值