B.ljw 养蔷薇(普通莫队)

a d d ( ) , d e l ( ) add(),del() add(),del(),维护一个 s u m sum sum,用两次快速幂即可。

然后就是离线排序的普通莫队了,在套个前缀和就是 O ( 1 ) O(1) O(1)询问了。

普通莫队,在 n , m n,m n,m同阶下,块长为 n \sqrt{n} n ​的时间复杂度是 O ( n n ) O(n\sqrt{n}) O(nn ​)

code

// Problem: ljw 养蔷薇
// Contest: NowCoder
// URL: https://ac.nowcoder.com/acm/contest/16786/B
// Memory Limit: 262144 MB
// Time Limit: 2000 ms
// Date: 2021-05-31 16:24:59
// --------by Herio--------#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=2e4+5,M=1e5+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define fi first
#define se second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define IOS ios::sync_with_stdio(false),cin.tie(0)
void Print(int *a,int n){for(int i=1;i<n;i++)printf("%d ",a[i]);printf("%d\n",a[n]);
}
int n,m;
int a[N],d[N],b[N],cnt[N];
int bk;
struct node{int l,r,id;bool operator<(const node &no)const{return b[l]==b[no.l]?r<no.r:l<no.l;}
}q[M];
ll sum,f[N];
ll ksm(ll a,ll n,ll m=mod){ll ans=a-1;while(n){if(n&1) ans=ans*a%m;a=a*a%m;n>>=1;}return ans;
}
void add(int x){x=a[x];sum=(sum-ksm(cnt[x]+1,x)+mod)%mod;cnt[x]++;sum=(sum+ksm(cnt[x]+1,x))%mod;
}
void del(int x){x=a[x];sum=(sum-ksm(cnt[x]+1,x)+mod)%mod;cnt[x]--;sum=(sum+ksm(cnt[x]+1,x))%mod;
}
int main(){scanf("%d%d",&n,&m);bk=(int)sqrt(n);for(int i=1;i<=n;i++)  scanf("%d",&a[i]);for(int i=1;i<=n;i++){scanf("%d",&d[i]);b[i]=i/bk;q[i].l=max(1,i-d[i]);q[i].r=min(n,i+d[i]);q[i].id=i;}sort(q+1,q+n+1);int l=1,r=0;for(int i=1;i<=n;i++){//printf("%d %d %d\n",q[i].l,q[i].r,q[i].id);while(q[i].r>r) add(++r);while(q[i].l<l) add(--l);while(q[i].r<r) del(r--);while(q[i].l>l) del(l++);f[q[i].id]=sum;//printf("sum=%lld\n",sum);}for(int i=2;i<=n;i++)f[i]=(f[i]+f[i-1])%mod;while(m--){scanf("%d%d",&l,&r);printf("%lld\n",(f[r]-f[l-1]+mod)%mod);}return 0;
}

B.ljw 养蔷薇(普通莫队)相关推荐

  1. NBUT 1457 Sona(莫队算法+离散化)

    [1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...

  2. XOR and Favorite Number CF340E 莫队算法

    题目链接 题意:求给定询问区间[L,R]问有多少连续区间异或值等k,多次询问可以离线. a[i]^a[i+1]^a[i+2]^a[n]=(a[1]^a[2]^a[3]^...^a[i-1])^(a[1 ...

  3. Hdu 6534 Chika and Friendly Pairs 莫队算法+树状数组

    题目链接 题意求给区间[L,R]中有少对(i,j)满足i<j且abs(a[i]-a[j])<=k. 首先来说暴力的方法就是离散化,然后用树状数组来维护,但是m次询问,m很大,所以说一定会t ...

  4. 【莫队算法】bzoj3781 小B的询问

    莫队经典. 开个数组维护a[i]出现的次数. 1 #include<cstdio> 2 #include<cmath> 3 #include<algorithm> ...

  5. bzoj 3339 莫队

    题意: 求任意一个区间的SG函数. 想到线段树,但是线段树合并很麻烦. 线段树--分块. 分块的一个应用就是莫队算法. 怎么暴力递推呢? 从一个区间到另一个区间,Ans 取决于 Ans 和 加入和删除 ...

  6. HDU6964 I love counting (字典树+莫队)

    题意: 给定一个长度为 nnn 的序列c,qc,qc,q 次询问,每次给出l,r,a,bl,r,a,bl,r,a,b求在[l,r][l,r][l,r]中有多少种不同的值 kkk 满足 k⊕a≤b​.k ...

  7. 2021HDU多校第一场 zoto(莫队+分块)

    题意: 给你一个序列,q次询问,每次询问l-r的区间内数字大小为x-y之间内不重复的个,保证数据所有大小为1e5以内. 思路: 比赛的时候通过调整了一下分块的大小和各种优化,用莫队把题目给卡过去了,实 ...

  8. 牛客练习赛85 数学家的迷题 (带修莫队/线段树)

    题意: 1:将a[id]a[id]a[id]的值改为xxx. 2:令t=a[l]×a[l+1]×...×a[r−1]×a[r]t=a[l]×a[l+1]×...×a[r−1]×a[r]t=a[l]×a ...

  9. [国家集训队]数颜色 / 维护队列 (带修莫队模板题)

    题意: 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2. ...

最新文章

  1. 网络工程师课程---4、网络层(网关是什么)
  2. 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理
  3. Swift中类的使用
  4. python调用hive与java调用区别_python和hive结合使用
  5. 开启服务器时启动线程
  6. zoj 2112 树状数组 套主席树 动态求区间 第k个数
  7. 提高jQuery的性能
  8. (整理自网络)怎么样休息
  9. java怎么实现事务_java实现简单的事务
  10. python开发一个自动批改本地Word作业的程序
  11. 一个程序员的成长之路
  12. 【自然语言处理】【实体匹配】PromptEM:用于低资源广义实体匹配的Prompt-tuning
  13. Spring Cloud Eureka 全解 (1) - 总览篇
  14. 摩尔庄园服务器显示不出,摩尔庄园电脑为什么玩不了 摩尔庄园电脑玩不了解决方案...
  15. STC 串口下载电路 - CH340G或CH340N USB转串口以及漏电隔离
  16. 我们来统计一个各大学中国学生会CSSA的list吧
  17. 工业控制计算机固态硬盘,我们如何选择一款好的工业级固态硬盘?
  18. C/C++编程:实现hash函数
  19. 简述java程序的工作过程_简述 Java 程序的开发过程。_学小易找答案
  20. 血液采样卡技术参数_使用不同采样技术的信用卡欺诈检测

热门文章

  1. rrpp协议如何修改_【网安学术】基于NQA策略的RRPP优化机制
  2. POSA2 关于本书
  3. 长丰县节能环保战新产业集聚发展基地第二批支持项目条件、类型
  4. 【漏洞学习——沙盒跳出】————7、某银行自助查询终端可绕过权限控制
  5. 【Python】面向对象,封装
  6. 秋招面经第十一弹:沐瞳科技一面-大数据平台开发工程师
  7. win10系统突然没了WLAN和移动热点解决方法
  8. 左右手材料,左右手传输线
  9. 中国教育信息化行业发展价值分析与运营前景展望报告2022版
  10. 计算机网络引言(1)