题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1607

题意:

  给你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:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 100005
#define MAX_R 1000005 using namespace std; int n;
int a[MAX_N];
int cnt[MAX_R];
int ans[MAX_R]; int main()
{
scanf("%d",&n);
memset(cnt,,sizeof(cnt));
memset(ans,,sizeof(ans));
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
cnt[a[i]]++;
}
for(int i=;i<MAX_R;i++)
{
if(cnt[i]==) continue;
for(int j=i;j<MAX_R;j+=i)
{
ans[j]+=cnt[i];
}
}
for(int i=;i<=n;i++)
{
printf("%d\n",ans[a[i]]-);
}
}

BZOJ 1607 [Usaco2008 Dec]Patting Heads 轻拍牛头:统计 + 筛法【调和级数】的更多相关文章

  1. BZOJ 1607: [Usaco2008 Dec]Patting Heads 轻拍牛头 筛法

    1607: [Usaco2008 Dec]Patting Heads 轻拍牛头 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lyds ...

  2. BZOJ 1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

    1607: [Usaco2008 Dec]Patting Heads 轻拍牛头 Description   今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏.     贝茜让N(1≤N≤10 ...

  3. bzoj 1607 [Usaco2008 Dec]Patting Heads 轻拍牛头——枚举倍数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1607 #include<iostream> #include<cstdio ...

  4. BZOJ——1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

    http://www.lydsy.com/JudgeOnline/problem.php?id=1607 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 2 ...

  5. bzoj 1607: [Usaco2008 Dec]Patting Heads 轻拍牛头【瞎搞】

    某种意义上真毒瘤?我没看懂题啊...于是看了题解 就是筛约数的那种方法,复杂度调和级数保证O(nlogn) 所以这题啥意思啊 #include<iostream> #include< ...

  6. [bzoj1607][Usaco2008 Dec]Patting Heads 轻拍牛头_筛法_数学

    Patting Heads 轻拍牛头 bzoj-1607 Usaco-2008 Dec 题目大意:题目链接. 注释:略. 想法:我们发现,位置是没有关系的. 故,我们考虑将权值一样的牛放在一起考虑,c ...

  7. 【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头(特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1607 其实题目描述不清楚,应该是 别人拿的数能整除自己拿的数 数据范围很大,n<=100000 ...

  8. 【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

    [算法]模拟 #include<cstdio> #include<algorithm> using namespace std; ,maxm=; int a[maxn],A[m ...

  9. BZOJ1607 [Usaco2008 Dec]Patting Heads 轻拍牛头 【筛法】

    题目 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶牛相邻.N号奶牛与1号奶牛相邻 ...

随机推荐

  1. java GC(Garbage Collector) | System.gc()

    http://win.sy.blog.163.com/blog/static/94197186201151093543556/     Java垃圾回收调优

  2. VueJS绑定缩写:可省略v-on、v-bind

    v-bind 缩写 Vue.js 为两个最为常用的指令提供了特别的缩写: <!-- 完整语法 --> <a v-bind:href="url"></a ...

  3. oracle中字符串类似度函数实測

    转载请注明出处:http://blog.csdn.net/songhfu/article/details/40074795 主要利用:oracle函数-SYS.UTL_MATCH.edit_dista ...

  4. C语言的##

    比如说我定义一个宏:#define DECLARE_DYNAMIC(class_name) \public:static CRuntimeClass class##class_name; \virtu ...

  5. java中的双重锁定检查(Double Check Lock)

    原文:http://www.infoq.com/cn/articles/double-checked-locking-with-delay-initialization#theCommentsSect ...

  6. js时间戳格式化成日期格式的多种方法

    js需要把时间戳转为为普通格式,一般的情况下可能用不到的, 下面先来看第一种吧 复制代码代码如下: function getLocalTime(nS) { return new Date(parseI ...

  7. 基于IAP和网口升级固件

    基于IAP和网口升级固件 一.      需求引入 现有嵌入式设备:基于ARM Cortex-M3处理器.带以太网通讯功能. 为减少设备维护成本节省宝贵的时间和金钱,须要设计网口升级固件功能. 本文描 ...

  8. 循序渐进学Python 1 安装与入门

    1 安装 2 使用 2.1 运行程序 3 艺搜参考 by 2013年10月16日 安装 Windows安装版,源码,帮助文档: 使用 打开开始菜单中的Python GUI启动Python解释器: 启动 ...

  9. WPF之DataTemplateSelector技巧

    WPF中如何通过一个属性来控制对象的模板,属性值改变时对象的模板会跟随改变? 两个关键点   1 属性/对象更改通知 方法一:继承INotifyPropertyChanged接口,当属性值更改时需要让 ...

  10. EasyPlayer播放海康大华RTSP流时RTSPClient客户端连接兼容问题的解决

    在之前的博客<EasyPlayer RTSP播放器对RTSP播放地址url的通用兼容修改意见>中,我描述了遇到的一个客户在播放大华某款摄像机时地址不兼容的问题,这不,团队刚刚参考我的这个意 ...