[BZOJ3529][Sdoi2014]数表 && 莫比乌斯反演+树状数组
来源:互联网 发布:枪神纪真免费刷枪软件 编辑:程序博客网 时间:2024/05/22 21:55
因为这个好好地复习了一下莫比乌斯反演 结果才发现这是自己的第一篇莫比乌斯反演
具体内容太长了 写了两页草稿纸 想看就去orz一下PoPoQQQ大爷吧
传送门http://blog.csdn.net/popoqqq/article/details/42076231
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<queue>#define SF scanf#define PF printf#define mp make_pair#define fir first#define sec second#define lowbit(x) ((x) & (-(x)))using namespace std;typedef long long LL;typedef pair<int, int> pii;const int MAXN = 100000;const int MOD = 2147483647;int mu[MAXN+10], prime[MAXN+10], tot, ans[MAXN+10], c[MAXN+10], MAX;pii F[MAXN+10];bool vis[MAXN+10];int Q;struct Node { int n, m, a, id; bool operator < (const Node &t) const { return a < t.a; }} A[MAXN+10];void init() { mu[1] = 1; for(int i = 2; i <= MAX; i++) { if(!vis[i]) prime[++tot] = i, mu[i] = -1; for(int j = 1; prime[j]*i <= MAX; j++) { vis[prime[j]*i] = 1; if(i % prime[j] == 0) { mu[prime[j]*i] = 0; break; } mu[prime[j]*i] = -mu[i]; } } for(int i = 1; i <= MAX; i++) { F[i].sec = i; for(int j = i; j <= MAX; j += i) F[j].fir += i; }}void add(int x, int v) { for( ; x <= MAX; x += lowbit(x)) c[x] += v;}int query(int x) { int ret = 0; for( ; x; x -= lowbit(x)) ret += c[x]; return ret;}void calc(int i) { int x = A[i].id, n = A[i].n, m = A[i].m, Next_pos; for(int i = 1; i <= n; i = Next_pos+1) { Next_pos = min(n / (n/i), m / (m/i)); ans[x] += (n/i) * (m/i) * (query(Next_pos) - query(i-1)); }}int main() { SF("%d", &Q); for(int i = 1; i <= Q; i++) { SF("%d%d%d", &A[i].n, &A[i].m, &A[i].a); if(A[i].n > A[i].m) swap(A[i].n, A[i].m); A[i].id = i; MAX = max(A[i].m, MAX); } init(); sort(A+1, A+1+Q); sort(F+1, F+1+MAX); int cur = 0; for(int i = 1; i <= Q; i++) { while(cur < MAX && F[cur+1].fir <= A[i].a) { cur++; for(int j = F[cur].sec; j <= MAX; j += F[cur].sec) add(j, F[cur].fir * mu[j / F[cur].sec]); } calc(i); } for(int i = 1; i <= Q; i++) PF("%d\n", ans[i]&MOD);}
0 0
- [BZOJ3529][Sdoi2014]数表 && 莫比乌斯反演+树状数组
- [BZOJ3529]SDOI2014数表|莫比乌斯反演|树状数组
- 【bzoj3529】【SDOI2014】【数表】【莫比乌斯反演+树状数组】
- [BZOJ3529] [SDOI2014] 数表 - 莫比乌斯反演 - 树状数组
- bzoj3529 [Sdoi2014]数表(莫比乌斯反演+树状数组)
- 【bzoj3529】[Sdoi2014]数表 线性筛法+树状数组+莫比乌斯反演+数论分块
- [BZOJ3529][Sdoi2014]数表(莫比乌斯反演+树状数组)
- [BZOJ3529][SDOI2014]数表(莫比乌斯反演+树状数组)
- BZOJ3529 [Sdoi2014]数表 【莫比乌斯反演】
- 3529: [Sdoi2014]数表 莫比乌斯反演+树状数组
- 3529: [Sdoi2014]数表|莫比乌斯反演|树状数组
- [莫比乌斯反演+数状数组] BZOJ3529: [Sdoi2014]数表
- 【BZOJ3529】数表(莫比乌斯反演)(树状数组)(数学)
- 【莫比乌斯反演】[BZOJ3529]数表
- 【BZOJ】】【P3529】【Sdoi2014】【数表】【题解】【莫比乌斯反演+离线+树状数组】
- BZOJ 3529 SDOI2014 数表 莫比乌斯反演+树状数组
- bzoj 3529: [Sdoi2014]数表 莫比乌斯反演&树状数组
- [莫比乌斯反演 树状数组] BZOJ 3529 [Sdoi2014]数表
- jQuery实现搜索关键字自动匹配提示方法
- MyEclipse2014 优化设置
- 安装Windows Server 2003 详解(图)
- 从html表单提交信息到php界面出现不解析情况
- 非Ajax下用JavaScript获取文件大小(兼容IE及FireFox)
- [BZOJ3529][Sdoi2014]数表 && 莫比乌斯反演+树状数组
- Rotate List
- 很好用的JQuery表单验证插件——jquery.validate.js
- android outofmemory 原理及解决方案
- Sublime Text 3 支持的热门插件推荐
- poj 动态规划DP - 1157 LITTLE SHOP OF FLOWERS
- JQuery图片轮换插件,支持可视化自定义配置,零CSS
- 破译密码
- jQuery Multiple File Upload Plugin 使用方法