蓝桥杯真题:k倍区间
输入输出样例
示例
输入
5 2
1
2
3
4
5
输出
6
运行限制
- 最大运行时间:2s
- 最大运行内存: 256M
emmm之前看到想着要不要直接O(n^2)暴力来着。。。
思路如下所示:
我们很容易想到两层循环去暴力做,但是其实有更好的办法。
首先是前缀和的概念,我们每读入一个数,就把他和前面的数所有数相加,求出所有位置的前缀和,这样有什么好处呢,好处在于我们对于任意区间[i,j]的和,都可以用sum[j]-sum[i]实现。这样就用O(n)的时间复杂度可以求任意区间的和。
其次是对k取余数,试想一下,若两个数字a,b如果对k都余m,那么其相减不就是可以抵消余数了吗。所以,原来的问题转化为求0,1,2...k-1的余数的前缀和各有多少个,对相同余数的前缀和,可以两两组成区间。
一点小细节就是注意余数为0的可以自己组成一个区间。
不过这题明明数据在10^5内,但是用int的cnt计数却会出错,不大明白为什么,有无懂个说一下~感激不尽~
代码如下所示:
#include <bits/stdc++.h>
using namespace std;
const int MAX_LEN=100010;
typedef long long ll;
int num[MAX_LEN];//记录前缀和
ll cnt[MAX_LEN];//记录对应余数的数目 这里为什么不能是int数组
int main()
{// 请在此输入您的代码int n,k;cin>>n>>k;ll sum=0;for(int i=0;i<n;++i){cin>>num[i];sum+=num[i];cnt[sum%k]++;}ll ans=cnt[0];for(int i=0;i<k;++i){ans+=cnt[i]*(cnt[i]-1)/2;}cout<<ans<<endl;return 0;
}
蓝桥杯真题:k倍区间相关推荐
- 蓝桥杯真题 k倍区间 c++代码实现 给定一个长度为 N 的数列,A1, A2, ··· AN,如果其中一段连续的子序列 Ai,Ai+1,⋯A j ( i \leq ji≤j ) 之
文章目录 题目描述 输入描述 输出描述 输入输出样例 示例 运行限制 代码 思路 题目描述 给定一个长度为 N 的数列,A1, A2, ···AN,如果其中一段连续的子序列 Ai,Ai+1, ···A ...
- 蓝桥杯第八届省赛JAVA真题----k倍区间
标题: k倍区间 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍 ...
- [蓝桥杯][2017年第八届真题]k倍区间(数学+思维)
题目描述 给定一个长度为N的数列,A1, A2, - AN,如果其中一段连续的子序列Ai, Ai+1, - Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. 你能求出 ...
- 【每日蓝桥】52、一七年省赛Java组真题“K倍区间”
你好呀,我是灰小猿,一个超会写bug的程序猿! 欢迎大家关注我的专栏"每日蓝桥",该专栏的主要作用是和大家分享近几年蓝桥杯省赛及决赛等真题,解析其中存在的算法思想.数据结构等内容, ...
- 蓝桥杯2017初赛-k倍区间-前缀和
题目描述 给定一个长度为N的数列,A1, A2, - AN. 如果其中一段连续的子序列Ai, Ai+1, - Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. 你能求 ...
- 【蓝桥杯 - 练习】k倍区间(思维,数组)
题干: http://lx.lanqiao.cn/problem.page?gpid=T444 问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1 ...
- 蓝桥杯真题-连号区间数-枚举
题目描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增 ...
- 蓝桥杯真题2017-2021
刷完近几年真题,感觉理解完之后,拿奖问题不大,本人这次获得2022年蓝桥杯javaB组省一,以下是历年javaB组省赛题目. 文章目录 2017年真题 一.购物单 二.纸牌三角形 三.承压计算 四.魔 ...
- 第五届蓝桥杯真题解析【JavaC组】
第五届蓝桥杯真题解析[JavaC组] 业精于勤,荒于嬉:行成于思,毁于随.--韩愈 文章目录 ***第五届蓝桥杯真题解析[JavaC组]*** 前言 A:猜年龄 B:等额本金 C:猜字母 D:大衍数列 ...
- # 2014年蓝桥杯真题CC++B组
2014年蓝桥杯真题C/C++B组 1.啤酒和饮料 题目描述 啤酒每罐2.3元,饮料每罐1.9元,小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道她买的啤酒比饮料的数量多,请你计算他买了几罐啤 ...
最新文章
- 模板方法模式小记【原创】
- java 反射 速度_Java反射,但速度更快
- TMS320F28335——IO控制/定时计操作
- python脚本-记录Python脚本的运行日志的方法
- 区块链支付平台技术的应用
- layui select下拉框选项不显示
- 小米android版本升级包下载,小米11 Android 12 Beta 1更新包
- 如何通过细节来看业务流程ERP管理系统的成熟度?
- 【食安云桥】python 文件内批量长度除以3.5替换
- 计算机软件方面的基金,天天基金
- 关于TP3.2.3的反序列化学习
- Victor Zue教授的创新观
- attr 与prop 的区别
- android openCV检测图像的基本特征,包括Canny边缘检测、Harris角点检测、霍夫直线检测-基于Android studio
- 自学Python day03-if语句
- 数字图像处理常用函数
- 信息泄漏时代,如何让自己的密码更安全?
- js给动态添加的元素添加属性
- ThinkPHP历史漏洞
- 问道账号服务器已满,服务器人数已满 《问道》手游不删档首日战况