#6164. 「美团 CodeM 初赛 Round A」数列互质-莫队
#6164. 「美团 CodeM 初赛 Round A」数列互质
思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 ,
但是还要处理有多少 次数 与ki互质 。根据数列的性质,无论这个区间多长,最长也就是 1 - n这个区间 ,所能产生的
不同的次数 也就是 根号 n 种 例如 长度为28的 数列 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 不同的次数 只有 7种
数列越长了 这个性质体现的越明显, 原因就是 根据他们的出现的次数求个和 就算他们都按 最小的次数出现的话 1 2 3 4...s 求和为 (1+s)*s/2
而这个数又不能超过 区间长度 ,所以 这个 s也就在 根号 长度左右。 所以可以放心的进行暴力求解,有插入删除操作,可以数组模拟链表实现。
#include<bits/stdc++.h>
using namespace std;
#define maxn 55555
int n,m,cnt[maxn*2],tong[maxn*2],block,ans[maxn],data[maxn];
int nxt[maxn*2],lst[maxn*2],head=0,tail=maxn-1,l,r;
struct node
{
int l,r,k,id;
bool operator <(const node &b)const
{
return l/block==b.l/block?r<b.r:l<b.l;
}
} a[maxn];
void upda(int rd)
{
if(rd<=head)return;
nxt[rd]=nxt[head];
nxt[head]=rd;
lst[rd]=head;
lst[nxt[rd]]=rd;
}
void rmove(int rd)
{
if(rd<=head)return;
nxt[lst[rd]]=nxt[rd];
lst[nxt[rd]]=lst[rd];
}
void ins(int x)
{
if(--tong[cnt[x]]==0)rmove(cnt[x]);
if(++tong[++cnt[x]]==1)upda(cnt[x]);
}
void del(int x)
{
if(--tong[cnt[x]]==0)rmove(cnt[x]);
if(++tong[--cnt[x]]==1)upda(cnt[x]);
}
int main()
{
scanf("%d%d",&n,&m);
block=sqrt(n);
nxt[0]=tail;
lst[tail]=0;
for(int i=1; i<=n; i++)
scanf("%d",&data[i]);
for(int i=0; i<m; i++)
{
a[i].id=i;
scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].k);
}
sort(a,a+m);
l=a[0].l;
r=a[0].l-1;
for(int i=0; i<m; i++)
{
while(l>a[i].l)
ins(data[--l]);
while(l<a[i].l)
del(data[l++]);
while(r>a[i].r)
del(data[r--]);
while(r<a[i].r)
ins(data[++r]);
int cp=0;
for(int j=nxt[head]; j!=tail; j=nxt[j])
if(__gcd(a[i].k,j)==1) cp+=tong[j];
ans[a[i].id]=cp;
}
for(int i=0; i<m; i++)printf("%d\n",ans[i]);
return 0;
}
#6164. 「美团 CodeM 初赛 Round A」数列互质-莫队的更多相关文章
- Loj #6164. 「美团 CodeM 初赛 Round A」数列互质
link : https://loj.ac/problem/6164 莫队傻题,直接容斥做. #include<bits/stdc++.h> #define maxn 100005 #de ...
- loj #6177. 「美团 CodeM 初赛 Round B」送外卖2 状压dp floyd
LINK:#6177.美团 送外卖2 一道比较传统的状压dp题目. 完成任务 需要知道自己在哪 已经完成的任务集合 自己已经接到的任务集合. 考虑这个dp记录什么 由于存在时间的限制 考虑记录最短时间 ...
- 【loj6177】「美团 CodeM 初赛 Round B」送外卖2 Floyd+状压dp
题目描述 一张$n$个点$m$条边的有向图,通过每条边需要消耗时间,初始为$0$时刻,可以在某个点停留.有$q$个任务,每个任务要求在$l_i$或以后时刻到$s_i$接受任务,并在$r_i$或以前时刻 ...
- 「美团 CodeM 初赛 Round A」最长树链
题目描述 Mr. Walker 最近在研究树,尤其是最长树链问题.现在树中的每个点都有一个值,他想在树中找出最长的链,使得这条链上对应点的值的最大公约数不等于1.请求出这条最长的树链的长度. 输入格式 ...
- 【填坑】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级别的 ...
- loj6177 「美团 CodeM 初赛 Round B」送外卖2 最短路+状压dp
题目传送门 https://loj.ac/problem/6177 题解 一直不知道允不允许这样的情况:取了第一的任务的货物后前往配送的时候,顺路取了第二个货物. 然后发现如果不可以这样的话,那么原题 ...
- 美团codem 数列互质 - 莫队
题目描述 给出一个长度为 nnn 的数列 a1,a2,a3,...,an{ a_1 , a_2 , a_3 , ... , a_n }a1,a2,a3,...,an,以及 mm ...
随机推荐
- ionic3 Injectable 引入NavController
在service里 引入 navcontroller 报错 And I get error No provider for NavController. 一个比较容易解决的方法, import {Io ...
- 用gojs写的流程图demo
领导要求,可以展开收缩子级,但是子级可以有多个父级,一开始用的dagre-d3.js,但是功能不是太全,无意中看到gojs,感觉还不错,所以拿来改了改... 代码地址:https://github.c ...
- CommonJs、AMD、CMD模块化规范
/** * CommonJS 模块化规范 * CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作 */ /*-------Node.js遵循Commonjs规范----- ...
- poj1094 恶心题,,每次加边进行判断
/* 给定一组偏序关系,问最少第几步能确定次序 如果出现环,问第几步出现环 因为要求第几步确定次序或者第几步出现环,所以每次读入一个偏序关系就进行一次拓扑排序 */ #include <iost ...
- Android Studio 打开activity_main.xml不能正常显示
操作系统:Windows 10 x64 IDE:Android Studio 3.2.1 解决方法:http://www.jcodecraeer.com/a/anzhuokaifa/Android_S ...
- C++ 关闭显示器
好困,想躺一下,关灯.上床,笔记本的屏幕还亮着,好刺眼,睡不着! 脑子里出现一个疑问,怎么用C++写一个关闭屏幕的小程序呢? 参考了网上已有的例子,最简化: #include <windows. ...
- centos7.5上一步步部署jumpserver
1.基础环境:centos7.5:关闭防火墙和selinux 2.修改字符集,否则可能会报input/output error 的问题,因为日志里打印了中文 [root@xzw ~]# localed ...
- JAVA二分搜索树
二叉树: 和链表一样,动态数据结构. 二叉树具有唯一根节点 二叉树具有天然的递归结构 二分搜索树是二叉树 二分搜索树的每个节点的值: 1.大于其左子树的所有节点的值 2.小于其右子树的所有节点的值 每 ...
- java 解析域名得到host
// 形如https://www.baidu.com 或 www.baidu.com, 判断这两种情况,并解析前者去掉http头,传入domain host // 方案1:正则表达式 + URI解析方 ...
- 关于K8S证书生成方面的脚本草稿
周日在家里计划的. 俺不加班,但在家学习的时间一样没少! 还没弄完,只粗粗弄了etcd证书. #! /usr/bin/env bash set -e set -u set -x THIS_HOST=$ ...