莫比乌斯反演+二维前缀和——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; ]; )* ...
随机推荐
- HTML5 原生API input file 来实现多图上传,并大图预览
闲来无事,突然想用原生来实现图片的多图上传. 一.效果图大致如下: 1.上传时可以选择多图 2.上传之后缩略图下过图如下: 3.点击缩略图,大图展示当前所点击的图片,并可以左右滑动查看其它的缩略图对应 ...
- v-on 绑定单个或多个事件
<div id="app07"> <!-- v-on:click 鼠标点击事件--> <a v-on:click="DoSomething& ...
- Shiro学习(5)编码、加密
在涉及到密码存储问题上,应该加密/生成密码摘要存储,而不是存储明文密码.比如之前的600w csdn账号泄露对用户可能造成很大损失,因此应加密/生成不可逆的摘要方式存储. 5.1 编码/解码 Shir ...
- action通信机制
当service通信不能很好的完成任务时候, actionlib则可以比较适合实现长时间的通信过程, actionlib通信过程可以随时被查看过程进度, 也可以终止请求, 这样的一个特性, 使得它在一 ...
- HDU - 1712 (分组背包模板)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1712 题意:给你n个课程,每个课程有很多种学习方法,用的时间和取得的效果都不一样,现在你只有m天时间用来学 ...
- [bzoj2839]集合计数 题解 (组合数+容斥)
Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007 ...
- Robotframework之下拉列表select
下拉框控件很常见啊,主要说一下robotframework中怎么玩转下拉框,第一点要注意的就是,别看到下拉的就用select控件去操作,因为很多下拉列表用的不一定就是select控件.robotfra ...
- opencv打开摄像头并新建窗口显示
几个程序使用的基本函数如下: ******************************************************************* cvCreateCameraCap ...
- CentOS6 图形界面(gnome)安装
CentOS6相对于CentOS5的安装有了不少的进步,有不少默认的选项可以选择,如: Desktop :基本的桌面系统,包括常用的桌面软件,如文档查看工具. Minimal Desktop :基本的 ...
- hibernate5.2.10.Final基本配置
1.在官网去下载,解压后在lib/required目录下的所有jar包都是必要的. 2.为了之后配置方便,建议在eclipse里面安装一个东东,操作步骤是在eclipse->Help->I ...