NBUT 1457 Sona [简单莫队]
来源:互联网 发布:ios app 访问数据库 编辑:程序博客网 时间:2024/05/21 06:28
题意: 询问M次区间不同数各自出现次数的立方和。
解法:简单莫队
代码:
#include<stdio.h>#include<string.h>#include<algorithm>#include<math.h>#include<iostream>#include<stdlib.h>#include<set>#include<map>#include<queue>#include<vector>#include<bitset>#pragma comment(linker, "/STACK:1024000000,1024000000")#define inf 1073741823#define llinf 4611686018427387903LL#define PI acos(-1.0)#define lth (th<<1)#define rth (th<<1|1)#define rep(i,a,b) for(int i=a;i<=b;i++)#define drep(i,a,b) for(int i=a;i>=b;i--)#define gson(i,root) for(int i=ptx[root];~i;i=ed[i].next)#define tdata int testnum;scanff(testnum);for(int cas=1;cas<=testnum;cas++)#define mem(x,val) memset(x,val,sizeof(x))#define mkp(a,b) make_pair(a,b)#define findx(x) lower_bound(b+1,b+1+bn,x)-b#define pb(x) push_back(x)using namespace std;typedef __int64 ll;const int NN = 200200;int n,qn;int a[NN],b[NN],bn;int block[NN],bnum;ll cot[NN],ans[NN],sum;struct query{ int l,r,idx;}q[NN];bool cmp(query x,query y){ if(block[x.l]==block[y.l])return x.r<y.r; return block[x.l]<block[y.l];}void init(){ sum=0; bn=n;bnum=max(1,int(sqrt(double(n)))); rep(i,1,n)cot[i]=0; rep(i,1,n)block[i]=(i-1)/bnum+1; rep(i,1,n)scanf("%d",&a[i]),b[i]=a[i]; sort(b+1,b+1+bn); bn=unique(b+1,b+1+bn)-b-1; rep(i,1,n)a[i]=findx(a[i]); scanf("%d",&qn); rep(i,1,qn)scanf("%d%d",&q[i].l,&q[i].r),q[i].idx=i; sort(q+1,q+1+qn,cmp);}void update(int pos,bool add){ sum-=cot[pos]*cot[pos]*cot[pos]; if(add)cot[pos]++; else cot[pos]--; sum+=cot[pos]*cot[pos]*cot[pos];}void solve(){ int l=1,r=0; rep(i,1,qn){ for(;r<q[i].r;r++)update(a[r+1],1); for(;r>q[i].r;r--)update(a[r],0); for(;l<q[i].l;l++)update(a[l],0); for(;l>q[i].l;l--)update(a[l-1],1); ans[q[i].idx]=sum; } rep(i,1,qn)printf("%I64d\n",ans[i]);}int main(){ while(scanf("%d",&n)!=EOF){ init(); solve(); }}
0 0
- NBUT 1457 Sona [简单莫队]
- NBUT 1457 Sona (莫队算法)
- Sona - NBUT 1457 莫队算法
- NBUT 1457Sona(莫队算法)
- NBUT 1457 Sona (莫队算法)
- NBUT 1457 Sona 莫队算法
- NBUT 1457 Sona (莫队算法)
- NBUT 1457 Sona 莫队算法 分块处理
- NBUT 1457 Sona(莫队算法+离散化)
- NBUT 1457 Sona
- NBUT 1463 Sona
- 莫队算法(NBUT1457 Sona)
- nbut1457 Sona 【莫队算法+离散化】
- NBUT 1457 (莫队算法 离散化)
- Sona
- NBUT 1457 分块法
- NBUT 1457 分块
- NBUT
- MyEclipse 热部署
- 查看mysql当前连接数
- Android的垂直布局管理器的应用
- Gradle-使用Gradle构建和测试-1-Hello,Gradle
- 程序设计基石与实践系列之最短的崩溃C语言程序
- NBUT 1457 Sona [简单莫队]
- Ubuntu chmod 命令修改文件权限
- centos 删除文本重复内容
- HDOJ 3342 Legal or Not(拓扑排序判断有向图是否存在环)
- JAVA字符串的方法
- PrincetonUniversity-Coursera 算法:算法简介
- UITableView,UICollectionView顶部预留空白的处理
- BASH第八课作业
- java.lang.InstantiationException