hdu4947 GCD Array
来源:互联网 发布:库里2017年总决赛数据 编辑:程序博客网 时间:2024/05/29 08:14
原题网址:http://acm.hdu.edu.cn/showproblem.php?pid=4947
原题大意:对于一组初始为0的数列,进行两种操作:对所有x满足
对于条件一,其等价于对每个数增加
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cmath>#include <vector>using namespace std;#define ll long longconst int N = 200010;bool check[N];int prime[N];int mu[N];//莫比乌斯函数ll sum[N];ll ans, temp, lasttemp, pos;vector<int> fac[N];//因子ll getsum(int x){ ll ans = 0; for (; x; x -= x&-x) ans += sum[x]; return ans;}void add(int x, int v){ for (; x<N; x += x&-x) sum[x] += v;}void Moblus(){//线性筛法求莫比乌斯函数 memset(check, false, sizeof(check)); mu[1] = 1; int tot = 0; for (int i = 2; i <= N; i++){ if (!check[i]){ prime[tot++] = i; mu[i] = -1; } for (int j = 0; j < tot; j++){ if (i*prime[j] > N) break; check[i*prime[j]] = true; if (i%prime[j] == 0){ mu[i*prime[j]] = 0; break; } else{ mu[i*prime[j]] = -mu[i]; } } }}int main(){ int l, m, cas = 0; Moblus(); for (int i = 1; i < N; i++) for (int j = i; j < N; j += i) fac[j].push_back(i); while (scanf("%d%d", &l, &m), l, m){ cas++; printf("Case #%d:\n", cas); memset(sum, 0, sizeof(sum)); while (m--){ int t, n, d, v, x; scanf("%d", &t); if (t == 1){ scanf("%d%d%d", &n, &d, &v); if (n%d) continue; n /= d; for (int i = 0; i < fac[n].size(); i++){ x = fac[n][i]; add(x*d, mu[x] * v); } } else{ scanf("%d", &x); ans = temp = 0; for (int i = 1; i <= x; i = pos + 1){ pos = x / (x / i); lasttemp = temp; temp = getsum(pos); ans += x / i*(temp - lasttemp); } printf("%lld\n", ans); } } } return 0;}
阅读全文
0 0
- hdu4947 GCD Array
- Array GCD
- CF624D - Array GCD
- bzoj3853 GCD Array
- bzoj 3853 GCD Array
- BZOJ 3853 GCD Array
- Codeforces 623 B. Array GCD
- CodeForces 624D Array GCD
- Codeforces 623B:Array GCD
- CodeForces 623B Array GCD
- codeforces 624d 623b Array GCD
- Educational Codeforces Round 4 D. Array GCD
- Codeforces 624D Array Gcd(数论+dp)
- [DP] Codeforces #623B. Array GCD
- hdu 4947 GCD Array 莫比乌斯反演
- 【树状数组 + 容斥原理】 HDOJ 4947 GCD Array
- HDU 4947 GCD Array 反演+树状数组维护
- AIM Tech Round (Div. 2) D. Array GCD(dp)
- 梯度下降法
- 简单的选择排序
- eclipse中git push到远程库中时发生rejected-non-fast-forward错误的解决办法
- ubuntu adb调试android
- redis面试题总结
- hdu4947 GCD Array
- sas 学习笔记(2)
- 数据库基础概述
- 进程间通信-共享内存
- Android在AutoCompleteTextView中输入字母或者汉字通过Filterable实现自动筛选提醒
- Centos setup opencv
- C语言预处理和函数
- 【数据结构】最大堆的插入与删除
- JQuery 取dom集合 name属性为数组时