当前位置: 首页 > news >正文

luogu P3312 [SDOI2014]数表

传送门

我们看要求的东西\[\sum_{i=1}^{n}\sum_{j=1}^{m}[\sigma(gcd(i,j))\le a]\sigma(gcd(i,j))\]

然而\(\le a\)比较烦,可以先去掉这个限制

没有这个限制,我们显然可以枚举每个k,求出gcd为k的数字对数,然后乘上\(\sigma(k)\)再加起来

把这个柿子写出来\[\sum_{k=1}^{min(n,m)}\sigma(k)\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=k]\]

根据套路,可以得到\[\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=k]=\sum_{k|d}\mu(\frac{d}{k})\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor\]

所以原式等于\[\sum_{k=1}^{min(n,m)}\sigma(k)\sum_{k|d}\mu(\frac{d}{k})\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor\]\[\sum_{d=1}^{min(n,m)}\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor\sum_{k|d}\sigma(k)\mu(\frac{d}{k})\]

后面那个东西可以枚举倍数,然后求出前缀和,然后直接数论分块救星了

现在加上\(a\)的限制,那么只有\(\le a\)\(\sigma(k)\)能造成贡献,所以把询问离线,然后按\(a\)排序,依次把满足条件的\(\sigma(k)\)加进前缀和,因为要动态维护前缀和,树状数组即可

#include<bits/stdc++.h>
#define LL long long
#define db double
#define il inline
#define re register

using namespace std;
const int N=1e5+10;
il int rd()
{
    int x=0,w=1;char ch=0;
    while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
    return x*w;
}
int q,a[N],an[N];
LL prm[N],mu[N],pp[N],xgm[N],tt,ans;
il bool cmp(int a,int b){return xgm[a]<xgm[b];}
int c[N];
il int md(int x){return x&2147483647;}
il void ad(int x,int y){while(x<=N-10) c[x]+=y,x+=x&(-x);}
il int gsm(int x){int an=0;while(x) an+=c[x],x-=x&(-x);return an;}
struct node
{
    int n,m,a,i;
    bool operator < (const node &bb) const {return a<bb.a;}
}qq[N];

int main()
{
    mu[1]=1;
    for(int i=2;i<=N-10;++i)
    {
        if(!pp[i]) pp[i]=1,mu[i]=-1,prm[++tt]=i;
        for(int j=1;j<=tt&&i*prm[j]<=N-10;++j)
        {
            pp[i*prm[j]]=1,mu[i*prm[j]]=-mu[i];
            if(i%prm[j]==0) {mu[i*prm[j]]=0;break;}
        }
    }
    for(int i=1;i<=N-10;++i)
        for(int j=i;j<=N-10;j+=i)
            xgm[j]+=i;
    for(int i=1;i<=N-10;++i) a[i]=i;
    sort(a+1,a+N-10+1,cmp);
    q=rd();
    for(int i=1;i<=q;++i)
    {
        qq[i].n=rd(),qq[i].m=rd(),qq[i].a=rd(),qq[i].i=i;
        if(qq[i].n>qq[i].m) swap(qq[i].n,qq[i].m);
    }
    sort(qq+1,qq+q+1);
    for(int i=1,j=1;i<=q;++i)
    {
        while(j<=N-10&&xgm[a[j]]<=qq[i].a)
        {
            int x=a[j];
            for(int k=1;x*k<=N-10;++k) ad(x*k,xgm[x]*mu[k]);
            ++j;
        }
        int n=qq[i].n,m=qq[i].m,ii=qq[i].i;
        for(int k=1,l;k<=n;k=l+1)
        {
            l=min(n/(n/k),m/(m/k));
            an[ii]=an[ii]+(gsm(l)-gsm(k-1))*(n/k)*(m/k);
        }
    }
    for(int i=1;i<=q;++i) printf("%d\n",md(an[i]));
    return 0;
}

转载于:https://www.cnblogs.com/smyjr/p/10400790.html

相关文章:

  • Cron表达式以及定时任务配置
  • android热修复--Tinker
  • csv文件读写处理
  • 友链
  • HTML5 File API 全介绍
  • Grafana 利用Grafana Variables变量配置快速切换不同主机的图表数据展示
  • 在Windos上安装Nginx
  • [UE4]VR手柄按键参考
  • 2019 GDUT Rating Contest II : Problem G. Snow Boots
  • ORACLE查看数据库已安装补丁
  • VueJs之自动打开浏览器配置
  • ssh远程 和 上传/下载工具
  • DQN(Deep Reiforcement Learning) 发展历程(二)
  • Python使用Flask框架,结合Highchart,自定义导出菜单项目及顺序
  • 软件的安装
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • iOS小技巧之UIImagePickerController实现头像选择
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Vue ES6 Jade Scss Webpack Gulp
  • vue-cli3搭建项目
  • Wamp集成环境 添加PHP的新版本
  • 半理解系列--Promise的进化史
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 蓝海存储开关机注意事项总结
  • 设计模式 开闭原则
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用Visual Studio开发以太坊智能合约
  • 06-01 点餐小程序前台界面搭建
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #### go map 底层结构 ####
  • #includecmath
  • $.ajax,axios,fetch三种ajax请求的区别
  • $refs 、$nextTic、动态组件、name的使用
  • (13):Silverlight 2 数据与通信之WebRequest
  • (JS基础)String 类型
  • (笔试题)分解质因式
  • (层次遍历)104. 二叉树的最大深度
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (南京观海微电子)——I3C协议介绍
  • (四)Linux Shell编程——输入输出重定向
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • 、写入Shellcode到注册表上线
  • .bashrc在哪里,alias妙用
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net下简单快捷的数值高低位切换
  • .net中生成excel后调整宽度
  • @Builder用法
  • @selector(..)警告提示
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [1127]图形打印 sdutOJ
  • [AAuto]给百宝箱增加娱乐功能
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [Android]使用Android打包Unity工程
  • [AutoSar]BSW_Com02 PDU详解