AcWing 3347. 菊花链
目录
- 题目
- 解题思路
- 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. 菊花链相关推荐
- 3347 菊花链(暴力枚举、哈希表)
1. 问题描述: 每天,作为她绕农场行走的一部分,奶牛 Bessie 会经过她最喜爱的草地,其中种有 N 朵花(五颜六色的雏菊),编号为 1-N,排列成一行.花 i 有 pi 朵花瓣.作为一名崭露头角 ...
- AcWing 734. 能量石 (01背包)+(贪心 - 领项交换)
AcWing 734. 能量石 #include<cstdio> #include<algorithm> #include<cstring> #include< ...
- 解题报告:AcWing 352. 闇の連鎖(树上差分、方案统计)
https://www.acwing.com/problem/content/354/ 在没有附加边的情况下,我们发现这是一颗树,那么再添加条附加边(x,y)后,会造成(x,y)之间产生一个环 如果我 ...
- acwing算法题--铁路与公路
原题链接:https://www.acwing.com/problem/content/description/4077/ #include <iostream> #include < ...
- acwing算法题--看图做题
原题链接:https://www.acwing.com/problem/content/3992/ 找规律题 #include<iostream>using namespace std;i ...
- acwing算法题--不同的数
原题链接:https://www.acwing.com/problem/content/3991/ #include <iostream> #include <unordered_m ...
- acwing算法题--分组背包问题
原文链接:https://www.acwing.com/problem/content/9/ #include <iostream>using namespace std;const in ...
- acwing算法题--二维费用的背包问题
原题链接:https://www.acwing.com/problem/content/8/ #include <iostream>using namespace std;const in ...
- acwing算法题--混合背包问题
原题链接:https://www.acwing.com/problem/content/7/ #include <iostream> #include <vector>usin ...
最新文章
- 微信小程序左上角返回按钮跳转到指定页面
- excel 按数据拆分 xlam_利用EXCEL提升效率之五分钟缩短至五秒批量合并EXCEL批量转换PDF批量上传报关单随附单据___EXCELVBA...
- 袁新生《LINGO和Excel在数学建模中的应用》
- python定义一个dog类 类属性有名字毛色体重_面向对象实践,练习,Python
- Boost:不受约束的集合bimap的测试程序
- php网站调试出现的简单问题,调试php时网站出现502的解决方法
- 动态规划 —— 动态规划概述
- 杀掉php所有进程,杀死某个用户的所有进程
- 装饰模式-包装request和response
- 电脑如何安装php文件夹在哪个文件夹,win7系统桌面文件在c盘哪个文件夹
- Network install linux - Hacking initrd.img word doc archive
- AD20软件安装详细教程
- 符号_液压图形符号识别之减压阀符号原理
- Python书写格式
- ECharts-中国省市地图
- python运动场地预约系统毕业设计开题报告
- Oracle数据库Bitand()函数用法(计算位移)
- 计算机学院2022级新生邀请赛(三)
- 音频制作的现状与发展趋势
- FICO-Payment Terms 收付款条件和分期付款设置
热门文章
- Uncaught ReferenceError: data is not defined
- 看上去不相关的AI和嵌入式有什么关系?
- 策略模式 — 孔明排兵布阵
- Multihead Attention - 多头注意力
- 简单的爬取中国天气网某个城市七天的天气预报数据
- #php 递归获取下级元素#
- 第26课时,实践1,投票表决器
- python语句学习系列(1)--print()输出结果不全,部分内容省略问题
- 关于flash拓展结构总结
- AD过孔直径设置/Hole Size Constraint (Min=1mil) (Max=100mil) (All)