2020 ccpc 吉林省赛 H

题意:

给一组数 a i a_i ai​,求 ∑ i = 1 n ∑ j = 1 n [ g c d ( a i , a j ) = d ] \sum\limits_{i=1}^n\sum\limits_{j=1}^{n}[gcd(a_i,a_j)=d] i=1∑n​j=1∑n​[gcd(ai​,aj​)=d]

在赛场上我当时脑抽写了个假的算法,看似是 O ( T m l o g m ) O(Tmlogm) O(Tmlogm),但实际上是 O ( T m k ) O(Tmk) O(Tmk),只能说这道题的出题人真的没有认真出数据,没有全为1的 x的数据,结果我跑过去才发现假了,现在补个正解

首先裸的莫比乌斯反演,直接上套路秒了,我当时傻叉了换了另一种方式反演

g ( d ) = ∑ i = 1 n ∑ j = 1 n [ g c d ( a i , a j ) = d ] g(d)=\sum\limits_{i=1}^n\sum\limits_{j=1}^{n}[gcd(a_i,a_j)=d] g(d)=i=1∑n​j=1∑n​[gcd(ai​,aj​)=d]

f ( x ) = ∑ x ∣ d g ( d ) = ∑ i = 1 n ∑ j = 1 n ∑ x ∣ d [ g c d ( a i , a j ) = d ] = ∑ i = 1 n ∑ j = 1 n [ x ∣ a i 且 x ∣ a j ] f(x)=\sum_{x|d}g(d)=\sum\limits_{i=1}^n\sum\limits_{j=1}^{n}\sum_{x|d}[gcd(a_i,a_j)=d]=\sum\limits_{i=1}^n\sum\limits_{j=1}^{n}[x|ai且x|aj] f(x)=∑x∣d​g(d)=i=1∑n​j=1∑n​∑x∣d​[gcd(ai​,aj​)=d]=i=1∑n​j=1∑n​[x∣ai且x∣aj]

g ( n ) = ∑ n ∣ d m u ( d n ) f ( d ) g(n)=\sum_{n|d}mu(\frac{d}{n})f(d) g(n)=∑n∣d​mu(nd​)f(d)

g 和 f 都 可 以 在 一 组 中 由 于 调 和 级 数 在 O ( n l o g n ) 时 间 内 处 理 出 来 , 复 杂 度 O ( T n l o g n ) , 具 体 看 代 码 g和f都可以在一组中由于调和级数在O(nlogn)时间内处理出来,复杂度O(Tnlogn),具体看代码 g和f都可以在一组中由于调和级数在O(nlogn)时间内处理出来,复杂度O(Tnlogn),具体看代码

#include<bits/stdc++.h>using namespace std;
typedef long long ll;
const int maxn=1e5+5;
int mu[maxn],prime[maxn],t,n,m,k,a;
bool v[maxn];
ll cnt[maxn],cnt_ans[maxn],ans[maxn],tot;
void init(){ mu[1]=1;for(int i=2;i<maxn;++i){ if(!v[i])prime[++tot]=i,mu[i]=-1;for(int j=1;j<=tot&&prime[j]*i<maxn;++j){ v[i*prime[j]]=1;if(i%prime[j]==0) break;mu[i*prime[j]]=-mu[i];}}
}
int main(){ios::sync_with_stdio(false);cin.tie(0); init();cin>>t;while(t--){ cin>>n>>m>>k;for(int i=1;i<=m;++i)ans[i]=cnt_ans[i]=cnt[i]=0;for(int i=1;i<=n;++i){ cin>>a;cnt[a]++;}for(int i=1;i<=m;++i){ for(int j=i;j<=m;j+=i){ cnt_ans[i]+=cnt[j];}}for(int i=1;i<=m;++i){ for(int j=i;j<=m;j+=i){ ans[i]+=cnt_ans[j]*cnt_ans[j]*mu[j/i];}}for(int i=1;i<=k;++i){ cin>>a;cout<<ans[a]<<"\n";}}return 0;
}

2020 ccpc 吉林省赛 H相关推荐

  1. 2020 CCPC网络赛 赛后感

    第一次参加,做过去年19年网络赛的题,去年是四个水题稳做出,然后还有两个线段树和树状数组的题(好像是),所以本来对这次网络赛挺有信心的(去年好像四个题就能进,当然要手速快). 这次网络赛还是有四个水题 ...

  2. 第十三届 ACM/CCPC 吉林省赛 J. Send Scores Problem

    ACM/CCPC 历届真题 题解目录 Problem J. Send Scores Problem Time Limit: 1000ms Memory Limit: 512MB Description ...

  3. icpc 2020沈阳区域赛补题

    2020沈阳区域赛 H 这题是一道典型dp 但是需要用滚动数组优化空间, 在状态转移的时候需要考虑一下是否满足天数条件. 我真的吐了,debug改了半天之后发现错误原因是: 排序应该是 sort(v+ ...

  4. Jumping Monkey(CCPC网络赛重赛)

    Jumping Monkey(CCPC网络赛重赛) 题意: n个点的树,每个点有一个不同的值aia_iai​.现在一个猴子在树上,这个猴子从点u跳到点v当且仅当ava_vav​是u到v最短路径上的最大 ...

  5. (四面体)CCPC网络赛 HDU5839 Special Tetrahedron

    1 CCPC网络赛 HDU5839 Special Tetrahedron 2 题意:n个点,选四个出来组成四面体,要符合四面体至少四条边相等,若四条边相等则剩下两条边不相邻,求个数 3 思路:枚举四 ...

  6. # USACO@2020铜级赛第二题

    USACO@2020铜级赛第二题 题目(摘自usaco.org) Farmer John 的远房亲戚 Ben 是一个疯狂的科学家.通常这会在家庭聚会时造成不小的摩擦,但这偶尔也会带来些好处,尤其是当 ...

  7. i春秋2020新春公益赛WEB复现Writeup

    i春秋2020新春公益赛WEB复现Writeup 说实话这个比赛打的我是一点毛病都没有,还是觉得自己掌握的东西太少了,,, 尤其是sql注入,都被大佬们玩出花来了,可能自己太菜,,,哭了!!! 关于S ...

  8. 2020 CCPC 绵阳站 J-Joy of Handcraft (调和级数 线段树)

    2020 CCPC 绵阳站 J-Joy of Handcraft (调和级数 线段树) 之前一直对线段树有种恐惧感,感觉十分晦涩难懂,但是我还是得迎男而上!这题必须补!我说的!耶稣都留不住! 题目 h ...

  9. 【2020团队天梯赛模拟题L2-1】 根据输出序列判断是否是栈的输出结果(C语言)

    [2020团队天梯赛模拟题L2-1] 根据输出序列判断是否是栈的输出结果(C语言) (因为找不到题目只有回忆写题了)题目描述:输出m,n,k3个整数,其中m代表栈的最大存储容量,n代表输出序列的个数, ...

最新文章

  1. python工厂模式 django_python设计模式-工厂方法模式
  2. nginx配置多个二级子域名
  3. 设置mysql允许外网访问
  4. html5 跳转参数不显示_HTML5、CSS3、ES6新特性总结
  5. kettle-如何在kettle中编写java代码
  6. Matlab代码:综合能源系统(IES)的优化调度
  7. 如何撰写网络营销策划方案?
  8. Transition过渡动画
  9. python代码画樱花-如何用Python代码实现樱花树效果
  10. 关于打麻将的高大上语言艺术
  11. Linux:sk_buff完全剖析与理解【转】
  12. 给键盘加上音效(机械键盘音效)
  13. Selenium基本二次封装
  14. 大型企业如何搭建私有云计算平台
  15. PyQt5基本控件之菜单栏QMenuBar
  16. Matlab 数值计算----二分法求非线性方程组
  17. 计算机恢复数据怎么恢复,电脑不小心删除的文件如何恢复?教你数据恢复方法!...
  18. 春暖花开--2013年度总结
  19. prism绘制直方图
  20. Android support v4、v7、v13、v14、v17和其他support库免费下载

热门文章

  1. Teamcenter之SOA入门
  2. 三维地图(功能和E都市的一样)
  3. 编程设计思路怎么写_微商软文怎么写吸引人?写作高手的内功心法
  4. (轉貼) 解決 AppLocale 造成的程式亂碼現象 (OS) (Windows)
  5. 删除我的电脑中的百度云管家图标
  6. 安装django-cors-headers
  7. 缺失msvcp110.dll
  8. 计算机中期答辩ppt讲述内容,深度学习中期答辩ppt
  9. 微软服务器模式表格多维,在表格模式下安装 Analysis Services
  10. js 触发 onblur事件