这里附上题目链接:[USACO08DEC]Patting Heads S。

                             ~~手动分割~~

题目

思路解析

1.暴力搜索

  1. 将每头牛拿的数字存下。
  2. 分别将每头牛拿的数作为被除数,逐一检查剩下的n-1头牛能否整除被除数。

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int n,a[100002];//共有n头奶牛
int pat_number[1000002];//拿着数字i的牛需要拍打pat_number[i]头牛int main()
{int i,j;//输入数据scanf("%d",&n);for(i=1;i<=n;++i){scanf("%d",a+i);//输入数字a[i]}//for(i=1;i<=n;++i){if(pat_number[a[i]])//若拿着数字i的牛所需拍打的次数已经计算过{continue;}for(j=1;j<i;++j){if(a[i]%a[j]==0){pat_number[a[i]]++;}}for(j=i+1;j<=n;++j){if(a[i]%a[j]==0){pat_number[a[i]]++;}}}//输出结果for(i=1;i<=n;i++){printf("%d\n",pat_number[a[i]]);}return 0;
}

2.构造

每头牛手上都拿了一个数字。

从0次开始,只要数字 i 出现一次,手上拿着的数为 i 的倍数的牛就会多拍拿着 i 的牛一次。

  1. 先找出所有牛拿的数字中最大的数字m。
        scanf("%d",a+i);//输入数字a[i]m=max(m,a[i]);
  1. 统计每个数字出现的次数。
        occurrence_number[*(a+i)]++;//数字a[i]出现的次数加一
  1. 从1到m,逐一判断。只要数字 i 至少出现了一次,就把所有拿着i的倍数的牛所需拍打的牛的数目加上 i 的出现次数。
    //计算并输出结果for(i=1;i<=m;++i){if(occurrence_number[i])//若数字i至少出现了一次{for(j=1;j*i<=m;j++){pat_number[i*j]+=occurrence_number[i];//拿着数字i*j的牛需要多拍occurrence_number[i]次}}}
  1. 将所有牛所需拍打的次数减一,因为在计算时每头牛多拍了自己。
    for(i=1;i<=n;++i){printf("%d\n",pat_number[a[i]]-1);//在计算时每头牛多拍了自己,所以要减掉自己}

AC代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max(A,B) ((A)>(B)?(A):(B))int n,a[100002],m;//共有n头奶牛
int occurrence_number[1000002];//数字i出现了occurrence_number[i]次
int pat_number[1000002];//拿着数字i的牛需要拍打pat_number[i]头牛int main()
{int i,j;//输入数据并计算每个数出现的次数scanf("%d",&n);for(i=1;i<=n;++i){scanf("%d",a+i);//输入数字a[i]m=max(m,a[i]);occurrence_number[*(a+i)]++;//数字a[i]出现的次数加一}//计算并输出结果for(i=1;i<=m;++i){if(occurrence_number[i])//若数字i至少出现了一次{for(j=1;j*i<=m;j++){pat_number[i*j]+=occurrence_number[i];//拿着数字i*j的牛需要多拍occurrence_number[i]次}}}for(i=1;i<=n;++i){printf("%d\n",pat_number[a[i]]-1);//在计算时每头牛多拍了自己,所以要减掉自己}return 0;
}

[USACO08DEC]Patting Heads S题解相关推荐

  1. 【洛谷2926/BZOJ1607】[USACO08DEC]Patting Heads拍头(筛法)

    题目: 洛谷2926 (截止至本博客发表时,BZOJ1607题面有误,正确题面请到洛谷2926查看) 分析: = 一句话题意:给定\(n\)个数\(\{a_i\}\),求对于每个\(a_i\)有多少个 ...

  2. [USACO08DEC]拍头Patting Heads 数学 BZOJ 1607

    题目描述 It's Bessie's birthday and time for party games! Bessie has instructed the N (1 <= N <= 1 ...

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

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1607 题意概括 给出n个数,每一个数字<1000000,对于每一个数,让你求剩余的n-1个数 ...

  4. BZOJ 1607 [Usaco2008 Dec]Patting Heads 轻拍牛头:统计 + 筛法【调和级数】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1607 题意: 给你n个数,问你除a[i]之外,有多少个数是a[i]的约数. 题解: ans ...

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

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

  6. bzoj1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

    傻逼题...(然而一开始题意都不懂) #include<cstdio> #include<cstring> using namespace std; int n,a[11000 ...

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

    翻过来考虑影响,考虑多少数是他的倍数. 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 ...

  8. 【数学1】基础数学问题 - 题单 - 洛谷

    这里写目录标题 [[数学1]基础数学问题 - 题单 - 洛谷](https://www.luogu.com.cn/training/117) [P1143 进制转换](https://www.luog ...

  9. 洛谷 深基 第4部分 基础数学与数论(19-21课)

    洛谷 深基 第4部分 基础数学与数论  第19章 位运算与进制转换 P1143 进制转换 https://www.luogu.com.cn/problem/P1143 洛谷P1143 进制转换的Pyt ...

最新文章

  1. findHomography(src_points, dst_points, CV_RANSAC)
  2. gradle入门,安卓gradle入门
  3. frp后台运行和停止
  4. java如何进行字符串拼接?
  5. js数组截取前5个_想用好 Node.js?这 5 个经典国产项目值得细品
  6. Python框架篇之Django(Template基础:模板语法、过滤器filter)
  7. c语言成绩查询系统_如何用Excel制作成绩查询系统-Leo老师
  8. Git报错解决:fatal: unable to access ‘https://github.com/...‘: OpenSSL SSL_read:..., errno 10054
  9. 【转】使用AIDL实现进程间的通信之复杂类型传递
  10. 计蒜客 第一场 搜狗输入法
  11. 有没有在学习IT营2020年新出Go语言视频教程童鞋,一起探讨
  12. 查看TRP开头的数据量超过1000000的表的index情况
  13. Hadoop实战-MR倒排索引(三)
  14. 清华计算机专硕非全日制,清华大学2018年非全日制MSW专业学位招生信息
  15. rbf神经网络自适应控制matlab仿真,机械系统RBF神经网络控制:设计、分析及Matlab仿真(英文)...
  16. ElasticSearch中Cat接口详解
  17. 第四段第一天_数学模型之层次分析法
  18. 桥牌坐庄训练bm2000 level3闯关记录——A5
  19. 通过CFA一级有用吗?是什么水平?
  20. 根据属地id选择子属地

热门文章

  1. 【CSS】一个DIV在另一个DIV上下左右居中和在屏幕居中(示例)
  2. 安徽大学计算机考研资料汇总
  3. Java对接阿里云图片审核(鉴黄、暴恐涉政、广告等等)
  4. Rstudio常用操作
  5. vr技术与图书馆的结合,碰撞出什么火花呢
  6. micro hdmi引脚定义义_网络中控4进4出HDMI矩阵
  7. Delphi RenameFile 文件改名
  8. 优站收藏(持续更新)
  9. 在VirtualBox中使用招行网银专业版
  10. 导轨式直流电能表 充电桩直流计量-安科瑞 顾月