HDU 4407 Sum(容斥)
来源:互联网 发布:淘宝卖家屏蔽买家消息 编辑:程序博客网 时间:2024/06/06 02:59
题意:一个长度为n的序列(初始为1, 2, 3, ...n),现在q次操作,操作1:给你L,R, p, 求区间[L, R]中与p互质的数的和;
操作2:修改第x个数为c。(n <= 4e5, q <= 1e3)
思路:因为序列是1-n,所以区间求和可以利用容斥,因为q才1000,所以修改可以存起来,查询时暴力更新。
代码:
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 4e5+5;int n, q, x, y, num, yz[maxn];ll ans;map<int, int> m;void dfs(int cur, ll fac, int id){ ll tmp1, tmp2; if(id%2) { ll n = y, d = fac; ans -= (ll)(d+(n/d)*d)*(n/d)/2; n = x-1; ans += (ll)(d+(n/d)*d)*(n/d)/2; } else { ll n = y, d = fac; ans += (ll)(d+(n/d)*d)*(n/d)/2; n = x-1; ans -= (ll)(d+(n/d)*d)*(n/d)/2; } for(int i = cur+1; i < num; i++) dfs(i, fac*yz[i], id+1);}int main(void){ int _; cin >> _; while(_--) { m.clear(); scanf("%d%d", &n, &q); while(q--) { int cmd, p, c; scanf("%d%d", &cmd, &x); if(cmd == 1) { scanf("%d%d", &y, &p); num = 0; int tt = p; for(int i = 2; i*i <= tt; i++) { if(tt % i == 0) { yz[num++] = i; while(tt % i == 0) tt /= i; } } if(tt != 1) yz[num++] = tt; ans = (ll)(x+y)*(y-x+1)/2; for(int i = 0; i < num; i++) dfs(i, yz[i], 1); map<int, int>::iterator it; for(it = m.begin(); it != m.end(); it++) { int fir = it->first; int sec = it->second; if(fir >= x && fir <= y) { if(__gcd(fir, p) == 1) { if(__gcd(sec, p) == 1) ans = ans-fir+sec; else ans = ans-fir; } else { if(__gcd(sec, p) == 1) ans = ans+sec; } } } printf("%lld\n", ans); } else { scanf("%d", &c); m[x] = c; } } } return 0;}
阅读全文
2 0
- hdu 4407 Sum(容斥定理)
- HDU 4407 Sum (容斥原理)
- HDU 4407 - Sum(容斥原理)
- HDU 4407 Sum(容斥)
- hdu 4407 SUM(容斥原理)
- hdu 4407 Sum(容斥原理)
- HDU 4407 Sum(容斥)
- hdu 4407 Sum(容斥)
- HDU 4407 Sum 解题报告(容斥原理)
- HDU 4407 Sum(容斥原理+质因数分解)
- hdu 4407 Sum(容斥原理+数论)
- HDU-4407 Sum(容斥定理+伪离线处理)
- HDU 4407 SUM 【数论,容斥原理】
- hdu 4407 Sum(容斥原理)
- [容斥原理] hdu 4407 Sum
- hdu 4407 Sum 容斥+离线
- HDU-4407-Sum(容斥原理)
- [容斥原理] hdu 4407 Sum
- 关于ARM架构下ucos2任务切换函数OSCtxSw源码分析
- 【转载】用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则
- 数位DP入门后部分题解
- HTTPS原理
- ElasticSearch学习36_Elasticsearch扩展性插件
- HDU 4407 Sum(容斥)
- 杭电2036叉乘法求多边行面积
- 笨办法学Python-习题0 准备工作
- 设计模式
- 关于进程保活问题
- c语言scanf()函数问题
- 快速排序算法
- 【口胡】【坑:对偶图】【Codeforces 671D】【JZOJ 5369】 幽雅的绽放吧,墨染之樱
- 【机器学习】从贝叶斯角度理解正则化缓解过拟合