题意,给定一个含n<=50000element<=1000000的数组,给定m<=50000的查询l,r要求找出l,r中能够使得同一个数取余为0的个数的最大值

思路,l,r可以与邻近区间转移ans,一眼莫队

作为卡常的经典算法,注意求质因子的时候在筛素数的时候直接进行

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<string>
#include<bitset>
#include<cmath>
#include<array>
#include<atomic>
#include<sstream>
#include<stack>
#include<iomanip>
//#include<bits/stdc++.h>//#define int ll
#define IOS std::ios::sync_with_stdio(false);std::cin.tie(0);
#define pb push_back
#define endl '\n'
#define x first
#define y second
#define Endl endl
#define pre(i,a,b) for(int i=a;i<=b;i++)
#define rep(i,b,a) for(int i=b;i>=a;i--)
#define si(x) scanf("%d", &x);
#define sl(x) scanf("%lld", &x);
#define ss(x) scanf("%s", x);
#define YES {puts("YES");return;}
#define NO {puts("NO"); return;}
#define all(x) x.begin(),x.end()using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef pair<int, PII> PIII;
typedef pair<char, int> PCI;
typedef pair<int, char> PIC;
typedef pair<double, double> PDD;
typedef pair<ll, ll> PLL;
const int N = 1000010, M = 2 * N, B = N, MOD = 998244353;
const double eps = 1e-8;
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;int dx[4] = { -1,0,1,0 }, dy[4] = { 0,1,0,-1 };
int n, m, k;
int a[N];
vector<int> factors[N];
int primes[N], countNum;
int st[N];
int block;
int t;
int num[N], cnt[N], ans[N];
struct QUERY {int l, r, id;bool operator < (const QUERY& an) const {if ((l / block) ^ (an.l / block))return l < an.l;if (l / block & 1)return r > an.r;return r < an.r;}
};ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll lowbit(ll x) { return x & -x; }
ll qmi(ll a, ll b, ll MOD) {ll res = 1;while (b) {if (b & 1) res = res * a % MOD;a = a * a % MOD;b >>= 1;}return res;
}inline void init()
{for (int i = 2; i < N; i++){if (!st[i]){for (int j = i; j < N; j += i){st[j] = 1;factors[j].emplace_back(i);}}}
}void del(int x)
{for (int p : factors[a[x]]){num[cnt[p]]--;if (t == cnt[p] && num[cnt[p]] == 0)t--;cnt[p]--;num[cnt[p]]++;}
}void add(int x)
{for (int p : factors[a[x]]){num[cnt[p]]--;cnt[p]++;num[cnt[p]]++;if (cnt[p] > t)t = cnt[p];}
}void slove()
{int n, m;t = 0;scanf("%d %d", &n, &m);for (int i = 1; i <= n; ++i)scanf("%d", &a[i]);block = sqrt(n);int l, r;vector<QUERY> q;for (int i = 1; i <= m; ++i){scanf("%d %d", &l, &r);q.pb({ l,r,i });}sort(all(q));l = 1, r = 0;for (int i = 0; i < m; ++i){while (l < q[i].l)del(l++);while (l > q[i].l)add(--l);while (r < q[i].r)add(++r);while (r > q[i].r)del(r--);ans[q[i].id] = t;}for (int i = 1; i <= m; ++i)printf("%d\n", ans[i]);while (l <= r)del(l++);
}signed main()
{//IOS;int _;si(_);//_ = 1;init();while (_--){slove();}return 0;
}

Magic Number Group相关推荐

  1. Linux 系统硬盘不能识别挂载 bad magic number in super-block问题的修复

    公司Linux编译服务器外挂硬盘盒不能挂载, 提示信息 "Structure needs cleaning", 用 xfs_repair -n /dev/sdb1 硬盘检测 提示 ...

  2. 魔数(magic number)

    魔数是编程中我们需要尽量避免使用的,但是很多人不去管也不清楚. 百度百科中解释如下:         很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充,或是本就如此).根据这几个字节的内容 ...

  3. C++magic number幻数的判断算法(附完整源码)

    C++magic number幻数的判断算法 C++magic number幻数的判断算法完整源码(定义,实现,main函数测试) C++magic number幻数的判断算法完整源码(定义,实现,m ...

  4. 根据Magic Number(幻数)判断文件类型

    通常我们根据文件的后缀名来判断文件的类型,一般情况下,这样做是没有问题的,但是如果手动的把文件的后缀名进行了修改(比如,test.txt,修改后的文件为test.doc),此时我们根据后缀名获取文件类 ...

  5. 文件头格式标准魔数-magic number和mime.types

    2021年11月8日10:13:39 1,magic number https://www.garykessler.net/library/file_sigs.html 这个文件头部,各种文件的默认数 ...

  6. Magic Number魔数是什么

    在网上查magic number的相关介绍的时候,看到很多人的博客中说magic number之所以叫magic number,就是因为我们并不知道它有什么含义... 最后看了知乎上的回答: Magi ...

  7. 幻数浅析(Magic Number)

    在源代码编写中,有这么一种情况:编码者在写源代码的时候,使用了一个数字,比如0x2123,0.021f等,他当时是明白这个数字的意思的,但是别的程序员看他的代码,可能很难理解,甚至,过了一段时间,代码 ...

  8. python magic number,boost.python 做出来的pyc报bad magic number

    排查python src呗: pythonrun.c static PyObject * run_pyc_file(FILE *fp, const char *filename, PyObject * ...

  9. java magic number_java的class文件的magic number, cafebabe

    java的class文件的前4个字节叫做magic number, 用来识别是否为java的class文件. package pkg; import java.io.File; import java ...

最新文章

  1. react 让滚动条一直在下面_Ink 2.0 发布:命令行应用程序的 React
  2. 13个Pandas技巧
  3. Android中代码运行指定的Apk
  4. java axis2小实例_java webservice axis2简单开发实例
  5. Spring Boot笔记-线程池调度计划仅运行一次
  6. python新手入门代码-python新手入门方法
  7. controller层要写什么_别再写满屏的try-catch了,真丑,全局异常处理不会吗?
  8. 【android】关于android10-11存储的一些知识
  9. Java URI和URL
  10. Java 将Excel转为et和ett格式
  11. 如何把一张图片设置成一个应用程序的图标?
  12. 深入理解泊松分布、指数分布、正态分布
  13. Ubuntu 20.04 配置VNC远程桌面访问
  14. 网络工程师成长日记140-机遇都是碰出来的
  15. 测试经验总结分享(长期更新)
  16. 【转】win7 旗舰版激活密钥
  17. 使用quartz 定时任务
  18. 重邮2018年硕士研究生入学考试(《数据结构》802)自己做的部分答案
  19. Android 调整进程的最大fd 数目
  20. 举个栗子~Tableau 技巧(215):简化实现雷达图(Radar Chart)

热门文章

  1. Linux下查看历史操作记录
  2. 美国科学发现印证人类大脑存在互联网
  3. tzoj 5785: 打击犯罪
  4. debug idea js,IDEA调试javaScript
  5. Linux通过docker安装运行酷Q--用QQ骰子君进行跑团
  6. python高级语言应用心得体会_《Python基础学习心得》1.1
  7. 实地探访贾跃亭FF美国大本营
  8. 裂缝探测python_地理空间分析的第2部分裂缝站点选择难题
  9. java中的asList_java中Arrays.asList的使用
  10. python获取图像路径