2017年蓝桥杯B组C/C++省赛-K倍区间

2023-10-27

题目

题解

思维。


暴力的话是会超时的,但也可以骗点分。
(采用差分数组暴力)


讲一下AC思路。

统计出来每个前缀和取模 k k k后结果的个数,比如 c n t [ 0 ] cnt[0] cnt[0] 表示前缀和取模 k k k 等于 0 0 0 的前缀个数; c n t [ 1 ] cnt[1] cnt[1] 表示前缀和取模 k k k 等于 1 1 1 的前缀个数;……

假设前缀和取模 k k k等于 1 1 1的全部前缀如下:

请添加图片描述
总共三个前缀,我们考虑任选其中的两个前缀,长前缀比短前缀多出的部分的数是否可以保证求和取模 k k k等于 0 0 0

假设短前缀和为 S u m s h o r t Sum_{short} Sumshort,长前缀和为 S u m l o n g Sum_{long} Sumlong S u m l o n g − S u m s h o r t Sum_{long}-Sum_{short} SumlongSumshort 为长前缀比短前缀多出的部分的数之和。

( S u m l o n g − S u m s h o r t ) % k = S u m l o n g % k − S u m s h o r t % k = 1 − 1 = 0 (Sum_{long}-Sum_{short})\%k=Sum_{long}\%k-Sum_{short}\%k=1-1=0 (SumlongSumshort)%k=Sumlong%kSumshort%k=11=0

所以长前缀比短前缀多出的部分的数就是满足条件的一组数。如此一来,我们可以只需要在这三个前缀中选两个构成一组满足条件的数,即 C 3 2 C_3^2 C32 为前缀和取模为 1 1 1 的前缀能构成取模 k k k 等于 0 0 0 的序列的方案数。


特殊地,对于前缀和取模 k k k 0 0 0的前缀能组合出满足条件的序列的个数还需要加上它们自己,也就是我们可以把每一个满足前缀和取模 k k k 0 0 0的前缀单拎出来,它们还是满足和取模为 0 0 0的要求,因此,还要将这些方案加上。

在代码实现上,我们只需要将 c n t [ 0 ] cnt[0] cnt[0] 初始化为 1 1 1 即可,因为 C n + 1 2 = C n 2 + n C_{n+1}^{2} = C_{n}^{2} + n Cn+12=Cn2+n

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1e5+10;

LL n, k, a, s, cnt[N], ans;

int main()
{
	cin >> n >> k;

	cnt[0] = 1;
	for (int i = 1;i <= n;i ++) {
		cin >> a;
		s += a;
		cnt[s % k] ++;
	}	
	
	for (int i = 0;i < k;i ++) 
		ans += cnt[i] * (cnt[i] - 1) / 2;
		
	cout << ans << endl;

	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2017年蓝桥杯B组C/C++省赛-K倍区间 的相关文章

随机推荐

  • c++ interview

    数据结构篇 判断单链表是否有环 单链表排序 两个链表合并后仍然有序 网络编程 五层网络架构 tcp和udp的区别 流量控制和拥塞控制 upd通信流程 udp如何实现可靠传输 进程线程篇 多线程如何同步 进程和线程的区别 进程间的通讯方式 并
  • SVM和Softmax分类器比较

    参考 作者 啊噗不是阿婆主 来源 CSDN 原文 https blog csdn net weixin 38278334 article details 83002748 1 SVM和Softmax分类器是最常用的两个分类器 Softmax
  • Centos7.5设置登录欢迎信息-网络系统管理赛项

    由于2022年网络系统管理赛项的修改加之网上的关于这方面的资料以及博客较少 于是我打算写一篇关于Centos7 5设置登录欢迎信息的博客 准备工作 安装Centos7 5并且安装ssh服务的虚拟机一台 1 编写动态脚本 因为单纯修改 etc
  • wget 使用技巧

    wget 是一个命令行的下载工具 对于我们这些 Linux 用户来说 几乎每天都在使用它 下面为大家介绍几个有用的 wget 小技巧 可以让你更加高效而灵活的使用 wget wget r np nd http example com pac
  • 程序编码风格要求

    程序编码风格包括如下要求 使用好程序内部的文档 为了提高程序的可维护性 源代码也需要实现文档化 标识符要见名知意 要有适当的程序注释 注释分为序言性注释和功能性注释 序言性注释通常置于每个程序模块开 头的部分 给出程序的整体说明 功能性注释
  • 【华为OD机试】-2023(B卷)真题【c++,java,python】

    2023B卷 序号 题目分数 时间 1补种未成活胡杨100 2路灯照明问题100 3敏感字段加密100 2023B卷 4阿里巴巴找黄金宝箱 1 100 2023B卷 5喊7的次数重排1002023B卷 6斗地主之顺子1002023B卷 7I
  • 【错误】Description Resource Path Location

    为什么80 的码农都做不了架构师 gt gt gt 警告 Description Resource Path Location Type Projects must be referenced by an EAR or a WAR to u
  • 【opencv】中值滤波代码分析及优化

    最近用opencv做项目 也在研究opencv源码 发现它中值滤波的性能达不到项目的要求 就想办法优化 本文先解析opencv的中值滤波源码 然后针对滤波核尺寸为7和9的情况进行优化 opencv源码分析 opencv4 7 0实现中值滤波
  • inline内联函数总结

    inline只是对编译器的一个申请 不是强制命令 优点 1 比宏的坑少 而且减少函数调用所招致的额外开销 缺点 1 有可能使目标代码增加 减少了高速缓存的命中率 如果编译器针对 函数本身 所产出的码可能比针对 函数调用 所产出的码更小 果真
  • cesium for ue->CesiumGeospatial

    共32个文件 4257行代码 含注释 截至2022年11月26日 剩余23个文件 3162行代码 截至2022年11月27日 剩余19个文件 2671行代码 截至2022年11月28日 剩余17个文件 2438行代码 截至2022年11月2
  • react-router源码

    1 Router js Router js模块用于监听hashChange popState事件 通过当前页面url更新Router组件的state state形式为 location routes params components 其中
  • SQLi-LABS Less-18到Less-22 头部注入

    Less 18题目 先抓包 由它题目可以知道 这是头部注入 其实我也并不知道头部注入这个姿势 刚好做这道题让我了解一下 在百度过后 头部注入的话已经不能在用户名以及密码那输入SQL语句了 只能通过抓包改包看回显了 这里使用你在Less 17
  • BOSE在上海发布6款音频新品;轩尼诗全球首家概念酒吧在上海开幕

    今日看点 2020 BOSE音频新品发布会在上海举行 此次发布会总共发布了6款产品 包括Bose 消噪耳塞 Bose无线耳塞 Bose 智能音频眼镜 猫眼款和运动款 Bose 遮噪睡眠耳塞 II QC 35 II GAMING HEADSE
  • Shell基础:批量运行程序

    创建可执行程序 文件名 hello c include
  • 将eclipse项目导入idea

    首相我们需要明白idea的两个概念 在idea中project相当于eclipse的workspace 在idea中project相当于eclipse的project 所有首先我们需要新建一个在idea中创建一个project 点击菜单fi
  • 标签
  • 引起的缩进问题 list-style: none outside none;
  • 一般网站css都有相应的初始化部分 最近遇到一个棘手问题 li 标签里面的东西 在firefox下正常 而在ie6全部被缩进 而初始化的部分css也有 list style none 并且这个li没有相应的id或者class 那么是被什么控
  • Python判断指定日期是不是中国工作日/节假日

    判断一个日期是否为工作日 节假日 有一个现成的库函数 chinesecalendar chinesecalendar PyPI 1 安装与升级 1 1 安装 pip3 install chinesecalendar 1 2 升级 pip i
  • 11.全连接卷积神经网络 FCN

    视频 48 全连接卷积神经网络 FCN 动手学深度学习v2 哔哩哔哩 bilibili 书籍 13 11 全卷积网络 动手学深度学习 2 0 0 beta0 documentation d2l ai PPT part 2 16 pdf d2
  • 程序员必知的7种软件架构模式

    架构模式是对给定上下文的软件架构中常见问题的一种通用的可复用的解决方案 一种模式就是特定上下文的问题的一种解决方案 然而 很多开发者至今还对各种软件架构模式之间的差别搞不清 甚至对其所知甚少 大体上 主要有下面这7种架构模式 分层架构 多层
  • 2017年蓝桥杯B组C/C++省赛-K倍区间

    题目 题解 思维 暴力的话是会超时的 但也可以骗点分 采用差分数组暴力 讲一下AC思路 统计出来每个前缀和取模 k k k后结果的个数 比如 c n t