[HDU3333]Turing Tree
2024-09-01 09:27:38
莫队模板题...
不过树状数组也可以做...跟HH的项链几乎一模一样,离线询问,然后记录前缀,更新的时候把前缀删掉就好了,然而这题开long long,卡空间
//hgs AK IOI,IMO,ICHO,IPHO
#include<bits/stdc++.h>
#define int long long
#define writeln(x) write(x),puts("")
#define writep(x) write(x),putchar(' ')
using namespace std;
inline int read(){
int ans=,f=;char chr=getchar();
while(!isdigit(chr)){if(chr=='-') f=-;chr=getchar();}
while(isdigit(chr)){ans=(ans<<)+(ans<<)+chr-;chr=getchar();}
return ans*f;
}void write(int x){
if(x<) putchar('-'),x=-x;
if(x>) write(x/);
putchar(x%+'');
}const int M = 3e5+;
int n,m,a[M],pos[M],pre[M],b[M],len,Ans[M];
struct Que{int l,r,id;}q[M];
bool cmp(const Que&x,const Que&y){return x.r<y.r;}
int s[M];
#define lowbit(x) (x&-x)
inline void Update(int x,int y){if(x==)return;for(;x<=n;x+=lowbit(x))s[x]+=y;}
inline int Query (int x){int ans=;for(;x;x-=lowbit(x))ans+=s[x];return ans;}
signed main(){
int Time=read();
while(Time--){memset(pre,,sizeof(pre)),memset(pos,,sizeof(pos));
n=read();for(int i=;i<=n;++i)b[i]=a[i]=read();
sort(b+,b+n+),len=unique(b+,b+n+)-b-;memset(s,,sizeof(s));
for(int i=;i<=n;i++)a[i]=lower_bound(b+,b+len+,a[i])-b,pre[i]=pos[a[i]],pos[a[i]]=i;
m=read();for(int i=;i<=m;++i)q[i].l=read(),q[i].r=read(),q[i].id=i;sort(q+,q+m+,cmp);
for(int i=,j=;i<=m;i++){
for(;j<=q[i].r;j++)Update(pre[j],-b[a[pre[j]]]),Update(j,b[a[j]]);
Ans[q[i].id]=Query(q[i].r)-Query(q[i].l-);
}for(int i=;i<=m;i++)printf("%lld\n",Ans[i]);
}
return ;
}
最新文章
- table相关的API
- ajax简单案例:返回json型
- javascript_22_for_二维数组
- Html5大文件断点续传
- [工具]toolbox_graph基本操作
- Python核心编程2第三章课后练习
- Java实现验证码图片
- eclipse git 一个错误:the current branch is not configured for pull No value for key branch.xxx.merge found
- ESB与SOA的关系
- appnium框架以及源码研究
- hihoCoder挑战赛11 A 随机斐波那契
- HttpGet HttpPost
- jenkins-参数化构建(二)插件:Extended Choice Parameter
- 发现一个新的注入 代码 eval
- Gcode命令【转】
- GitHub18
- unity3d 第一人称脚本解释MouseLook
- 拼接html a标签字符串,onClick传递两个字符串类型参数写法
- c++构造函数中调用构造函数---匿名对象再探
- GIS+=地理信息+行业+大数据——基于云环境流处理平台下的实时交通创新型app