每日一题:选数

2023-11-06

选数 - 题目 - Daimayuan Online Judge

原本我的思路是:大致题意就是从n个数中选取若干数,使得它们的和mod n等于0

任意选取,无关顺序,是可以跳着选的,也就是对于每一个数,有两种选择,选与不选,于是我想用01背包,但是似乎不太行,于是就不知道怎么做了

这题考察的是前缀和以及抽屉原理 

前置知识:抽屉原理 

 另外,需要知道的是模运算

 

(a+b)%m=(a%m+b%m)%m,

(a+b)%n=0==>(a%n+b%n)%n=0

那么先求出%n后的前缀和再%n,sum[0]到sum[n]取值范围在0到n-1,根据抽屉原理,n+1个数共n种取值,说明至少有两个sum值相等,sum[l]=sum[r],故[l+1,r]的和为0,那么答案就是从l+1开始输出直到r,也就是说必定至少有连续的一段数的和满足要求,或者sum[i]直接就等于0,那么就从1输出到i 

mp.count()统计map中 key为k的元素的个数,对于map,返回值为1(存在)和0(不存在) 

AC代码: 

#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
const int N = 100010;
int n;
int a[N];
int sum[N];
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int i = 1; i <= n; i++) sum[i] = (sum[i - 1] + a[i] % n) % n;
    int l, r;
    map<int,int>mp;
    for (int i = 0; i <= n; i++) {
        if (!mp.count(sum[i])) mp[sum[i]] = i;//如果该sum值第一次出现了,那么就记录它的下标
        else {
                        //如果该sum值第二次出现,那么直接记录两次出现的下标,并退出循环                        
            l = mp[sum[i]] + 1;
            r = i;
            break;
        }
    }
    cout << r - l + 1 << endl;
    for (int i = l; i <= r; i++) cout << i << " ";
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每日一题:选数 的相关文章

  • 为什么通过派生类对基类的引用与 :: - 运算符不明确?

    所以我想知道为什么以下钻石问题的代码片段无法编译 我知道这个问题通常是通过虚拟继承来解决的 我不是故意使用它的 该代码只是为了展示我的问题 即为什么编译器称此不明确 因此 我在 struct Base 中声明了两个成员变量 因为这两个子类
  • JSON.Net 反序列化返回“null”

    我正在使用 JSON Net 反序列化 JSON 字符串 JSON 字符串是 string testJson Fruits Apple color red size round Orange Pro
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • c# 从另一个类中的另一个静态事件引发事件

    需要帮助从另一个班级调用事件 我有已声明事件的课程 public class MxPBaseGridView GridView public event AddNewItemsToPopUpMenuEventHandler AddNewIt
  • 锁定 ASP.NET 应用程序变量

    我在 ASP NET 应用程序中使用第三方 Web 服务 对第 3 方 Web 服务的调用必须同步 但 ASP NET 显然是多线程的 并且可能会发出多个页面请求 从而导致对第 3 方 Web 服务的同时调用 对 Web 服务的调用封装在自
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 如何使用 Roslyn 通过扩展方法、静态类中的方法以及带有 ref/out 参数的方法来访问调用

    我正在致力于创建一个开源项目 用于创建 NET UML 序列图 该项目利用名为 js sequence diagrams 的 javascript 库 我不确定 Roslyn 是适合这项工作的工具 但我想我应该尝试一下 所以我整理了一些概念
  • 通过 C# Mailkit / Mimekit 发送电子邮件,但出现服务器证书错误

    Visual Studio 2015 中的 0 代码 1 我正在使用 Mailkit 最新版本 1 18 1 1 从我自己的电子邮件服务器发送电子邮件 2 电子邮件服务器具有不受信任的自签名证书 3 我在代码中添加了以下两行 以忽略服务器证
  • 使用 C# 中的 Google 地图 API 和 SSIS 包获取行驶距离

    更新 找到了谷歌距离矩阵并尝试相应地修改我的代码 我在这里收到无效参数错误 return new GeoLocation dstnc uri ToString catch return new GeoLocation 0 0 https 基
  • Xamarin - SignalR 挂在连接上

    我正在尝试将我的 Xamarin 应用程序连接到托管在 Azure 上的 SignalR 后端 我遇到的问题是每次我在 HubConnection 上调用 StartAsync 时 它都会挂起客户端并且请求永远不会完成 我尝试通过应用程序进
  • 时间:2019-03-17 标签:c++fstream并发访问

    如果从不同的进程 线程同时访问文件会发生什么 据我所知 没有锁定文件的标准方法 只有操作系统特定的功能 就我而言 文件将被经常读取而很少写入 现在如果A打开一个文件进行读取 ifstream 并开始读取块 和B打开相同的文件进行写入 ofs
  • 如何在 C# 中获取 Json 数组?

    我有一个像这样的 Json 字符串 我想将它加载到 C 数组中 当我尝试这样做时 我收到异常 我的字符串 customerInformation customerId 123 CustomerName Age 39 Gender Male
  • 使用多线程进行矩阵乘法?

    我应该使用线程将两个矩阵相乘 有两件事 当我运行程序时 我不断得到 0 我还收到消息错误 对于每个错误 它在粗体行上显示 警告 从不兼容的指针类型传递 printMatrix 的参数1 我尝试打印输出 还要注意 第一个粗体块 这是我解决问题
  • 无法在 C# 中为 EventArgs 分配使用派生类型的事件处理程序

    所以我有一个事件声明如下 public event EventHandler OnChangeDetected 然后我有以下处理程序被分配给该事件 myObject OnChangeDetected OnTableChanged 我的理解是
  • 如何将 int 作为“void *”传递给线程启动函数?

    我最初有一个用于斐波那契变量数组的全局变量 但发现这是不允许的 我需要进行基本的多线程处理并处理竞争条件 但我无法在 pthread 创建中将 int 作为 void 参数提供 我尝试过使用常量指针 但没有成功 由于某些奇怪的原因 void
  • “必须声明标量变量”错误[重复]

    这个问题在这里已经有答案了 必须声明标量变量 Id SqlConnection con new SqlConnection connectionstring con Open SqlCommand cmd new SqlCommand cm
  • 无法识别解决方案文件夹中的 Visual Studio 2017 Nuget.config

    我在使用 Visual Studio 2017 时遇到问题 新的解决方案不断引用 C Users yopa AppData Roaming NuGet Nuget config 中意外位置的 Nuget config 文件 我已将 nuge
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad

随机推荐

  • 阿里云SDK上传视频

    1 老样子 先看效果图 2 首先到阿里云下载所需要用到的SDK 3 下载好的 解压之后 目录以及运行起来是以下这个样子的 4 在实际项目中引用 先将SDK添加到项目中 放到public目录下 5 在public文件下的index html引
  • GDI映射:设备坐标与逻辑坐标

    1 设备坐标 对显示器而言就是屏幕 其单位是像素 对打印机而言就是打印机的像素点 这个坐标与具体的设备相关 所以叫设备坐标 目前用到的就是显示器的像素 显示器的设备坐标有三种 屏幕坐标 窗口坐标 客户区坐标 屏幕坐标 以整个屏幕为显示区 屏
  • BoT-SORT与Strong-SORT论文对比及思考总结

    BoT SORT与Strong SORT论文对比及思考总结 接上篇BoT SORT论文阅读笔记 并对Strong SORT论文研读与BoT SORT的更新点对比有了以下的思考总结 Strong SORT论文 Strong SORT代码 通过
  • ES学习笔记

    01 REST 指的是客户端和服务器之间的交互在请求之间是无状态的 从客户端到服务器的每个请求都必须包含理解请求所必须的信息 同时在请求之间的任意间隔时间点 若服务器重启 那么客户端是得不到相应的通知的 所以无状态的请求可以由任何可用的服务
  • 在MacOS构建Python深度学习开发环境

    目录 构建环境 Step 1 搭建初始环境 安装Homebrew 安装Pyenv Step 2 构建开发环境 安装多版本Python 设置虚拟环境 Step 3 完善Python开发环境 训练测试 Step 1 下载源代码 Step 2 准
  • python数据挖掘分析案例_基于Python的Titanic【案例分析】

    这次数据分析的案例是 经典的数据分析案例 泰坦尼克号生还预测 本案例的分析思路包括以下三个部分 数据集描述与来源展示 数据分析过程 明确分析问题 理解数据 数据清洗 数据探索性分析 数据建模与分析 模型选择与结果输出 数据分析总结 数据集描
  • python 计算置信区间,计算置信区间(示例代码)

    proc freq data datain by group tables var missprint nowarn binomial level 1 cl exact alpha 0 05 weight n zero 对发生的做置信区间
  • C语言数据结构之链表的增删改查

    C语言数据结构之链表的增删改查 tips 昨天学习了c语言结构体 今天来看看c语言数据结构之链表 单链表 的增删改查操作 首先我们创建一个简单的学生信息结构体 作为后面增删改查的主体 student结构体包含 数据域 学号 分数 指针域 一
  • jupyter报错

    1 打开anaconda jupyter notebook时报错 Traceback most recent call last File E python anaconda Scripts jupyter notebook script
  • 分页存储管理,分段存储管理,段页式存储管理

    概括的挺详细的 然后我加上了纯分页系统和请求式分页系统的基本概念 也对有些部分稍作修改 一 分页存储管理 1 基本概念 页面和物理块 将一个进程的逻辑地址空间划分成若干大小相等的部分 每一部分称为页或页面 页面的大小通常是2的次幂 大约在5
  • 区块链:Solidity值类型(地址Address)

    地址Address 以太坊钱包地址位数验证 以太坊中的地址的长度为20字节 一字节等于8位 一共160位 所以address其实亦可以用uint160来声明 我的以太坊钱包地址为0xDF12793CA392ff748adF013D146f8
  • 可变个数的参数

    1 用数组的方式来 例如 pulic void print String args for int i 0 i
  • Apache POI 4.1.0 发布,Office 文档的 Java API

    Apache POI 4 1 0 发布了 Apache POI 是用 Java 编写的开源跨平台的 Java API 提供 API 给 Java 程式对 Microsoft Office 格式档案读和写的功能 简而言之 你可以使用 Java
  • CSDN高校俱乐部第三届研讨会

    CSDN高校俱乐部第三届研讨会 于2013年6月6日在国家会议中心成功举办 感谢大家从全国各地远道而来参加 本次研讨会邀请了来自全国32所高校俱乐部的指导老师 同学以及优秀巡讲讲师和微软Imagine Cup 2013大赛负责人 会议开始先
  • 【MySQL高级篇笔记-数据库的设计规范(中) 】

    此笔记为尚硅谷MySQL高级篇部分内容 目录 一 为什么要数据库设计 二 范式 1 范式简介 2 范式都包括哪些 3 键和相关属性的概念 4 第一范式 1st NF 5 第二范式 2nd NF 6 第三范式 3rd NF 7 小结 三 反范
  • Flutter内存优化总结

    Flutter内存优化是一个非常复杂的问题 其中涉及多个方面的优化策略 下面将从以下几个方面对Flutter的内存优化进行具体实现的总结 一 减少Widget的创建和销毁 Widget的创建和销毁是Flutter中内存占用最大和最频繁的操作
  • C++学习笔记黑马程序员(有一些自己的思考)

    学习目标 掌握 C 入门知识 C 核心编程 掌握 STL 洛谷算法训练题 学习内容 C 入门知识 一 基本介绍 C 不同于C语言 这是一门面向对象的高级程序设计语言 二 面向对象与面向过程 什么是面向对象 对象又是什么 对象是对客观事物的抽
  • Flink_04_Watermark(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 时间语义 EventTime 在1 12版本中被设置成了默认 是事件
  • 求平方根问题 (C++ 实现)

    下面是用二分法和牛顿迭代法求一个正数的平方根 二分法 这里的题目稍微宽了一点点 包含了整数和小数的情况 这里二分法就不用多说了 如果中间值的平方与目标值在误差范围内 则返回 否则根据大小情况改变左 右区间的端点 include
  • 每日一题:选数

    选数 题目 Daimayuan Online Judge 原本我的思路是 大致题意就是从n个数中选取若干数 使得它们的和mod n等于0 任意选取 无关顺序 是可以跳着选的 也就是对于每一个数 有两种选择 选与不选 于是我想用01背包 但是