bzoj 1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

翻过来考虑影响,考虑多少数是他的倍数。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdlib>
 5 #include<cmath>
 6 #include<queue>
 7 #include<algorithm>
 8 #include<vector>
 9 #define M 1000009
10 #define EPS 1e-10
11 #define ll long long
12 using namespace std;
13 ll read()
14 {
15     char ch=getchar();
16     ll x=0,f=1;
17     for(;ch<‘0‘||ch>‘9‘;ch=getchar())
18         if(ch==‘-‘)
19           f=-1;
20     for(;ch>=‘0‘&&ch<=‘9‘;ch=getchar())
21         x=x*10+ch-‘0‘;
22     return x*f;
23 }
24 int n,sum[M],a[M],b[M],T,mx;
25 int main()
26 {
27    n=read();
28    for(int i=1;i<=n;i++)
29      {
30        a[i]=read();
31        b[a[i]]++;
32        mx=max(mx,a[i]);
33      }
34    for(int i=1;i<=mx;i++)
35      if(b[i])
36        {
37          for(int j=i;j<=mx;j+=i)
38            sum[j]+=b[i];
39        }
40    for(int i=1;i<=n;i++)
41      printf("%d\n",sum[a[i]]-1);
42    return 0;
43 }
时间: 2024-11-08 14:24:56

bzoj 1607: [Usaco2008 Dec]Patting Heads 轻拍牛头的相关文章

[bzoj 1607] [Usaco2008 Dec]Patting Heads 轻拍牛头 筛数

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1607 1607: [Usaco2008 Dec]Patting Heads 轻拍牛头 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 1654 Solved: 874 [Submit][Status][Discuss] Description 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一

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

1607: [Usaco2008 Dec]Patting Heads 轻拍牛头 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=1607 Description 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶牛相邻.N号奶牛与1号奶牛相邻.农夫

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

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1607 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=1e5+5,M=1e6+5; int n,a[N],c[M],mx,ans[M]; int rdn() { int ret=0;boo

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

[算法]模拟 #include<cstdio> #include<algorithm> using namespace std; const int maxn=100010,maxm=1000010; int a[maxn],A[maxm],n; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); A[a[i]]++; } for

1607 [Usaco2008 Dec]Patting Heads 轻拍牛头

题目大意:n个数中,对其中每一个数,在其它(n-1)个数中有几个是他的因子. 题解:考虑到数Ai的范围不算太大,可以用一个桶统计1~MAX(Ai)每个数出现个数,然后把1~MAX的在MAX以内的倍数筛一遍即可.100000个数在1000000的桶里非常稀疏,忽略出现次数为0的数对时间效率十分重要. 代码: 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<cctype&g

[BZOJ1607][Usaco2008 Dec]Patting Heads 轻拍牛头

1607: [Usaco2008 Dec]Patting Heads 轻拍牛头 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 2590  Solved: 1361[Submit][Status][Discuss] Description 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶牛相邻.N号奶牛与1号奶牛相邻.农夫约翰用很多纸条装

bzoj1607 [Usaco2008 Dec]Patting Heads 轻拍牛头——暴力

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1607 观察一下数据范围,就是纯粹的暴力. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; int const maxn=1e5+5,maxm=1e6+5; int n,a[maxn],num[maxm],ans[maxn]; int main() {

[BZOJ1607] [Usaco2008 Dec] Patting Heads 轻拍牛头 (数学)

Description 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶牛相邻.N号奶牛与1号奶牛相邻.农夫约翰用很多纸条装满了一个桶,每一张包含了一个独一无二的1到1,000,000的数字. 接着每一头奶牛i从柄中取出一张纸条Ai.每头奶牛轮流走上一圈,同时拍打所有手上数字能整除在自己纸条上的数字的牛的头,然后做回到原来的位置.牛们希望你帮助他们确定,每一头奶牛需要拍打的牛. I

[Usaco2008 Dec]Patting Heads 轻拍牛头

Description 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶牛相邻.N号奶牛与1号奶牛相邻.农夫约翰用很多纸条装满了一个桶,每一张包含了一个独一无二的1到1,000,000的数字. 接着每一头奶牛i从柄中取出一张纸条Ai.每头奶牛轮流走上一圈,同时拍打所有编号能整除在纸条上的数字的牛的头,然后做回到原来的位置.牛们希望你帮助他们确定,每一头奶牛需要拍打的牛. Input