hdu3874
题解:
和上一题基本相同
插入的时候变一下数值
具体看http://www.cnblogs.com/xuanyiming/p/7921926.html
代码:
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=;
typedef long long ll;
struct Tree
{
ll num;
int ls,rs;
}T[N*];
int now,rt[N],la[N*],n,m,cnt=,x,y,k,a[N];
int build(int l,int r)
{
now++;
if (l==r)return now;
int k=now,mid=(l+r)/;
if (l<=mid)T[k].ls=build(l,mid);
if (mid<r)T[k].rs=build(mid+,r);
return k;
}
int insert(int x,int l,int r,int s,int kk)
{
now++;
if (l==r)
{
T[now].num=T[x].num+kk;
return now;
}
int k=now,mid=(l+r)/;
if (s<=mid)
{
T[k].ls=insert(T[x].ls,l,mid,s,kk);
T[k].rs=T[x].rs;
}
else
{
T[k].ls=T[x].ls;
T[k].rs=insert(T[x].rs,mid+,r,s,kk);
}
T[k].num=T[T[k].ls].num+T[T[k].rs].num;
return k;
}
ll find(int s,int x,int y,int l,int r)
{
if (l>y||r<x)return ;
if (x<=l&&y>=r)return T[s].num;
ll ans=;
int mid=(l+r)/;
if (x<=mid)ans+=find(T[s].ls,x,y,l,mid);
if (y>mid)ans+=find(T[s].rs,x,y,mid+,r);
return ans;
}
int main()
{
int cas;
scanf("%d",&cas);
while (cas--)
{
scanf("%d",&n);
memset(T,,sizeof T);
memset(la,,sizeof la);
cnt=now=;
for (int i=;i<=n;i++)scanf("%d",&a[i]);
scanf("%d",&m);
rt[]=build(,n);
for (int i=;i<=n;i++)
{
if (!la[a[i]])rt[i]=insert(rt[i-],,n,,a[i]);
else rt[i]=insert(rt[i-],,n,la[a[i]],a[i]);
la[a[i]]=i;
}
while (m--)
{
scanf("%d%d",&x,&y);
printf("%lld\n",find(rt[y],,x-,,n)-find(rt[x-],,x-,,n));
}
}
return ;
}
hdu3874的更多相关文章
- HDU3874 /HDU3333 树状数组 区间求不重复数和
Necklace Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- HDU-3874 Necklace 线段树+离线
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3874 比较简单的题,题意也好懂. 先O(n)求每个数左边第一次出现的与他相同的数的位置l[i].对询问 ...
- HDU3874 线段树 + 离线处理
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3874 , 线段树(或树状数组) + 离线处理 下午做了第一道离线处理的题目(HDU4417),多少有点 ...
- [转载]完全版线段树 by notonlysuccess大牛
原文出处:http://www.notonlysuccess.com/ (好像现在这个博客已经挂掉了,在网上找到的全部都是转载) 今天在清北学堂听课,听到了一些很令人吃惊的消息.至于这消息具体是啥,等 ...
- 【转】线段树完全版~by NotOnlySuccess
线段树完全版 ~by NotOnlySuccess 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时觉得挺自豪的,还去pku打广告,但是现在我自己都不太好意思去看那篇文章了,觉 ...
- 《完全版线段树》——notonlysuccess
转载自:NotOnlySuccess的博客 [完全版]线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时觉得挺自豪的,还去pku打广告,但是现在我自己都不太好意思去看那篇文 ...
- 【转】 线段树完全版 ~by NotOnlySuccess
载自:NotOnlySuccess的博客 [完全版]线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时觉得挺自豪的,还去pku打广告,但是现在我自己都不太好意思去看那篇文章 ...
- 【转载】完全版线段树 by notonlysuccess大牛
原文出处:http://www.notonlysuccess.com/ 今晚上比赛就考到了 排兵布阵啊,难受. [完全版]线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时 ...
随机推荐
- MFC、Qt、C#跨线程调用对象
MFC.Qt.C#都是面向对象的编程库 1.MFC不允许跨线程调用对象,即线程只能调用它本身分配了空间的对象 In a multi-threaded application written using ...
- Python3基础 A类作为B类的实例变量
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Bootstrap 使用教程 与jQuery的Ajax方法
jQuery.ajax(url,[settings]) 更加详细的内容参考 jQuery API 中文在线手册 概述 通过 HTTP 请求加载远程数据. jQuery 底层 AJAX 实现.简单 ...
- Linq in GroupBy GroupJoin
还是上一份的代码例子: public class Person { public int ID { get; set; } public string Name { get; set; } publi ...
- 导出数据库表为world文档说明,以及PowerDesigner导出表结构pdm设计文档
如何使用“mysql导出数据库结构为world工具”以及如何使用powerdesigner映射数据库模型 一.通过powerdesigner配置ojdbc 1.安装并打开powerdesigner,新 ...
- Luogu USACO Training 刷水记录
开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...
- [BZOJ4391][Usaco2015 dec]High Card Low Card dp+set+贪心
Description Bessie the cow is a huge fan of card games, which is quite surprising, given her lack of ...
- C# 查出数据表DataTable 清除一列中的重复项保留其他项
http://bbs.csdn.net/topics/391085792 DataTable 老表= 新表.AsEnumerable().GroupBy(p => p["姓名& ...
- Weex 简介
weex简介 Weex 是一套简单易用的跨平台开发方案,能以 web 的开发体验构建高性能.可扩展的 native 应用,为了做到这些,Weex 与 Vue 合作,使用 Vue 作为上层框架,并遵循 ...
- Java中++,--,前缀后缀表达值的不同,与^的值计算
package 习题1; /** * ++ -- 与 ^ 的一些计算 * @author SeeClanUkyo * */ public class Test4 { public static voi ...