Codeforce385C 树状数组+素因子分解
题目大意:
给多个区间的询问,在询问区间内每一个出现的素数去计算所有数中有多少个数能被这个素数整除
然后将所有素数得到的对应值求和
这里因为初始给定的数不超过10000000,最多670000不到的素数
而后面给定的区间到达1e9是没意义的,只要后面超过10000000都按最后一个数表示即可
然后将素数的标号作为树状数组的点,保存对应的点前缀和
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
#define ll long long
#define N 10001000
#define M 670000
#define pii pair<int,int>
#define lowbit(x) x&(-x)
int prime[M+] , tot ;
bool check[N+]; void get_prim()
{
for(int i= ; i<=N ; i++){
if(!check[i]) prime[tot++] = i;
for(int j= ; j<tot ; j++){
if((ll)i*prime[j]>N) break;
check[i*prime[j]] = true;
if(i%prime[j]==) break;
}
}
} int Hash1(int x)
{
if(x>) return ; //664579是10000000内素数的数目
int l= , r=tot- , ans=;
while(l<=r){
int m = (l+r)>>;
if(prime[m]>=x){ans = m , r=m-;}
else l=m+;
}
return ans+;
} int Hash2(int x)
{
if(x>) return ;
int l= , r=tot- , ans=;
while(l<=r){
int m = (l+r)>>;
if(prime[m]<=x){ans = m , l=m+;}
else r=m-;
}
return ans+;
} ll sum[M]; void add(int x , int v){for(int i=x ; i<=tot ; i+=lowbit(i)) sum[i] += v;} ll query(int x)
{
ll ret = ;
for(int i=x ; i> ; i-=lowbit(i)) ret+=sum[i];
return ret;
} void fenjie(int x)
{
int mx = (int)sqrt(x+0.5);
for(int i= ; i<tot ; i++){
if(prime[i]*prime[i]>x) break;
if(x%prime[i]==){
// cout<<"in: "<<i<<" "<<prime[i]<<endl;
add(i+ , );
while(x%prime[i]==) x/=prime[i];
}
}
if(x>){
int pos = lower_bound(prime , prime+tot , x)-prime;
add(pos+ , );
}
} int main() {
// freopen("a.in" , "r" , stdin);
// freopen("out.txt" , "w" , stdout);
get_prim();
int n , m , s , t;
while(~scanf("%d" , &n))
{
for(int i= ; i<n ; i++){
int x ;
scanf("%d" , &x);
fenjie(x);
}
scanf("%d" , &m);
while(m--){
scanf("%d%d" , &s , &t);
int p1 = Hash1(s) , p2 = Hash2(t);
// cout<<p1<<" "<<p2<<endl;
printf("%I64d\n" , query(p2)-query(p1-));
}
}
}
Codeforce385C 树状数组+素因子分解的更多相关文章
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- bzoj1878--离线+树状数组
这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...
- codeforces 597C C. Subsequences(dp+树状数组)
题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1399 Solved: 694[Submit][Status] ...
- BZOJ 3289: Mato的文件管理[莫队算法 树状数组]
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2399 Solved: 988[Submit][Status][Di ...
- 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组
E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...
- 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 508 Solved: 158[Submit][Sta ...
- 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)
题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...
随机推荐
- MFC编程入门之五(MFC消息映射机制概述)
在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作.比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应. 一.什 ...
- vitamio视频播放库
vitamio视频播放库 http://www.d evstore.cn/evaluation/testInfo/155-181.html
- 获取iframe外边数据
http://biancheng.dnbcw.info/javascript/178184.html
- NKW
JavaScript几种原生函数 - 博客频道 - CSDN.NEThttp://blog.csdn.net/h378588270/article/details/12948163 .json_百度搜 ...
- 025-ViewData、ViewBag与TempData概述
Action向View传递数据很简单,方式也很多,最直接的就是我们向View传递Model,这本身就是MVC的意义所在.如果是显示一些消息,像是错误信息,可以使用ViewData.ViewBag.Te ...
- js中style,currentStyle和getComputedStyle的区别
1.style只能获取元素的内联样式,内部样式和外部样式是获取不到的.例子: <div id="test" style="width:100px;height:20 ...
- 一些不认识的开源js(更新ing。。。)
孟星魂和小蝶归隐山林曾经说过,我们不问江湖事,但是不能不知道江湖事,因为我们是老伯的人(大概意思),所以有些东西可以用不到,但是一定要了解点... (首先不能人云亦云,但是有个主观观点也没啥大问题) ...
- hdu 3074 Zjnu Stadium (带权并查集)
Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- Java 集合系列 15 Map总结
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java网络通信
一.基本概念 1.网络程序: 能够接受另一台计算机发送过来的数据或者能够向另一台计算机发送数据的程序叫做网络程序. 2.IP 能够在网络中唯一标示一台主机的编号就是IP 3.端口号 16位数字表示 4 ...