BZOJ 2506 calc
来源:互联网 发布:知乎2018校园招聘 编辑:程序博客网 时间:2024/06/05 04:25
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2506
题意:给定一个序列,长度为
题解:
因为没有修改操作,考虑离线做法。
将询问转化为从开头到一个点的询问,按照右端点升序排序。
一开始序列为空,等到依次处理询问时,将”对以后询问产生影响”的点加入序列,将影响产生。
因为询问被排过序,所以只会加点、不会删点,加点操作时间复杂度
接下来考虑如何产生这个影响,发现分块做法。
设最大的数为
- 当
p≤T−−√ 时,对于不同的p 可以进行分类,所有p 值相同的询问可以一次性的扫描中解决。 - 当
p>T−−√ 时,可以发现满足条件的不同的元素值不超过T−−√ 个(k,p+k,p∗2+k,...,p∗t+k)(t≤T−−√) ,因此,暴力统计,暴力扫描。
总时间复杂度为
代码:
#include <cstdio>#include <algorithm>using namespace std;const int maxn = 100001, maxm = 100001, maxv = 10001, maxsqp = 101;int n, m, num[maxn], f1[maxsqp][maxsqp], f2[maxv], ans[maxm];struct Node{ int r, f, p, k, id; bool operator < (const Node &x) const { return r < x.r; }} Q[maxm << 1];int main(){ int lim = 0; scanf("%d%d", &n, &m); for(int i = 1; i <= n; ++i) { scanf("%d", num + i); lim = max(lim, num[i]); } for(int i = 0, l, r, p, k; i < m; ++i) { scanf("%d%d%d%d", &l, &r, &p, &k); Q[i << 1] = (Node){l - 1, -1, p, k, i}; Q[(i << 1) + 1] = (Node){r, 1, p, k, i}; } sort(Q, Q + (m << 1)); for(int i = 0, mi = m << 1, now = 0; i < mi; ++i) { while(now < Q[i].r) { ++now; for(int j = 1; j <= 100; ++j) ++f1[j][num[now] % j]; ++f2[num[now]]; } if(Q[i].p <= 100) ans[Q[i].id] += Q[i].f * f1[Q[i].p][Q[i].k]; else for(int j = Q[i].k; j <= lim; j += Q[i].p) ans[Q[i].id] += Q[i].f * f2[j]; } for(int i = 0; i < m; ++i) printf("%d\n", ans[i]); return 0;}
0 0
- bzoj 2506 calc 题解
- BZOJ 2506 calc
- BZOJ 2506: calc【离线,值域分块
- BZOJ 2506: calc 权值分块
- BZOJ 2671 Calc 数论
- 【BZOJ 2671】Calc
- bzoj 2655: calc
- BZOJ 2655 calc
- bzoj 2671: Calc 数学
- 2506: calc
- 2506: calc
- BZOJ 2671(Calc-数论反演)
- bzoj 2655: calc dp+拉格朗日插值法
- calc
- Calc
- calc()
- calc.exe
- 10calc
- Two ways to solve the "Longest common subsequence" problem
- linux - vi/vim编辑器-高级用法
- HttpClient的一些工具类
- vs2012打包部署时“cannot extract icon with index 0 from file xxx.exe”的解决方案
- 利用python的sklearn开源包进行文本挖掘
- BZOJ 2506 calc
- Struts2 详解
- 解决Hessian【hessian-4.0.7.jar】不能正确传输BigDecimal问题
- ios block回调的理解和总结
- yii2中验证码的添加
- jquery鼠标放上去显示悬浮层即弹出定位的div层
- java面试算法汇总
- 【BZOJ3893】【Usaco2014 Dec】Cow Jog 乱搞
- TCP/UDP端口扫描(多线程应用-仅处于理论状态)-java