当前位置: 首页 > news >正文

焦作网站建设哪家好网站开发设计流程图

焦作网站建设哪家好,网站开发设计流程图,域名哪个网站好,怎么看一个网站做得好不好传送门:牛客 题目描述: HH有一串由各种漂亮的贝壳组成的项链。 HH相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一 段贝壳,思考它们所表达的含义。 HH不断地收集新的贝壳,因此他的项链变得越来越长。 有一天&#…

传送门:牛客

题目描述:

HH有一串由各种漂亮的贝壳组成的项链。
HH相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一 段贝壳,思考它们所表达的含义。
HH不断地收集新的贝壳,因此他的项链变得越来越长。
有一天,他突然提出了一 个问题:某一段贝壳中,包含了多少种不同的贝壳?
这个问题很难回答。。。因为项链实在是太长了。于是,他只 好求助睿智的你,来解决这个问题
输入:
6
1 2 3 4 3 5
3
1 2 
3 5
2 6
输出:
2
2
4

对于本题,我们发现可以进行这样的一个转化.假设我们找出了一个数字前一次出现的地方,用last[]last[]last[]记录,那么对于一个询问区间[l,r][l,r][l,r]来说,此时我们只需要找出区间内有几个数字的lastlastlast值是小于lll即可.那么此时我们需要解决的问题就是:
∑i=lrlast[i]<l\sum_{i=l}^{r}{last[i]<l}i=lrlast[i]<l
这是一个主席树的经典模型,直接套主席树即可解决

对于主席树(可持久化线段树),网上有大量的博客讲解(不乏有详细的),此处就不在赘述了.

但是对于此题来说,比较麻烦的是此时我们又出现了0这样的数字,总所周知,朴素的主席树用的是权值线段树的思想,此时我们是无法维护0的.所以我们需要将所有数字的位置都往后移动一位,也就是将2当做我们的贝壳的开始,此时就可以进行维护了

下面是具体的代码部分:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
#define maxn 1000010
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int last[maxn];
int n,m;
struct PerSegment_tree {int l,r,lnum,rnum,sum;
}tree[maxn<<5];int cnt=0;int RT[maxn];
int build(int l,int r) {int p=++cnt;tree[p].l=l;tree[p].r=r;if(l==r) return p;int mid=(l+r)>>1;tree[p].lnum=build(l,mid);tree[p].rnum=build(mid+1,r);return p;
}
int update(int pre,int val) {int p=++cnt;tree[p]=tree[pre];tree[p].sum+=1;if(tree[p].l==tree[p].r) return p;int mid=(tree[p].l+tree[p].r)>>1;if(val<=mid) tree[p].lnum=update(tree[pre].lnum,val);else tree[p].rnum=update(tree[pre].rnum,val);return p;
}
ll query(int pre,int now,int l,int r,int k) {if(l==r) return tree[now].sum-tree[pre].sum;int mid=(l+r)>>1;if(k<=mid) return query(tree[pre].lnum,tree[now].lnum,l,mid,k);else {int s=tree[tree[now].lnum].sum-tree[tree[pre].lnum].sum;return (ll)s+query(tree[pre].rnum,tree[now].rnum,mid+1,r,k);}
}
int main() {n=read();for(int i=1;i<=n+1;i++) last[i]=1;RT[1]=build(1,n+1);for(int i=2;i<=n+1;i++) {int a=read();RT[i]=update(RT[i-1],last[a]);last[a]=i;}m=read();for(int i=1;i<=m;i++) {int l=read(),r=read();l++;r++;printf("%lld\n",query(RT[l-1],RT[r],1,n+1,l-1));}return 0;
}
http://www.yayakq.cn/news/794266/

相关文章:

  • 消费者联盟网站怎么做桂林生活网爆料
  • 营销型网站套餐vs做网站如何输出
  • 如何给网站文字做超链接如何做外贸网站推广
  • 新浪网网站的建设费用预算网站集约建设原因
  • 怎么建设推广网站网站通栏图片代码
  • 网站开发人员工工资网站服务器的费用
  • 群辉做网站服务器知乎关键词排名
  • 找公司做网站需要注意北京迈程网络网站建设公司
  • 网站建设要花钱吗免费建站的
  • jquery 网站源码购买网站建设平台
  • 扁平化设计网站三网合一网站远吗
  • 网站开发公司排行榜一般做门户网站多少钱
  • 移动端快速建站南京银城建设 网站
  • 佛山企业网站建设教程婚纱摄影手机网站模板
  • 网站建设分工明细表深圳网站设计公司设计
  • 网站制作厂家常见的网站推广方法有哪些
  • 做做做做网站死链对网站链轮的影响
  • 电商网站建设需要多少钱一年网络广告的类型
  • 无为县城乡建设局网站wordpress分类目录代码
  • 做海报找背景图有哪些网站公明做企业网站
  • 网页制作的网站中国风手机网站模板
  • 网站策划文案房屋设计师室内设计
  • 企业做网站带来的好处wordpress按分类设置seo
  • 所有网站302跳转百度用单页做网站 文章直接写上去 百度收录关键词吗
  • 网站正在建设中的产品外观设计公司
  • 江西雄基建设网站广州安全教育平台入口登录
  • 哪家可以做网站网站制作需求表
  • 鄂州网站制作太原网站建设随州
  • 网站前台建设需要哪些技术知识用dw做音乐网站系统的代码
  • 想办个网站怎么做wordpress更换服务器搬家教程