二维rmq 离线 init O( n*n*logn*logn )  query O(1)

http://www.cnblogs.com/kuangbin/p/3227420.html

求1-n有多少个素数 n = 1e9

 #include <bits/stdc++.h>
using namespace std;
namespace acm {
/// count primes between [1..n] (0< n <=1e9)
/// solution: dp
/// d(n, i) means that the number of value whose min prime number is bigger than i in [1..n]
/// d(n, i) = d(n, i-1) if number i is not a prime
/// d(n, i) = d(n, i-1) - d(n/i, i) + d(i, i-1) if number i is a prime
/// complex time: O(n^(3/4)), space: O(n^(1/2))
struct CountPrime {
int solve(int n) {
if (n < ) {
return ;
}
dp[] = ;
int sqrtn = , length = ;
for (; sqrtn <= n / sqrtn; ++sqrtn) {
dp[++length] = sqrtn - ;
}
for (int i = sqrtn - ; i > ; --i) {
int val = n / i;
if (val != i) {
dp[++length] = val - ;
}
}
for (int i = ; i < sqrtn; ++i) {
if (dp[i] == dp[i-]) {
continue;
}
for (int j=length; j>; --j) {
int val = j < sqrtn ? j : n / (length - j + );
if (i > val / i) {
break;
}
int pre_statue_pos = val / i;
if (pre_statue_pos >= sqrtn) {
pre_statue_pos = length - n / pre_statue_pos + ;
}
dp[j] += dp[i-] - dp[pre_statue_pos];
}
}
return dp[length];
}
static const int maxn = 1e5+;
int dp[maxn];
};
} // namespace acm
int main()
{
//freopen("dp.in", "r", stdin);
//freopen("dp.out", "w", stdout);
acm::CountPrime cp;
int n;
while (scanf ("%d", &n) != EOF) {
printf ("%d\n", cp.solve(n));
}
return ;
}

end

最新文章

  1. nginx 服务器重启命令,关闭
  2. input 放大镜
  3. python常错: join() 方法
  4. Cassandra1.2文档学习(15)—— 配置数据一致性
  5. 函数textread
  6. cssText设置css样式
  7. CSS垂直水平居中
  8. [Android] FileInputStream跟踪
  9. js生成随机颜色
  10. [INS-40724] No locally defined network interface matches the SCAN subnet.
  11. new Date()导致日期增加了一天
  12. WPF放大镜效果
  13. 安装chrome
  14. angular5中使用jsonp请求页面
  15. 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版(转)
  16. [Makefile]多文件的通用Makefile
  17. jquery tab选项卡、轮播图、无缝滚动
  18. Solr查询query效果对比
  19. 14. Android框架和工具之 ImageLoader(图片加载)
  20. Java Calendar类总结

热门文章

  1. MongoDB用户管理
  2. Java求和
  3. 个人代码管理--svn
  4. 《高性能javascript》读书笔记
  5. vim代码补全-spf13,YouCompleteMe
  6. Oracle Rac crs无法启动
  7. Go append方法
  8. python 生成二维码
  9. iOS8 超简单的设置圆角按钮 ImageView等UIView
  10. DataView usage combind with event and ViewModel From ERP-DEV