D - Pedometer AtCoder Beginner Contest 367

news2024/11/13 9:37:08

题意:

一个长度为n的数组a首尾相接,求满足a[i]~a[j]的和是m的倍数的[i,j]对数

思路:

由于首位相接,那么区间i-->j的所有数有两种情况:第一种是i<j的情况,第二种是i>j的情况

为了简化处理,我们可以将他变为一个线性数组,也就是原数组的后面再加一个原数组,那么新数组的所有区间就包含了以上两种情况:

设s[i]为前缀和数组,a[i]到a[j]的数的和是m的倍数--->(s[j]-s[i-1])%m=0-->s[i-1]%m=s[j]%m

那么就转换为求满足s[j-1]%m=s[i]%m的i和j的对数

先寻找i<j的[i,j]对:

设s[i]%m=k,那么我们用d[k]来记录从第一个位置到当前位置的所有满足s[i]%m=k的i的个数

那么我们对于当前位置i,可以算出满足s[i]%m=s[j]%m且j<i的个数,即d[s[i]%m]

那么对于j>i的情况,j和i之间间隔的长度不能大于数组长度,否则会重复

那么我们每次到i的时候将前面与他间隔长度大于n的数都删除

#include<bits/stdc++.h>
using namespace std;
const int N=4e5+10;
int n,m;
typedef long long ll;
ll a[N],s[N];
map<ll,ll> mp;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		s[i]=s[i-1]+a[i];
		a[i+n]=a[i];
	}
	for(int i=1+n;i<=2*n;i++)s[i]=s[i-1]+a[i];
	ll ans=0;
	for(int i=1;i<=n;i++){
		ll x=s[i]%m;
		if(mp.count(x)){
			ans+=mp[x];
		}
		mp[x]++;
	}
	for(int i=1,j=1+n;i<=n;i++,j++){
		ll x=s[i]%m;
		mp[x]--;
		ll xx=s[j]%m;
		ans+=mp[xx];
	}
	cout<<ans;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2070436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信息学奥赛初赛天天练-74-NOIP2016普及组-基础题5-树、父节点、根节点、叶子节点、非叶节点、组合、组合排除法

NOIP 2016 普及组 基础题5 21 从一个 44的棋盘&#xff08;不可旋转&#xff09;中选取不在同一行也不在同一列上的两个方格&#xff0c;共有( )种方法。 22 约定二叉树的根节点高度为 1。一棵结点数为 2016 的二叉树最少有( )个叶子结点&#xff1b;一棵结点数为 2016 的二叉…

STM32 HAL SDADC DMA

1、简介 由于项目需要使用STM32F373单片机的SDADC功能对电位计进行检测,网上资料比较少,踩了很多坑,下面进行总结。 2、STM32CubeMX配置 2.1 RCC配置 2.2 SYS 配置 2.3 SDADC 2 配置 2.3.1 Parameter Settings配置 SDADC共有三种输入模式,分别为差分模式、 单端偏移模…

Web-ssrfme

文章目录 环境分析攻击 环境 首先下载资源包&#xff0c;Ubuntu通过docker拉取环境。 docker-compose up -d分析 <?php highlight_file(__file__); function curl($url){ $ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);e…

开源在线文档管理工具MrDoc

MrDoc&#xff0c;也被称为觅思文档或觅道文档&#xff0c;是一款基于Python开发的在线文档系统。它支持Markdown和所见即所得的富文本编辑&#xff0c;适合个人和小型团队作为文档、笔记和知识管理工具。 开源地址&#xff1a;MrDoc: MrDoc觅思文档&#xff0c;适合于个人和中…

Vue | 简单说说 Vuex 实现响应式的原理

Vuex 通过结合 Vue.js 的响应式系统实现了状态的响应式。Vuex 的状态存储于 Vue 的 data 对象中&#xff0c;这确保了对状态的任何 mutation 都是响应式的。 Vuex 使用单一状态树&#xff0c;并通过响应式来进行状态管理。其响应式的实现主要依赖于 Vue 的响应式系统。 Vuex 的…

Linux简单介绍(1)

一、Linux简介与安装 1.1 计算机的相关概念 1. 什么是计算机? 能够接收使用者输入的指令与数据&#xff0c;经由中央处理器的算术与逻辑单元运算处理后&#xff0c;以产生或存储有用的新数据。比如计算器&#xff0c;手机&#xff0c;汽车导航系统&#xff0c;提款机&am…

借题《黑神话悟空》,聊聊UE5 游戏开发中基本的 C++ 概念

最近火的一塌糊涂的《黑神话悟空》就是用UE5引擎开发的。借题发挥&#xff0c;今天讲讲UE游戏开中的一些C基本概念&#xff1b; 编写代码与蓝图&#xff08;可视化脚本&#xff09;相结合具有独特的功能&#xff0c;您需要利用这些功能来实现两全其美。编程可以帮助创建更复杂…

DevEcoStudio启动模拟器提示未开启Hyper-V

处理方式&#xff1a;&#xff08;win11专业版系统&#xff09; 勾选Hyper-V。 如果提示无法安装Hyper-v&#xff1a;该固件中的虚拟化支持被禁用。如下图&#xff1a; 需要进入BIOS启用虚拟化技术。 这个根据电脑主板不一样&#xff0c;操作方法不同&#xff0c;请自行搜索处…

LCD模组驱动开发

Linux 5.15 内核适配 驱动勾选 由于使用的是 SPI0&#xff0c;所以 TinyVision 的 LCD 模块并不支持使用MIPI-DBI进行驱动&#xff0c;这里我们使用普通的SPI模拟时序。 勾选 SPI 驱动 这里我们使用 SPI-NG 驱动&#xff0c;勾选 <*> SPI NG Driver Support for Allw…

Apifox测试SOAP接口教程

文章目录 I 请求webservice接口使用Apifox测试工具来测试soap接口配合Charles测试soap接口(前提:允许使用系统代理)使用hutool的SoapClient调用soap接口II 扩展知识webService三要素SOAP消息组成(SOAP请求消息的格式)浏览器访问暴露出的soap接口需求: AIS数据对接给其他平…

画板555

p41 这两个地 都是 板框这里按 Q可以改单位放置在原点p42 布局 和原理图一样都是 模块化 布局 (一样的放一起)原理图中选中 PCB里也会选中位号 布局时 一般放在中间因为在别的地可能会影响布局全选后 布局里的属性位置不用全选也行点击查找全部 就选上了 能看到就行板框确定好…

leetcode47. 全排列 II有重复元素的全排列,深度优先搜索

leetcode47. 全排列 II/有重复元素的全排列 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2], [1,2,1], [2,1,1]] 示例 2&#xff1a; 输入&#xff1a;…

【数据结构4】树的实例-模拟文件系统、二叉树的遍历(先序遍历、中序遍历、后序遍历、层次遍历)

1 树和二叉树 2 树的实例-模拟文件系统 3 二叉树 3.1 二叉树的遍历 二叉树的先序遍历 二叉树的中序遍历 二叉树的后序遍历 二叉树的层次遍历 1 树 树是一种数据结构 比如:目录结构 树是一种可以递归定义的数据结构树是由n个节点组成的集合:如果n0&#xff0c;那这是一棵空树;如…

测试用例(还需要输入1个字)

近期机缘巧合&#xff0c;连续写2个项目的测试用例。第一个项目&#xff0c;纯属没有办法&#xff0c;参与该项目的现在就只剩我一个人了&#xff0c;只能自己写了&#xff0c;这不&#xff0c;我专门跑到客户那啥都不干&#xff0c;写文档写了2天&#xff1b;第二个项目&#…

如何使用gewe开发微信机器人

本文介绍了如何利用GeWe框架开发一个功能丰富的微信智能机器人。GeWe是一个开发协议&#xff0c;为微信机器人提供了强大的功能支持&#xff0c;包括关键字回复、自动通过好友和自动发朋友圈等特性。我们将通过一个简单的示例演示如何在GeWe框架下实现这些功能&#xff0c;并附…

模型 空雨伞

列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。观察现状&#xff0c;分析原因&#xff0c;制定行动。 1 空雨伞模型的应用 1.1 空雨伞模型应用之API对接的决策 某公司产品经理A君接到了与合作方对接API的任务。合作方对公司的中台API有特定的需求&…

有什么办法能恢复郎科u盘的数据?常用方法分享

在数字化时代&#xff0c;数据已成为我们生活与工作中不可或缺的一部分。郎科U盘&#xff0c;以其便携、稳定的特性&#xff0c;成为了许多人存储重要文件的首选。然而&#xff0c;面对突如其来的数据丢失&#xff0c;无论是误删、格式化还是病毒侵袭等&#xff0c;都足以让人心…

【Qt】常见控件 —— QWidget(上)

文章目录 QWidget 的基本介绍QWidget 的 enable 属性QWidget 的 geometry属性QWidget 的 windowTitle属性 QWidget 的基本介绍 Qt 中 的 各种控件 都继承自 QWidget类 在 Qt designer 右侧 就显示出 QWidget的各种属性 并且也可以直接进行编辑 QWidget 的 enable 属性 enable…

ETAS工具链自动化实战指南<二>

----自动化不仅是一种技术&#xff0c;更是一种思维方式&#xff0c;它将帮助我们在快节奏的工作环境中保持领先&#xff01; 目录 往期推荐 RTA-A2L工具概览 RTA-A2L的输出文件 常用命令行参数 场景1&#xff1a;通过 MCSD 文件来生成 .a2l 文件并更新地址 命令用法 命…

getchar(),putchar(),EOF的详细解释

文章目录 getchar(),putchar(),EOF的意义和作用一、相关函数putchar( )getchar&#xff08;&#xff09; 二、EOF 的值三、总结 getchar(),putchar(),EOF的意义和作用 在 C 语言中&#xff0c;EOF 是 End Of File 的缩写&#xff0c;即文件结束标志。 在读取文件时&#xff0…