【SDOI2009】HH的项链(树状数组)
来源:互联网 发布:线下数据采集 编辑:程序博客网 时间:2024/05/21 18:39
题目:
我是超链接
题解:
把第一次在这个区间内出现的所有数字标1,求区间和......
在第一次出现这个数的地方标1,当你的左边(d[i].l)路过的时候,你的1应该消失并去到下一个这样的数字上-----基本思路
(或者:当你的右边(d[i].r)路过的时候,你的1应该出现并让上一个这样的数消失
代码:
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int c[50005],a[50005],ans[50005],pd[1000005];int n,m;struct hh{int l,r,num;}d[50005];int cmp(hh a,hh b){return a.r<b.r;}void add(int loc,int value){for (int i=loc;i<=n;i+=i&(-i)) c[i]+=value;}int qurry(int loc){int ans=0;for (int i=loc;i>0;i-=i&(-i)) ans+=c[i];return ans;}int main(){int i,j;scanf("%d",&n);for (i=1;i<=n;i++) scanf("%d",&a[i]);scanf("%d",&m);for (i=1;i<=m;i++){scanf("%d%d",&d[i].l,&d[i].r);d[i].num=i;} sort(d+1,d+m+1,cmp);int l=0,r=1,ll,k=1; for (i=1;i<=n;i++){ if (!pd[a[i]]) { pd[a[i]]=i; add(i,1);}else{add(pd[a[i]],-1);add(i,1); pd[a[i]]=i;}while (d[k].r==i){ans[d[k].num]=qurry(d[k].r)-qurry(d[k].l-1);k++;}} for (i=1;i<=m;i++) printf("%d\n",ans[i]);}
0 0
- 【SDOI2009】HH的项链(树状数组)
- 【SDOI2009】【树状数组】HH的项链
- 1878: [SDOI2009]HH的项链 树状数组
- 【bzoj1978】 [SDOI2009]HH的项链 树状数组
- BZOJ 1878 【SDOI2009】HH的项链(离线+树状数组)
- BZOJ 1878 【SDOI2009】HH的项链(离线+树状数组)
- 洛谷1972 [SDOI2009]HH的项链(链表+树状数组)
- 【SDOI2009】【bzoj1878】HH的项链(离线+树状数组)
- bzoj 1878: [SDOI2009]HH的项链(树状数组)
- bzoj1878: [SDOI2009]HH的项链(树状数组+离线处理)
- bzoj 1878 [SDOI2009]HH的项链 树状数组 离线查询
- 【COGS】421 [SDOI2009] HH的项链 树状数组
- BZOJ 1878 [SDOI2009]HH的项链 离线+树状数组
- 【bzoj1878】[SDOI2009]HH的项链 树状数组+离线
- BZOJ 1878: [SDOI2009]HH的项链 树状数组+乱搞
- BZOJ1878: [SDOI2009]HH的项链(树状数组+离线)
- [SDOI2009][BZOJ1878][前缀和][树状数组]HH的项链
- BZOJ 1878: [SDOI2009]HH的项链 树状数组 离线维护
- 【笔记】关于spring mvc RequestMapping注解
- 算法
- LD#29
- opensslEVp函数系列详解
- Iperf3.1.3移植与使用
- 【SDOI2009】HH的项链(树状数组)
- 华硕 X99 E WS 安装 macOS Sierra 10.12.4
- 线索二叉树
- 插值算法总结
- Mac下的AS快捷键
- hist的使用
- LeedCode 之 Reverse Integer
- 二叉树的递归建立和遍历
- 集合框架-静态导入