博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1607 [Usaco2008 Dec]Patting Heads 轻拍牛头:统计 + 筛法【调和级数】
阅读量:4517 次
发布时间:2019-06-08

本文共 749 字,大约阅读时间需要 2 分钟。

题目链接:

题意:

  给你n个数,问你除a[i]之外,有多少个数是a[i]的约数。

 

题解:

  ans[i]表示这n个数中有多少个数是i的约数。

  对于a[i],它对它倍数的答案有贡献:ans[a[i]*k]++

 

  为了提高效率,可以先合并相同的a[i]。

  cnt[i]代表值为i的数字有多少个。

  所以变为:ans[i*k]+=cnt[i]

 

  枚举每个数的倍数的总复杂度为O(nlogn)(调和级数)。

 

  最后输出ans[a[i]]-1就好啦(不算自己)。

 

AC Code:

1 #include 
2 #include
3 #include
4 #define MAX_N 100005 5 #define MAX_R 1000005 6 7 using namespace std; 8 9 int n;10 int a[MAX_N];11 int cnt[MAX_R];12 int ans[MAX_R];13 14 int main()15 {16 scanf("%d",&n);17 memset(cnt,0,sizeof(cnt));18 memset(ans,0,sizeof(ans));19 for(int i=1;i<=n;i++)20 {21 scanf("%d",&a[i]);22 cnt[a[i]]++;23 }24 for(int i=1;i

 

转载于:https://www.cnblogs.com/Leohh/p/7603745.html

你可能感兴趣的文章
06-基础-系统指令-v-model-语法糖原理
查看>>
论文网站相关链接
查看>>
ipad4自动下载了ios8的安装包,好几个G啊,不想更新,怎么删了呢?
查看>>
JS中的Navigator 对象
查看>>
Android 开源控件与常用开发框架开发工具类
查看>>
记录一次网站打开卡--排故障过程
查看>>
第四章小结
查看>>
Windows7下python2.7.6环境变量配置
查看>>
java设计模式------代理模式
查看>>
WPF学习笔记----注释标记,使用自定义资源字典(style)文件的流程
查看>>
元素定位的八大法则
查看>>
Sublime Text 3 使用小记
查看>>
总结Pycharm里面常用的快捷键
查看>>
util.promisify 的那些事儿
查看>>
配置phpstudy+phpstorm+xdebug环境
查看>>
BZOJ 1079 [SCOI2008]着色方案
查看>>
[Win8.1系统]双系统
查看>>
HDU 3899 树形DP
查看>>
获取当前页面url信息
查看>>
Java容器类源码分析前言之集合框架结构(基于JDK8)
查看>>