HDU 3333&&HDU-3874 Necklace 离线树状数组
来源:互联网 发布:淘宝高佣活动 编辑:程序博客网 时间:2024/05/07 19:31
这题是要求一段区间内的不重复的数字之和。我们通过对询问区间的右端点进行排序,然后记录每一数字的上一次的出现的位置,由于询问都是不回溯的那么就可以线性的更新了。
#include <cstdio>#include <map>#include <algorithm>using namespace std;int N,M;int num[50050];long long C[50050];struct Node{ int L; int R; int id;}P[200020];long long ans[200020];int lowbit(int x){ return x&(-x);}long long sum(int x){ long long ret=0; while (x>0) { ret+=C[x];x-=lowbit(x); } return ret;}int add(int x,long long d){ while (x<=N){ C[x]+=d;x+=lowbit(x); } return 0;}long long query(int L,int R){ return sum(R)-sum(L-1);}int cmp(Node a,Node b){ return a.R<b.R;}int main (){ int T;scanf("%d",&T); while (T--){ map <int ,int > vis; vis.clear(); scanf("%d",&N); for (int i=0;i<N;i++) scanf("%d",&num[i]),C[i]=0; C[N]=0; scanf("%d",&M); for (int i=0;i<M;i++){ scanf("%d%d",&P[i].L,&P[i].R),P[i].id=i; if (P[i].L>P[i].R){ int c=P[i].R; P[i].R=P[i].L; P[i].L=c; } } sort(P,P+M,cmp); int j=0; for (int i=0;i<M;i++){ while (j<N&&j+1<=P[i].R){ if (vis[num[j]]!=0) { add(vis[num[j]],-num[j]); vis[num[j]]=j+1; add(vis[num[j]],num[j]); } else { vis[num[j]]=j+1; add(vis[num[j]],num[j]); } j++; } ans[P[i].id]=query(P[i].L,P[i].R); } for (int i=0;i<M;i++){ printf("%I64d\n",ans[i]); } } return 0;}就这道题卡了我三次T_T 读题必须要认真啊
这道题的区间可能是反的,可能给出的区间前面大后面小,需要判断一下。
写树状数组时下标最好都从1开始,但是排序时不要忘了此时是n+1个元素。
0 0
- HDU 3333&&HDU-3874 Necklace 离线树状数组
- hdu 3874 Necklace(离线+树状数组)
- HDU 3874 Necklace 树状数组 + 离线处理
- HDU 3874 Necklace(树状数组+离线处理)
- HDU 3874 Necklace 离线+树状数组
- hdu 3874 Necklace 树状数组 离线操作
- HDU 3874 Necklace(树状数组离线处理)
- HDU 3874 Necklace(树状数组离线处理)
- HDU 3874 Necklace(树状数组的离线操作)
- HDU 3874 Necklace(树状数组 && 离线操作)
- HDU 3874 Necklace (树状数组+离线操作)
- HDU 3874 Necklace 树状数组
- HDU 3874 Necklace (树状数组)
- Hdu 3874 Necklace 树状数组
- hdu 3874 Necklace (树状数组)
- HDU 3874 Necklace 树状数组的应用
- hdu 3874 Necklace【树状数组简单应用】
- HDU 3874 Necklace(树状数组)
- 现在公开一个DHT网络爬虫
- 一些常用的图片加载技术,一并记录在此
- VC6.0 unresolved external symbol _snprintf
- kldjfddgfd
- 闲暇时间看了下DHT网络
- HDU 3333&&HDU-3874 Necklace 离线树状数组
- PXA270 BootLoader 架构设计分析
- h264的rtp分包问题
- ArcGIS Server 发布带有中文标注服务乱码的问题
- shell简介
- 我从谷歌学到的那些事:Toilet文化、代码实验室
- 芳杉苯倥蔷比锻挛婪俸呈贩恐贩挝
- 苹果开发者帐号(Company)申请流程
- 谇茁道腊采既赶也樟啬缮孛识灰硕