[CodeM初赛A轮]E
来源:互联网 发布:nba总决赛个人数据统计 编辑:程序博客网 时间:2024/05/17 00:06
题解
大小点分治。
出现次数大于阈值的,处理前缀和,然后暴力枚举一个询问判断。
出现次数小于阈值的,跑莫队,维护每个数出现次数,以及每种出现次数的数的个数,然后询问可以暴力枚举出现次数。
#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=50000+10,B=240;struct dong{ int l,r,k,id;} ask[maxn];int a[maxn],sum[maxn],belong[maxn],cnt[maxn],c[maxn],d[maxn];int ans[maxn];int i,j,k,l,r,t,n,m,tot,top;int read(){ int x=0,f=1; char ch=getchar(); while (ch<'0'||ch>'9'){ if (ch=='-') f=-1; ch=getchar(); } while (ch>='0'&&ch<='9'){ x=x*10+ch-'0'; ch=getchar(); } return x*f;}int gcd(int a,int b){ return b?gcd(b,a%b):a;}bool cmp(dong a,dong b){ return belong[a.l]<belong[b.l]||belong[a.l]==belong[b.l]&&a.r<b.r;}void ins(int x){ if (cnt[a[x]]>B) return; if (c[a[x]]) d[c[a[x]]]--; c[a[x]]++; if (c[a[x]]) d[c[a[x]]]++;}void del(int x){ if (cnt[a[x]]>B) return; if (c[a[x]]) d[c[a[x]]]--; c[a[x]]--; if (c[a[x]]) d[c[a[x]]]++;}int main(){ n=read();m=read(); fo(i,1,n) a[i]=read(),cnt[a[i]]++,belong[i]=(i-1)/B+1; fo(i,1,m) ask[i].l=read(),ask[i].r=read(),ask[i].k=read(),ask[i].id=i; fo(i,1,n) if (cnt[i]>B){ fo(j,1,n) sum[j]=sum[j-1]+(a[j]==i); fo(j,1,m){ if (sum[ask[j].r]-sum[ask[j].l-1]>0&&gcd(sum[ask[j].r]-sum[ask[j].l-1],ask[j].k)==1) ans[ask[j].id]++; } } sort(ask+1,ask+m+1,cmp); l=1;r=0; fo(i,1,m){ while (l<ask[i].l) del(l++); while (l>ask[i].l) ins(--l); while (r<ask[i].r) ins(++r); while (r>ask[i].r) del(r--); fo(j,1,B) if (gcd(j,ask[i].k)==1) ans[ask[i].id]+=d[j]; } fo(i,1,m) printf("%d\n",ans[i]);}
阅读全文
0 0
- [CodeM初赛A轮]E
- [CodeM初赛A轮]A
- [CodeM初赛A轮]B
- [CodeM初赛A轮]C
- [CodeM初赛A轮]D
- codeM初赛B轮A题
- CodeM美团点评编程大赛 初赛B轮 A 黑白树 贪心 E 子串 暴力
- CodeM美团 初赛A轮 A题 身体训练
- CodeM美团 初赛A轮 C题 倒水
- 美团CodeM 初赛 A轮 数列互质 莫队
- CodeM美团点评编程大赛初赛A轮
- CodeM美团点评编程大赛初赛B轮 E.子串【暴力模拟+KMP】水题
- CodeM美团 初赛B轮 E题 子串(简单模拟)
- 牛客网-美团CodeM初赛A轮 合并回文子串 区间DP
- CodeM美团点评编程大赛初赛A轮 数列互质
- CodeM美团点评编程大赛初赛A轮 B.合并回文子串【区间Dp】
- CodeM美团点评编程大赛初赛A轮 C.倒水【二分+分类讨论】
- CodeM美团点评编程大赛初赛B轮 A.黑白树【树型Dp】
- Hibernate继承映射【标准+全】
- interactions_anova
- 解决react-native-swiper在安卓上与TabNavigator共用时不显示内容问题
- 计算语言学之隐马尔可夫模型
- link和import的区别
- [CodeM初赛A轮]E
- 断点续传
- 操作sqlite3数据库
- 操作系统之存储器管理
- 【CodeM初赛A 5】数列互质 题解
- 变量的存储方式和生存期
- Ui设计中单选按钮与复选框详解
- 关于python多线程的爬虫的一些实践
- 简单记录N个动态规划的例子