问题

难度:普及-

说明:

https://www.luogu.com.cn/problem/P3131

输入一个数组,求一个和能被 7 整除的最长子串。

输入范围:

输入长度 :1≤N≤50,000

输入数字大小:0…1,000,000

输入案例:

7
3
5
1
6
2
14
10

我的代码:

比较考数学题,如果直接暴力的话 n! 时间复杂度,即使是逐级 sum[i] = sum[i - 1] + N,然后 % 7,得出最长还是需要 n^2 时间复杂度,依然不行,那就成了做数学题:

想起 two sum 的解法,可以类比得出可被7整除的 区间和的区间长度:

区间 M 包括 N 和 X,ΣM = ΣN + ΣX,而

ΣM % 7 = 1,ΣN % 7 = 1

ΣM % 7 - ΣN % 7 = 0

(ΣM - ΣN) % 7 = 0

ΣX % 7 = 0  ——————>  可以从大区间 M 如果找到里面有一个区间 N,那么两者相减,就得出被 7 整除的区间 X,如果 N 尽可能小,就得出 X 是最长的被 7 整除的区间,那么得出 X,先得出 N,就是获取 M 的结束位置和 N 的开始位置。(ΣM % 7 = ΣN % 7,两者对 7 的余数相同的位置)

上 c++

#include <iostream>
using namespace std;int num, temp, res = 0, be[8], en[8], sum[50001];int main() {cin >> num;for (int i = num; i-- > 0;) { // 从尾到头获取逐个区间的和并求余(自动形成了所有同结尾的最大区间)cin >> temp;sum[i] = (temp + sum[i + 1]) % 7;}for (int i = num; i-- > 0;) // 然后得出相应的开始结束位置if (en[sum[i]]) be[sum[i]] = i; else en[sum[i]] = i;for (int i = 7; i-- > 0;) // 通过开始结束为止得出最大的区间if(be[i] && en[i]) res = max(res, en[i] - be[i]);cout << res;
}

[洛谷刷题-C++]P3131-Subsequences Summing to Sevens S相关推荐

  1. 洛谷刷题C语言:数字反转、再分肥皂水、三角形面积、Apples Prologue/苹果和虫子、数的性质

    记录洛谷刷题QAQ,一些不大优雅的代码 一.[深基2.例7]数字反转 题目描述 输入一个不小于 100100100 且小于 100010001000,同时包括小数点后一位的一个浮点数,例如 123.4 ...

  2. 洛谷刷题C语言:Even? Odd? G、The Robot Plow G、pb的游戏(1)、询问学号、cover

    记录洛谷刷题QAQ 一.[USACO09OCT]Even? Odd? G 题目描述 Bessie's cruel second grade teacher has assigned a list of ...

  3. 洛谷刷题:小玉家的电费、小玉在游泳、小鱼的航程(改进版)、小鱼的游泳时间、小鱼会有危险吗

    记录洛谷刷题QAQ 一.小玉家的电费 题目描述 夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了.小玉家今天收到了一份电费通知单.小玉看到上面写:据闽价电 [2006]27 号规定,月用 ...

  4. 洛谷刷题C语言:闰年判断、Apples、洛谷团队系统、肥胖问题、三位数排序

    记录洛谷刷题QAQ 一.[深基3.例3]闰年判断 题目描述 输入一个年份,判断这一年是否是闰年,如果是输出 111,否则输出 000. 输入格式 输入一个正整数 nnn,表示年份. 输出格式 输出一行 ...

  5. 洛谷刷题C语言:距离函数、闰年展示、计算阶乘、猴子吃桃、培训

    记录洛谷刷题QAQ 一.[深基7.例1]距离函数 题目描述 给出平面坐标上不在一条直线上三个点坐标 (x1,y1),(x2,y2),(x3,y3)(x_1,y_1),(x_2,y_2),(x_3,y_ ...

  6. 洛谷刷题C语言:潇湘の雨、分糖果、Addition、Ljeto、TRI

    记录洛谷刷题C语言QAQ 「PMOI-0」潇湘の雨 题目背景 (原 LZOI-1,改名已经 PMOI 成员同意) lhm-01 题目描述 言琢დ 在一个 2n×2n2n \times 2n2n×2n ...

  7. 洛谷刷题C语言:Bold、饱食、公平の意、DOM、

    记录洛谷刷题C语言qaq [COCI2020-2021#6] Bold 题目描述 Paula 给 Daniel 写了一封信,她需要加粗文本的字体,以便视力恶化的 Daniel 阅读. 信可以用 . 和 ...

  8. 洛谷刷题C语言:FILIP、修改数组、Fun、Šifra、Erinnerung

    记录洛谷刷题QAQ [COCI2009-2010#3] FILIP 题目描述 给你两个十进制正整数 a,ba, ba,b,输出将这两个数翻转后的较大数. 「翻转」在本题中的定义详见「说明 / 提示」部 ...

  9. 洛谷刷题C语言:陶瓷项链、Cow Gymnastics B、Where Am I? B、Hello, 2020!、SIR 模型

    记录洛谷刷题C语言 一.[NOI2000] 瓷片项链 题目描述 原始部落用一种稀有的泥土烧制直径相同的圆瓷片并串成项链,串的时候沿瓷片的直径方向顺次连接,瓷片之间没有空隙也不重叠,一条项链至少由一个瓷 ...

  10. 洛谷刷题C语言:PET、KEMIJA、PROSJEK、KORNISLAV、RESETO

    记录洛谷刷题QAQ 一.[COCI2008-2009#3] PET 题目描述 在一项受欢迎的比赛 Dinner for Five 中,有 555 名选手和 444 名裁判,这 444 个裁判会对每一道 ...

最新文章

  1. iOS开发网络篇—HTTP协议
  2. java观察者设计模式_Java中的观察者设计模式
  3. HH SaaS电商系统的商品发货策略设计
  4. 管理低代码公民开发人员的8个技巧
  5. phpcms关于 {if} 判断后台是否上传{thumb} 缩略图 - 代码篇
  6. 老司机翻车现场:一个业余程序员组织如何收到滴滴的侵权通知?
  7. 《Python数据分析实战》3 NumPy库
  8. C语言最全爱心代码大全
  9. 尚硅谷大数据—搭建Hadoop集群—硬件环境准备
  10. 免费的Access数据库员工管理系统下载-IT技术网站 企业人员管理系统源码
  11. java简单的新闻分词,文本分析
  12. 使用python做手机app后台
  13. Android 内存剖析 – 发现潜在问题------比较好android博客
  14. 关于计算机学院 公众号的名字,好听的微信公众号名字
  15. Vue2.x实现根据获取到的数据 显示不同性别图片
  16. 【数据结构】格洛克怎么上膛?栈的结构帮你解答!
  17. 这次GDC China 2015的总结与关卡设计教程的梳理
  18. 【CSS3】text-shadow/text-overflow,边框图片,透明度,小米轮播图子菜单另一种实现,覆盖准则
  19. 汉字的国标码和机内码是怎么回事?
  20. 计算机辅助导航技术口腔外科,计算机辅助导航技术在口腔种植手术中的应用.pdf...

热门文章

  1. linux里实现sl跑火车
  2. MATLAB中多层网络的net.lw{i,j}和net.b{k}的含义
  3. 无公网IP,VB应用从外网访问内网服务器
  4. 数据结构 第八章 排序 作业(已批改)
  5. 酷睿 支持服务器内存,酷睿i7 3960X支持ECC内存吗
  6. python黑科技自动p图_大神级Python工程师是怎么P图的,带你用Python玩转P图
  7. 资讯精选|OfO和北京经信委联合开发出了全国首个电子围栏技术并在北京通州试点
  8. d盘 转为ntfs redhat linux as4,RedHat Enterprise AS4 硬盘安装心得(转)
  9. 胡新宇之逝:论坛网友回复其女友之感言(转贴)
  10. 第43届金马颁奖礼结束,郭富城连庄金马影帝创历史!