莫比乌斯反演+二维前缀和——hdu4746二刷
第二次做这题,求前缀和的时候还是卡住了
fg函数的反演是可以直接用莫比乌斯基本代换式来代换的
#include<bits/stdc++.h>
using namespace std;
#define maxn 500005
#define ll long long bool vis[maxn];
int mu[maxn],prime[maxn],mm,num[maxn];
void init(){//顺便筛出每个数的质因子个数
mu[]=;num[]=;
for(int i=;i<maxn;i++){
if(!vis[i]){
mu[i]=-;
prime[++mm]=i;
num[i]=;
}
for(int j=;j<=mm;j++){
if(prime[j]*i>=maxn)break;
vis[i*prime[j]]=;
if(i%prime[j]==){
num[i*prime[j]]=num[i]+;
mu[i*prime[j]]=;
break;
}
else {
mu[i*prime[j]]=-mu[i];
num[i*prime[j]]=num[i]+;
}
}
}
} long long n,m,p;
int sum[maxn][];//前缀和,质因子个数,等式值
void prework(){
for(int k=;k<maxn;k++)
for(int j=;j*k<maxn;j++)
sum[j*k][num[k]]+=mu[j]; for(int i=;i<maxn;i++)
for(int j=;j<=;j++)
sum[i][j]+=sum[i][j-];
for(int i=;i<maxn;i++)
for(int j=;j<=;j++)
sum[i][j]+=sum[i-][j];
} int main(){
init();
prework();
int t;cin>>t;
while(t--){
scanf("%lld%lld%lld",&n,&m,&p);
if(n>m)swap(n,m);
if(p>=){
printf("%lld\n",n*m);
continue;
} long long ans=;
for(int l=,r;l<=n;l=r+){
r=min(n/(n/l),m/(m/l));
ans+=(sum[r][p]-sum[l-][p])*(n/l)*(m/l);
}
cout<<ans<<'\n';
}
}
莫比乌斯反演+二维前缀和——hdu4746二刷的更多相关文章
- Nowcoder farm ( 树状数组、二维前缀和、二维偏序 )
题目链接 分析 : 最简单的想法当然就是去模拟 直接对每个施肥料的操作进行模拟.然后计算贡献 但是这显然会超时.这题需要换一个思维 对于一个土地(也就是二维平面上的一个点)的种类是 T' 如果它被操作 ...
- [CSP-S模拟测试]:任(duty)(二维前缀和)
题目描述 $liu\_runda$退役之后就失去梦想开始咸鱼生活了……$Bilibili$夏日画板活动中,所有人都可以在一块画板上进行像素画创作.$UOJ$群有一群无聊的人决定在画板上创作一个$50\ ...
- openjudge1768 最大子矩阵[二维前缀和or递推|DP]
总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的 ...
- COGS1752 [BOI2007]摩基亚Mokia(CDQ分治 + 二维前缀和 + 线段树)
题目这么说的: 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它 ...
- poj-3739. Special Squares(二维前缀和)
题目链接: I. Special Squares There are some points and lines parellel to x-axis or y-axis on the plane. ...
- Good Bye 2015 C. New Year and Domino 二维前缀
C. New Year and Domino They say "years are like dominoes, tumbling one after the other". ...
- 计蒜客模拟赛D1T1 蒜头君打地鼠:矩阵旋转+二维前缀和
题目链接:https://nanti.jisuanke.com/t/16445 题意: 给你一个n*n大小的01矩阵,和一个k*k大小的锤子,锤子只能斜着砸,问只砸一次最多能砸到多少个1. 题解: 将 ...
- 二维前缀和模板题:P2004 领地选择
思路:就是使用二维前缀和的模板: 先放模板: #include<iostream> using namespace std; #define ll long long ; ll a[max ...
- 二维前缀和好题hdu6514
#include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; ]; )* ...
随机推荐
- Qt:代码里存在中文时带来的问题
一.报错: 常量中有换行符 方法1: 把文本文件转化为unicode或者utf-8, 同是还要带上QString::fromLocal8Bit() 还有其他方法,感觉不靠谱 二.显示异常:乱码 QSt ...
- CSP-S2019初赛游记
考得不好,不过\(86.5\)分应该勉强能进. 比赛前 比赛前的一个星期是有点慌,因为初赛是必须要复习的.初赛和复赛很不一样,复赛可以得一等奖,初赛不一定能考得很好. 最恶心的当然是那些计算机的&qu ...
- 页面background不随滚动条填充颜色
这我又遇到了个问题,这问题我连问都不知道该怎么问,先搁在这儿,如果有办法了,再来补充. 原因:因为颜色板块是100%宽度,和页面保持同宽,所以拖动滚动条,右侧就大于了页面宽度. bug: 我写页面的 ...
- Linux串口驱动程序(3)-打开设备
先来分析一下串口打开的过程: 1.用户调用open函数打开串口设备文件:2.在内核中通过tty子系统,把open操作层层传递到串口驱动程序中:3.在串口驱动程序中的xx_open最终实现这个操作.这里 ...
- NAT和路由器 基本概念
NAT(Network Address Translation, 网络地址转换)是1994年提出的.当在专用网内部的一些主机本来已经分配到了本地IP地址(即 仅在本专用网内使用的专用地址),但现在又想 ...
- 贪婪算法--Python
贪婪算法:每步都采取最优的做法,即每步都选择局部最优解,最终得到的就是全局最优解. 假设你办了个广播节目,要让全美50个州的听众都收听得到.为此你需要决定在哪些广播台播出.在每个广播台播出都需要支付费 ...
- ProcessFun
#pragma once #ifndef __PROCESSFUN_H__ #define __PROCESSFUN_H__ #include <iostream> #include &l ...
- CSS:CSS Id 和 Class选择器
ylbtech-CSS:CSS Id 和 Class选择器 1.返回顶部 1. CSS Id 和 Class id 和 class 选择器 如果你要在HTML元素中设置CSS样式,你需要在元素中设置& ...
- POJ 3304 Segments (判断直线与线段相交)
题目链接:POJ 3304 Problem Description Given n segments in the two dimensional space, write a program, wh ...
- Codeforces 1173A Nauuo and Votes
题目链接:http://codeforces.com/problemset/problem/1173/A 思路:模拟. AC代码: #include<bits/stdc++.h> usin ...