题目描述

原题来自:USACO 2008 Dec. Silver

今天是 Bessie 的生日,并且现在是聚会的游戏时间。Bessie 让编号为 1~N 的 N 头奶牛围成一个圈坐(所以除了最后一头牛,第 i 头奶牛与第 i-1 和 i+1 头奶牛相邻,第 N 头奶牛和第 N-1 头与第 1 头奶牛相邻)。同时,Farmer John 拿了个桶,在桶里装了十亿张小纸条,每张小纸条上写有某个范围在[1,10^6]  的整数。

接着,每头奶牛轮流从这个巨桶中抽取一个数 A_i(当然这些数没必要两两不同)。然后第 i 头奶牛走一圈,如果奶牛 i 手中的数字能够被奶牛 j (j<>i) 手中的数字整除,那么奶牛 i 会拍奶牛 j 的头。走完一圈后,奶牛i  回到原来的位置。

奶牛们想让你帮他们计算,对于每头奶牛,它需要拍多少头奶牛的头?

输入格式

第一行包含一个整数N ;
接下来第二到第 N+1 行每行包含一个整数 A_i。

输出格式

第一到第 N 行,第 i 行的输出表示第 i 头奶牛要拍打的牛数量。

样例

样例输入

5
2
1
2
3
4

样例输出

2
0
2
1
3

样例说明

第一头奶牛会拍第二、第三头奶牛,第二头牛不会拍任何奶牛的头,等等。

数据范围与提示

对于全部数据,1<=N<=10^5。

_____________________________________________________________

两两之间暴力枚举判断可以,但是n^2超时。

然后把每一个奶牛的的数值在10^6的范围内把它的倍数加1,这样就不用枚举n个数,复杂的为n*10^6/A_i,这样也可得到76分。

然后把所有的A_i排个序,相同的值的,同事修改而不是加1,这样就可以了。

_____________________________________________________________

 1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=1e5+10;
4 const int maxm=1e6+10;
5 int n;
6 int a[maxn],tj[maxm],aa[maxn];
7 int b[maxn],jc[maxn];
8 int main()
9 {
10 scanf("%d",&n);
11 for(int i=0;i<n;++i)scanf("%d",a+i),aa[i]=a[i];
12 sort(a,a+n);
13 int ba=0,cnt=0;
14 for(int i=0;i<n;++i)
15 {
16 if(a[i]!=ba)
17 {
18 b[++cnt]=a[i];
19 jc[cnt]++;
20 ba=a[i];
21 }
22 else
23 jc[cnt]++;
24 }
25 for(int i=1;i<=cnt;++i)
26 {
27 for(int j=b[i];j<maxm;j+=b[i])
28 tj[j]+=jc[i];
29 }
30 for(int i=0;i<n;++i)
31 printf("%d\n",tj[aa[i]]-1);
32 return 0;
33 }

LOJ10199轻拍牛头的更多相关文章

  1. BZOJ-1607 [Usaco2008 Dec]Patting Heads 轻拍牛头 筛法+乱搞

    1607: [Usaco2008 Dec]Patting Heads 轻拍牛头 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 1383 Solved: 7 ...

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

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

  3. BZOJ_1607_ [Usaco2008_Dec]_Patting_Heads_轻拍牛头_(筛数)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1607 给出一组n个数,求每个数能被多少个其他的数整除. 分析 暴力一点的做法就是每个数去筛它的 ...

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

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

  5. BZOJ【1607】轻拍牛头

    1607: [Usaco2008 Dec]Patting Heads 轻拍牛头 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 1245  Solved: ...

  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. bzoj1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

    筛法. 枚举每个数,它会对它的倍数的答案有贡献. 数大了以后,倍数相应少了很多.比枚举每个数的约数要好的多. 自己yy了一种分步做法.小于sqrt(m)被当作约数枚举,大于sqrt(m)的枚举倍数. ...

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

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

随机推荐

  1. 一个简单的struts2项目

    1.新建一个 Dynamic Web Project 项目 2.配置 struts.xml文件 <?xml version="1.0" encoding="UTF- ...

  2. python-scrapy框架爬取某瓣电视剧信息--异步加载页面

    前期准备,首先要有python环境+scrapy环境+pycharm环境 一.建立爬虫所需的环境,在命令行输入: scrapy startproject doubantv #命名自定义就好 会生成一个 ...

  3. 线程上下文类加载器(Context ClassLoader)

    1.线程上下文类加载器是从jdk1.2开始引入的,类Thread中的getContextClassLoader()与setContextClassLoader(ClassLoader c1),分别用来 ...

  4. GitHub基础使用指南

    引言: 只要进行了一段时间的软件或者编程相关知识的学习,相信大家或多或少都会见过这只"猫猫",这可不是什么宠物店铺的商标,身为即将成为程序猿/媛的你,或者已经是一位程序猿/媛的你, ...

  5. Java中定时器Timer致命缺点(附学习方法)

    简介 这篇文章我一直在纠结到底要不要写,不想写一来因为定时器用法比较简单,二来是面试中也不常问.后来还是决定写了主要是想把自己分析问题思路分享给大家,让大家在学习过程中能够参考,学习态度我相信大部分人 ...

  6. vue调起微信扫一扫

    vue调起微信扫一扫,两个注意的点 1.url必须是不带参的地址栏,如果传了带参数的地址url有可能会出现安卓机能调,苹果机报错或者安卓和苹果都报错 2.this指代问题在vx.ready等等方法里面 ...

  7. 如果生成allure报告过程中报错AttributeError: module 'allure' has no attribute 'severity_level'

    1.pip uninstall pytest-allure-adaptor 2.pip install allure-pytest 3.搞定 快去吃饭吧

  8. js 数组的方法总结

    1.Array.map() 此方法是将数组中的每个元素调用一个提供的函数,结果作为一个新的数组返回,并没有改变原来的数组 let arr = [1, 2, 3, 4, 5]     let newAr ...

  9. 【JavaWeb】书城项目

    书城网站 项目说明 项目地址 阶段一 登录.注册的验证 使用 jQuery 技术对登录中的用户名.密码进行非空验证: 使用 jQuery 技术和正则表达式对注册中的用户名.密码.确认密码.邮箱进行格式 ...

  10. 【Qt】实现程序重启的两种方法

    Qt5/PyQt5 实现程序重启的两种方法 前言 最近在写一个开源项目,需要实现一个程序自动重启的功能.尝试了好几种方式,效果均不太理想. 一开始的实现思路是,记为思路一吧.大概就是写一些 shell ...