分段法

求{1,2, N} 的素数个数

给定 N (1<=N<=10^8 ),问[1, N]之间有多少个素数

当询问数比较小时可以用 分段法做

 

本地处理出[1,10000], [10001, 20000], [xxx, 10^8] //每个区间10000长(即算出n=1, 10001, 20001,···的答案)

 

每个询问都落在某一区间上,暴力算一下该区间的答案只需10000次, 复杂度 = 分段区间长度* 询问数

 

分段还可应用于数位dp和一些找规律的题目上。

 

分段例题:http://cstest.scu.edu.cn/soj/problem.action?id=4312 ac传送门:http://blog.csdn.net/acmmmm/article/details/17387531

你可能感兴趣的:(分段法)