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

来源:互联网 发布:大数据分析的案例 编辑:程序博客网 时间:2024/06/06 16:55

→题目链接←

纯暴力搞显然是过不了的

我们记录下每个数的数量,然后算出这个数对其他的数的贡献

最后输出时要减一,因为它算贡献时是算了自己的


代码:

#include<iostream>#include<cstdio>#include<queue>#include<vector>#define inf 999999999#define ll long longusing namespace std;int n;int num[1000010];int a[100010];int ans[1000010];int Max=0;int main(){scanf("%d",&n);for(int i=1; i<=n; i++)scanf("%d",&a[i]),num[a[i]]++,Max=max(Max,a[i]);for(int i=1; i<=Max; i++){if(!num[i])continue;for(int j=i; j<=Max; j+=i){ans[j]+=num[i];}}for(int i=1; i<=n; i++){printf("%d\n",ans[a[i]]-1);}return 0;}


原创粉丝点击