【线段树】FREQUENT - Frequent values(luogu-SP1684 / poj 3368)

FREQUENT - Frequent values

luogu-SP1684

poj 3368

题目大意:

有一个单调不降序列,让你求出某些区间内的出现次数最多的数出现的次数(有多组数据,以0结尾)

输入样例

10 3
-1 -1 1 1 1 1 3 10 10 10
2 3
1 10
5 10
0

输出样例

1
4
3

数据范围:

1≤n,q≤1000001 ≤ n, q ≤ 1000001n,q100000
−100000≤ai≤100000-100000 ≤ a _{i} ≤ 100000100000ai100000

解题思路:

用线段树,同时要保存左边数字出现的次数,和右边数字出现的次数,如果中间相等,就可以尝试拼接

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#define max(x,y) (x)>(y)?(x):(y)
using namespace std;
int n,m,x,y,s[100500];
struct rec
{int l,r,num,ls,rs;
}tree[800500];
void up(int dep,int mid)//传递
{tree[dep].num=max(tree[dep*2].num,tree[dep*2+1].num);tree[dep].ls=tree[dep*2].ls;//ls是左边的数出现的次数tree[dep].rs=tree[dep*2+1].rs;//rs是右边的数出现的次数if (s[mid]==s[mid+1])tree[dep].num=max(tree[dep].num,tree[dep*2].rs+tree[dep*2+1].ls);//如果可以就合并if (s[tree[dep].l]==s[mid+1])tree[dep].ls+=tree[dep*2+1].ls;//同上if (s[mid]==s[tree[dep].r])tree[dep].rs+=tree[dep*2].rs;return;
}
void make(int dep)//建树
{if (tree[dep].l==tree[dep].r){tree[dep].num=1;tree[dep].ls=1;tree[dep].rs=1;return;}int mid=(tree[dep].l+tree[dep].r)>>1;tree[dep*2].l=tree[dep].l,tree[dep*2].r=mid;tree[dep*2+1].l=mid+1,tree[dep*2+1].r=tree[dep].r;make(dep*2);make(dep*2+1);up(dep,mid);return;
}
int find(int dep,int l,int r)
{if (tree[dep].l==l&&tree[dep].r==r) return tree[dep].num;if (tree[dep].l>=tree[dep].r) return 0;int mid=(tree[dep].l+tree[dep].r)>>1,sum=1,sum1=1;if (r<=mid) return find(dep*2,l,r);//在左边if (l>mid) return find(dep*2+1,l,r);//在右边if (s[mid]==s[mid+1]) sum=min(mid-l+1,tree[dep*2].rs)+min(r-mid,tree[dep*2+1].ls);//合并sum1=max(find(dep*2,l,mid),find(dep*2+1,mid+1,r));//去一个更优的return max(sum,sum1);//两种方法选一种
}
int main()
{while(scanf("%d",&n),n)//多组数据{memset(tree,0,sizeof(tree));scanf("%d",&m);for (int i=1;i<=n;++i)scanf("%d",&s[i]);tree[1].l=1;tree[1].r=n;make(1);for (int i=1;i<=m;++i){scanf("%d %d",&x,&y);printf("%d\n",find(1,x,y));}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core 2.0 MVC项目实战

一、前言毕业后入职现在的公司快有一个月了&#xff0c;公司主要的产品用的是C/S架构&#xff0c;再加上自己现在还在学习维护很老的delphi项目&#xff0c;还是有很多不情愿的。之前实习时主要是做.NET的B/S架构的项目&#xff0c;主要还是用的那种传统的开发模式&#xff0c;…

Codeforces1045I

Codeforces1045I 做法&#xff1a;如果至多有一种字母出现奇数次&#xff0c;则合法&#xff0c;因此把整个串用一个26位2进制数表示&#xff0c;对于每一个数&#xff0c;枚举可能的对应串的状态即可。 #include <bits/stdc.h> typedef long long ll; inline int read()…

[2020.10.30NOIP模拟赛]字符串水题【SA,树状数组】

正题 题目大意 一个字符串SSS。 若干个询问&#xff0c;每次询问一个串TTT和l,rl,rl,r。询问有多少个TTT和SSS的公共子串满足和为[l,r][l,r][l,r] 解题思路 考虑枚举子串左端&#xff0c;那么右串一定在一个范围内&#xff0c;考虑如何求出一个范围。 考虑用后缀数组解决这…

开始水题发博客

以后每次能AC CodeForces的题&#xff0c;就发一次博客 尽量带讲解吧。。 我这人很懒的。。 日期 0:32 2019-10-12

WebApiClient百度地图服务接口实践

1. 文章目的随着WebApiClient的不断完善&#xff0c;越来越多开发者选择WebApiClient替换原生的HttpClient&#xff0c;然而在应用到实际项目中多多少少会遇到一些项目结合上的疑问和困难&#xff0c;本文将以WebApiClient使用者的身份&#xff0c;在Asp.net core mvc项目中使用…

【DP】数字游戏(jzoj 2131)

数字游戏 jzoj 2131 题目大意&#xff1a; 有n个数&#xff0c;每个数有相应的aia_iai​和bib_ibi​&#xff0c;当选了一个数后结果加上aia_iai​,其他数分别减去他们自己的aja_jaj​&#xff0c;现在让你选m个数&#xff0c;结果最大是多少 输入样例 3 3 10 20 30 4 5 6…

Codeforces1045G

Codeforces1045G 做法&#xff1a;按半径r从大到小枚举&#xff0c;对于每个q&#xff0c;枚举对应位置可能的q值&#xff0c;对每个q&#xff0c;维护出现的坐标x&#xff0c;每次查询半径内的已经出现的坐标的数目即可。需要实现一个插入单点加&#xff0c;查询区间和的操作&…

[2020.10.30NOIP模拟赛]小鱼吃大鱼【RMQ】

正题 题目大意 nnn个数&#xff0c;求一对(i,j)(i,j)(i,j)要求最大化max{ai,aj}%min{ai,aj}max\{a_i,a_j\}\% min\{a_i,a_j\}max{ai​,aj​}%min{ai​,aj​} 解题思路 我们考虑枚举小的那一个iii&#xff0c;显然在ki∼k(i1)−1ki\sim k(i1)-1ki∼k(i1)−1这段范围都是要减去一…

CodeForces 1191A---Tokitsukaze and Enhancement

原题链接 Describe: Tokitsukaze is one of the characters in the game “Kantai Collection”. In this game, every character has a common attribute — health points, shortened to HP. In general, different values of HP are grouped into 4 categories: Category A…

Dependency injection in .NET Core的最佳实践

我们知道依赖注入&#xff08;DI&#xff09;是一种实现对象及其协作者或依赖关系之间松散耦合的技术。 ASP.NET Core包含一个简单的内建容器来支持构造器注入。我们试图将DI的最佳实践带到.NET Core应用程序中&#xff0c;这表现在以下方面&#xff1a;构造器注入注册组件DI i…

【状压DP】剑之修炼(jzoj 2130)

剑之修炼 jzoj 2130 题目大意&#xff1a; 在一个位置上有一个人&#xff0c;同时还有NNN&#xff08;N⩽10N \leqslant 10N⩽10&#xff09;个怪物&#xff0c;这个人会不停地释放技能&#xff0c;技能可以瞬间杀死周围8个格子上的怪物&#xff0c;行走速度是每个单位时间走…

GYM 101908F - Music Festival

GYM 101908F - Music Festival 做法&#xff1a;将节目按照右端点排序&#xff0c;\(dp[i][st][0/1]\)表示前i个节目&#xff0c;选择的stage的状态用一个n位二进制数表示为st&#xff0c;第i个节目选或不选的最大值&#xff0c;转移时用线段树优化一下。 #include <bits/st…

CodeForces - 1189A ----Keanu Reeves

原题传送 INPUT Output Examples 题意&#xff1a; 有个长度我n的字符串&#xff0c;然后把它分成k分&#xff0c;要使每份都good且为正数&#xff08;good的要求为该数中0和1的个数不同&#xff09;&#xff0c;求输出最小的结果&#xff08;答案不唯一输出一个即可&#xf…

P5072-[Ynoi2015]盼君勿忘【莫队,根号分治】

正题 题目链接:https://www.luogu.com.cn/problem/P5072 题目大意 nnn个数&#xff0c;mmm个询问(l,r,p)(l,r,p)(l,r,p)表示询问[l,r][l,r][l,r]的所有子序列的和模ppp。 解题思路 一个出现了kkk次的数会产生贡献2r−l1−2r−l1−k2^{r-l1}-2^{r-l1-k}2r−l1−2r−l1−k次贡献…

WebApiClient的接口输入验证

1. 文章目的随着WebApiClient的不断完善&#xff0c;越来越多开发者选择WebApiClient替换原生的HttpClient&#xff0c;本文将介绍WebApiClient的接口参数输入有效性验证的新特性。2.DataAnnotations介绍在asp.net mvc服务端编程中&#xff0c;我们在创建模型的时候&#xff0c…

【二分】【SPFA】架设电话线(jzoj 2132)

架设电话线 jzoj 2132 题目大意&#xff1a; 给你一个图&#xff0c;让你从1走到n&#xff0c;问如果可以使k条路的代价变为0&#xff08;自选&#xff09;&#xff0c;那途中走的路的最大值最小是多少 样例输入 5 7 1 1 2 5 3 1 4 2 4 8 3 2 3 5 2 9 3 4 7 4 5 6输入说明…

HDU5528 - Count a * b

HDU5528 - Count a * b 做法&#xff1a;求\(\sum_{m|n}(m^2 - \sum_{i1}^{m}\sum_{j1}^m [m|(ij)])\) \(h(m) \sum_{i1}^{m}\sum_{j1}^m [m|(ij)] \sum_{i1}^m\sum_{j1}^m [\frac{m}{(i,m)}|\frac{i}{(i,m)}j]\) $ \sum_{i1}^m\sum_{j1}^m [\frac{m}{(i,m)}|j] \sum_{i1}^…

CodeForces - 1189B Number Circle

原题传送器<----点我 **题意&#xff1a;**n个数字&#xff0c;请你给它们排个序围成一个环&#xff0c;满足任意一个数两边的数之和大于它本身&#xff0c;例如题目给的图&#xff08;左图为正确答案&#xff09;&#xff0c;如果不存在这样的环就输出NO。 难度★ 题解 …

P7044-[MCOI-03]括号【组合数学】

正题 题目链接:https://www.luogu.com.cn/problem/P7044?contestId36089 题目大意 一个括号序列&#xff0c;0级偏值定义为其中不合法的括号数量。 kkk级偏值定义为它所有子串的k−1k-1k−1级偏值的和。 求这个括号序列的kkk级偏值。 解题思路 后文中我们定义G(x,y)Cxy−1y…

在 .NET Core 应用中使用 NHibernate

NHibernate 最近发布了 5.1.3 版本&#xff0c; 支持 .NET Standard 2.0 &#xff0c; 这意味着可以在 .NET Core 2.0 应用中使用&#xff0c; 本文就已 WebAPI 应用为例&#xff0c; 介绍一下如何在 .NET Core 应用中如何使用 NHibernate 。1、 新建一个基于 .NET Core 的 We…