题意:

有n个区间,询问对于$1\leq i\leq m$的每个i,有多少个区间至少包含一个i的倍数?

$1\leq N\leq 3\times 10^5$

$1\leq M\leq 10^5$

题解:

开始就想到了调和级数的复杂度,但是一直没想到反着统计。。。

正着统计区间是否包含$i$的倍数很麻烦,不妨反过来统计是否不包含,那么不包含的情况肯定是区间卡在两个$i$的倍数之间或者在$\lfloor\frac{m}{i}\rfloor\times i$和$M$之间,用调和级数的时间复杂度可以把所有倍数搞出来。那么可以将询问离线,按照$i$的倍数分段,然后用树状数组维护即可。

调和级数一个$log$,树状数组一个$log$,所以最后的时间复杂度是$O(mlogmlogn)$

貌似有很多dalao用不同姿势的分块碾了过去QAQ

代码:

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<cmath>
#define lb(x) (x&-x)
using namespace std;
struct task{
int x,id;
}a[];
int n,m,l,r,tot=,ans[],t[];
vector<int>g1[],g2[];
void add(int x,int v){
for(;x;x-=lb(x)){
t[x]+=v;
}
}
int query(int x){
int ret=;
for(;x<=m;x+=lb(x)){
ret+=t[x];
}
return ret;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d%d",&l,&r);
g1[r].push_back(l);
}
for(int i=;i<=m;i++){
ans[i]=n;
for(int j=;j<=m/i;j++){
a[++tot].x=i*(j-);
a[tot].id=i;
g2[i*j].push_back(tot);
}
a[++tot].x=(m/i)*i;
a[tot].id=i;
g2[m+].push_back(tot);
}
for(int i=;i<=m+;i++){
for(int j=,jj=g2[i].size();j<jj;j++){
ans[a[g2[i][j]].id]-=query(a[g2[i][j]].x+);
}
for(int j=,jj=g1[i].size();j<jj;j++){
add(g1[i][j],);
}
}
for(int i=;i<=m;i++)printf("%d\n",ans[i]);
return ;
}

最新文章

  1. 每天写点shell--命令行参数
  2. CSS/CSS3常用样式小结
  3. poj 1655
  4. ABAP 加密解密程序
  5. JavaWeb项目开发案例精粹-第6章报价管理系统-03Dao层
  6. nginx修改内核参数
  7. signal信号类型列表
  8. [置顶] .net技术类面试、笔试题汇总3
  9. ActiveMQ持久化方式(转)
  10. PHP CURL 代理发送数据
  11. 从输入URL到页面加载的全过程
  12. JAVA获取汉字拼音首字母
  13. Springboot 的错误处理功能的实现
  14. Teradata的DBQL使用
  15. Nginx+uwsgi部署 Diango(生产环境)
  16. 【CF666E】Forensic Examination 广义后缀自动机+倍增+线段树合并
  17. Matlab中调用VS编译的exe文件并传递变量 的方法
  18. Latex小技巧
  19. Queries about less or equal elements CodeForces - 600B(二分)
  20. vjue 点击发送邮件如何处理

热门文章

  1. ng-repeat 中的 track by $index
  2. HDU-2955 Robberies 浮点数01背包 自变量和因变量位置互换
  3. NOI 2015 品酒大会 (后缀数组+并查集)
  4. Java获取当天、本周、本月、本季度、本年等 开始及结束时间
  5. 【转】Visual Studio單元測試小應用-測執行時間
  6. (转)redis源代码分析 – event library
  7. mybatis批量插入oracle大量数据记录性能问题解决
  8. MyEclipse2014高速配置Spring &amp;amp; Spring Testing, Spring AOP简单使用
  9. unity3d 延迟运行脚本语句
  10. poj 3259 bellman最短路推断有无负权回路