目录

  • 题目
  • 解题思路
  • AC代码
    • C++
    • Java

题目

每天,作为她绕农场行走的一部分,奶牛 Bessie 会经过她最喜爱的草地,其中种有 N 朵花(五颜六色的雏菊),编号为 1…N,排列成一行。

花 i 有 pi 朵花瓣。

作为一名崭露头角的摄影家,Bessie 决定给这些花拍些照片。

具体地说,对于每一对满足 1 ≤ i ≤ j ≤ N 的花 (i,j),Bessie 会给从花 i 到花 j 之间的所有花(包括 i 和 j)拍一张照。

后来 Bessie 查看这些照片时注意到有些照片里存在「平均」的花——一朵恰好有 P 朵花瓣的花,其中 P 等于照片中所有花的花瓣数量的平均值。

Bessie 的照片中有几张存在平均的花?

输入格式
输入的第一行包含 N。

第二行包含 N 个空格分隔的整数 p1…pN

输出格式
输出存在平均的花的照片数量。

数据范围
1 ≤ N ≤ 100,
1 ≤ pi ≤ 1000

输入样例:

4
1 1 2 3

输出样例:

6

样例解释
每张仅包含一朵花的照片均会被计入答案(在这个样例中有 4 张)。

另外,在这个样例中 (i,j) 为 (1,2) 和 (2,4) 所对应的照片也存在平均的花。

解题思路

首先,该题的数据范围为 1 ≤ N ≤ 100,可见数据量很小,允许 O(n3) 的算法,(最坏情况下100 * 100 * 100 = 106 < 108),所以这题可以直接暴力枚举;

所以,我们只需要两重循环,来枚举拍照区间 [i, j],同时用 Set 记录区间 [i, j] 内出现的花瓣数,并求得区间 [i, j] 之间的花瓣数的平均值,判断该平均值是否在区间 [i, j] 内出现过即可;

由于每张仅包含一朵花的照片均会被计入答案,所以 i == j 的情况可以直接跳过,存在平均的花的照片数量至少为 N,之后每有一个符合条件则在此基础上加一即可。

AC代码

C++

#include<iostream>
#include<algorithm>
#include<set>using namespace std;const int N = 101;
int p[N];int main()
{int n = 0;scanf("%d", &n);for(int i = 0; i < n; i++) scanf("%d", &p[i]);int res = n;for(int i = 0; i < n - 1; i++){double sum = p[i];set<double> s;s.insert(p[i]);for(int j = i + 1; j < n; j++){sum += p[j];s.insert(p[j]);if(s.count(sum / (j - i + 1))) res++;   // 判断照片中是否有花瓣数等于照片中花瓣数的平均值}}printf("%d", res);
}

Java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Set;public class Main {public static void main(String[] args) throws IOException {BufferedReader in = new BufferedReader(new InputStreamReader(System.in));PrintWriter out = new PrintWriter(System.out);int n = Integer.parseInt(in.readLine());int[] p = new int[n];String string = in.readLine();for(int i = 0; i < n; i++) p[i] = Integer.parseInt(string.split(" ")[i]);int count = n;for(int i = 0; i < n - 1; i++) {double sum = p[i];Set<Double> set = new HashSet<Double>();set.add((double)p[i]);for(int j = i + 1; j < n; j++) {set.add((double)p[j]);sum += p[j];if(set.contains(sum / (j - i + 1))) count++;   // 判断照片中是否有花瓣数等于照片中花瓣数的平均值}}out.print(count);out.flush();in.close();}}

AcWing 3347. 菊花链相关推荐

  1. 3347 菊花链(暴力枚举、哈希表)

    1. 问题描述: 每天,作为她绕农场行走的一部分,奶牛 Bessie 会经过她最喜爱的草地,其中种有 N 朵花(五颜六色的雏菊),编号为 1-N,排列成一行.花 i 有 pi 朵花瓣.作为一名崭露头角 ...

  2. AcWing 734. 能量石 (01背包)+(贪心 - 领项交换)

    AcWing 734. 能量石 #include<cstdio> #include<algorithm> #include<cstring> #include< ...

  3. 解题报告:AcWing 352. 闇の連鎖(树上差分、方案统计)

    https://www.acwing.com/problem/content/354/ 在没有附加边的情况下,我们发现这是一颗树,那么再添加条附加边(x,y)后,会造成(x,y)之间产生一个环 如果我 ...

  4. acwing算法题--铁路与公路

    原题链接:https://www.acwing.com/problem/content/description/4077/ #include <iostream> #include < ...

  5. acwing算法题--看图做题

    原题链接:https://www.acwing.com/problem/content/3992/ 找规律题 #include<iostream>using namespace std;i ...

  6. acwing算法题--不同的数

    原题链接:https://www.acwing.com/problem/content/3991/ #include <iostream> #include <unordered_m ...

  7. acwing算法题--分组背包问题

    原文链接:https://www.acwing.com/problem/content/9/ #include <iostream>using namespace std;const in ...

  8. acwing算法题--二维费用的背包问题

    原题链接:https://www.acwing.com/problem/content/8/ #include <iostream>using namespace std;const in ...

  9. acwing算法题--混合背包问题

    原题链接:https://www.acwing.com/problem/content/7/ #include <iostream> #include <vector>usin ...

最新文章

  1. 微信小程序左上角返回按钮跳转到指定页面
  2. excel 按数据拆分 xlam_利用EXCEL提升效率之五分钟缩短至五秒批量合并EXCEL批量转换PDF批量上传报关单随附单据___EXCELVBA...
  3. 袁新生《LINGO和Excel在数学建模中的应用》
  4. python定义一个dog类 类属性有名字毛色体重_面向对象实践,练习,Python
  5. Boost:不受约束的集合bimap的测试程序
  6. php网站调试出现的简单问题,调试php时网站出现502的解决方法
  7. 动态规划 —— 动态规划概述
  8. 杀掉php所有进程,杀死某个用户的所有进程
  9. 装饰模式-包装request和response
  10. 电脑如何安装php文件夹在哪个文件夹,win7系统桌面文件在c盘哪个文件夹
  11. Network install linux - Hacking initrd.img word doc archive
  12. AD20软件安装详细教程
  13. 符号_液压图形符号识别之减压阀符号原理
  14. Python书写格式
  15. ECharts-中国省市地图
  16. python运动场地预约系统毕业设计开题报告
  17. Oracle数据库Bitand()函数用法(计算位移)
  18. 计算机学院2022级新生邀请赛(三)
  19. 音频制作的现状与发展趋势
  20. FICO-Payment Terms 收付款条件和分期付款设置

热门文章

  1. Uncaught ReferenceError: data is not defined
  2. 看上去不相关的AI和嵌入式有什么关系?
  3. 策略模式 — 孔明排兵布阵
  4. Multihead Attention - 多头注意力
  5. 简单的爬取中国天气网某个城市七天的天气预报数据
  6. #php 递归获取下级元素#
  7. 第26课时,实践1,投票表决器
  8. python语句学习系列(1)--print()输出结果不全,部分内容省略问题
  9. 关于flash拓展结构总结
  10. AD过孔直径设置/Hole Size Constraint (Min=1mil) (Max=100mil) (All)