Loj #6164. 「美团 CodeM 初赛 Round A」数列互质
link : https://loj.ac/problem/6164
莫队傻题,直接容斥做。
#include<bits/stdc++.h>
#define maxn 100005
#define pb push_back
using namespace std;
vector<int> g[maxn];
struct ask{
int l,r,K,num,bl;
bool operator <(const ask &u)const{
return bl==u.bl?((bl&1)?r<u.r:r>u.r):bl<u.bl;
}
}q[maxn];
int a[maxn],n,m;
int num[maxn],sz,cnt[maxn];
int ans[maxn],d[10],ci[30];
int tot,mul[2905],jc[2905]; inline void init(){
ci[0]=1;
for(int i=1;i<=20;i++) ci[i]=ci[i-1]<<1;
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j+=i) g[j].pb(i);
mul[0]=1;
for(int i=1;i<=2900;i++) mul[i]=-mul[i^(i&-i)];
} inline int calc(int O){
tot=0;
for(int i=2;i*i<=O;i++) if(!(O%i)){
d[tot++]=i;
while(!(O%i)) O/=i;
if(O==1) break;
}
if(O!=1) d[tot++]=O; int an=0; jc[0]=1;
for(int i=0;i<tot;i++) jc[ci[i]]=d[i];
for(int i=0,p;i<ci[tot];i++){
p=i^(i&-i);
if(p) jc[i]=jc[p]*jc[i^p];
an+=mul[i]*num[jc[i]];
} return an;
} inline void add(int O){
for(int i=g[O].size()-1;i>=0;i--){
num[g[O][i]]++;
}
} inline void del(int O){
for(int i=g[O].size()-1;i>=0;i--){
num[g[O][i]]--;
}
} inline void solve(){
int le=1,ri=0;
for(int i=1;i<=m;i++){
while(ri<q[i].r) ri++,del(cnt[a[ri]]),cnt[a[ri]]++,add(cnt[a[ri]]);
while(ri>q[i].r) del(cnt[a[ri]]),cnt[a[ri]]--,add(cnt[a[ri]]),ri--;
while(le>q[i].l) le--,del(cnt[a[le]]),cnt[a[le]]++,add(cnt[a[le]]);
while(le<q[i].l) del(cnt[a[le]]),cnt[a[le]]--,add(cnt[a[le]]),le++; ans[q[i].num]=calc(q[i].K);
}
} int main(){
scanf("%d%d",&n,&m);
init(),sz=sqrt(n);
for(int i=1;i<=n;i++) scanf("%d",a+i);
for(int i=1;i<=m;i++){
scanf("%d%d%d",&q[i].l,&q[i].r,&q[i].K);
q[i].num=i,q[i].bl=(q[i].l-1)/sz+1;
} sort(q+1,q+m+1); solve(); for(int i=1;i<=m;i++) printf("%d\n",ans[i]);
return 0;
}
Loj #6164. 「美团 CodeM 初赛 Round A」数列互质的更多相关文章
- #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队
#6164. 「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 ...
- loj #6177. 「美团 CodeM 初赛 Round B」送外卖2 状压dp floyd
LINK:#6177.美团 送外卖2 一道比较传统的状压dp题目. 完成任务 需要知道自己在哪 已经完成的任务集合 自己已经接到的任务集合. 考虑这个dp记录什么 由于存在时间的限制 考虑记录最短时间 ...
- 「美团 CodeM 初赛 Round A」最长树链
题目描述 Mr. Walker 最近在研究树,尤其是最长树链问题.现在树中的每个点都有一个值,他想在树中找出最长的链,使得这条链上对应点的值的最大公约数不等于1.请求出这条最长的树链的长度. 输入格式 ...
- loj6177 「美团 CodeM 初赛 Round B」送外卖2 最短路+状压dp
题目传送门 https://loj.ac/problem/6177 题解 一直不知道允不允许这样的情况:取了第一的任务的货物后前往配送的时候,顺路取了第二个货物. 然后发现如果不可以这样的话,那么原题 ...
- 【loj6177】「美团 CodeM 初赛 Round B」送外卖2 Floyd+状压dp
题目描述 一张$n$个点$m$条边的有向图,通过每条边需要消耗时间,初始为$0$时刻,可以在某个点停留.有$q$个任务,每个任务要求在$l_i$或以后时刻到$s_i$接受任务,并在$r_i$或以前时刻 ...
- 【填坑】loj6159. 「美团 CodeM 初赛 Round A」最长树链
水一水 枚举各个质数,把是这个数倍数的点留下,跑直径,没了 #include <bits/stdc++.h> using namespace std; int h,t,n,p,q,M,N; ...
- LiberOJ#6178. 「美团 CodeM 初赛 Round B」景区路线规划 概率DP
题意 游乐园被描述成一张 n 个点,m 条边的无向图(无重边,无自环).每个点代表一个娱乐项目,第 i 个娱乐项目需要耗费 ci 分钟的时间,会让小 y 和妹子的开心度分别增加 h1i ,h2i ,他 ...
- 「美团 CodeM 初赛 Round A」试题泛做
最长树链 树形DP.我们发现gcd是多少其实并不重要,只要不是1就好了,此外只要有一个公共的质数就好了.计f[i][j]表示i子树内含有j因子的最长链是多少.因为一个数的不同的质因子个数是log级别的 ...
- [LOJ 6213]「美团 CodeM 决赛」radar
[LOJ 6213]「美团 CodeM 决赛」radar 题意 给定 \(n\) 个横坐标 \(x_i\) , 为它们选择一个不超过 \(y_i\) 的纵坐标 \(h_i\), 产生 \(c_ih_i ...
随机推荐
- Python虚拟机类机制之填充tp_dict(二)
填充tp_dict 在Python虚拟机类机制之对象模型(一)这一章中,我们介绍了Python的内置类型type如果要完成到class对象的转变,有一个重要的步骤就是填充tp_dict对象,这是一个极 ...
- php获取当前操作系统类型
如何使用 php 获取当前操作系统类型呢? 严格来说这里分两种情况,一种情况是获取 服务器端 的操作系统类型,一种是获取 客户端 的操作系统类型. 下面将对如何使用php获取这两种情况下的操作系统类型 ...
- Oracle 查看锁定对象 解锁
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库.现在提供一种方法解决这种问题,那就是在ORACLE中杀不 ...
- PAT1029
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的文字.以及实际 ...
- 【转】Unity3d实现物体围绕某一点进行旋转
1,让一个物体围绕某一点旋转,有几种方法?分别是什么? 答:在这个点处放一个空物体B,则问题变为A绕着B旋转, 方法1:B不动,A挂脚本实现transform的RotateAround(vector3 ...
- Linux下解压rar格式的压缩文件
如果需要在Linux系统下解压RAR格式的压缩包,需要安装Linux版本的rar程序. 具体安装步骤如下: wget http://www.rarlab.com/rar/rarlinux-3.8.0. ...
- LAMP第一部分安装mysql -apache -php
1. 安装mysqlcd /usr/local/src/ 免安装编译二进制的包wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-l ...
- AngularJs 特性 之 MVC
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...
- [canvas入坑2]模糊效果
查看效果请到 http://philippica.github.io/ 点击blur 模糊效果比较好的应该是高斯模糊,一个点的值变成了以该点为圆心的一个圆内所有像素的加权平均,权重由二维正态分布计算 ...
- Redis+sentinel 高可用实践
1.环境规划 10.213.50.138(主) redis+sentinel 10.213.50.168(从) redis+sentinel 10.213.50.227 作为客户端测试插入数 2.r ...