一中OJ | #3509 七的倍数 [USACO Jan16 Silver , Subsequences Summing to Sevens]

时限 1000MS/Case 内存 128MB/Case

题目描述

Farmer John的N头奶牛排成一排,每头奶牛都有FJ制定的奶牛编号。FJ想要拍一张奶牛的照片,他希望该照片满足下列两个要求: 
1.照片中奶牛的数量尽可能多; 
2.照片中奶牛的编号之和为7的倍数; 
请你帮助FJ计算,满足条件的照片中,奶牛的数量最多是多少?

输入格式

第一行,一个整数N表示奶牛的数量。
接下来N行,每行一个整数,依次给出了每头奶牛的编号,编号的范围[0…1,000,000]。

输出格式

一行,一个整数,表示奶牛最多的照片中奶牛的数量,如果无解,输出0。

样例输入

7
3
5
1
6
2
14
10

样例输出

5

数据范围

1≤N≤50,000

样例解释

区间[2,6]构成一张照片,其中奶牛编号5 + 1 + 6 + 2 + 14 = 28,28 mod 7 = 0。

----------------------------------------------------------

题目分析

一般的前缀和找最大值,时间复杂度是O(n^2),无法通过此题

但是题目要求一段区间各编号之和mod 7 = 0的最长区间长度

先算出前缀和Sum[],假设区间[i,j]中各编号之和mod 7 = 0,那么Sum[i-1] mod 7一定等于Sum[j] mod 7

不难证明,因为A[i]+A[i+1]+...+A[j] mod 7 = 0,Sum[j] = Sum[i-1]+A[i]+A[i+1]+...+A[j]

那么由模运算规则 "(a+b) mod c=(a mod c + b mod c) mod c" 可得Sum[j] mod 7 = Sum[i-1] mod 7+(A[i]+A[i+1]+...+A[j]) mod 7

又因为(A[i]+A[i+1]+...+A[j]) mod 7 = 0,那么Sum[j] mod 7 = Sum[i-1] mod 7 + 0 = Sum[i-1] mod 7,得证。

接下来只需统计最早出现的 mod 7 的余数位置与最晚出现的 mod 7 的余数位置,然后相减找最大差值即可[此处不需要R-L+1,原因是由证明过程可得最长区间[i,j]所对应的L应该等于i-1而不是i,j-(i-1)=j-i+1,那么就不需要再加了]

----------------------------------------------------------

代码

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#define hashsize 1000003
#define inf 0x7f7f7f7f
using namespace std;
int n,t,ans;
int sum[50005],lpos[7]={inf,inf,inf,inf,inf,inf,inf},rpos[7];
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&t);sum[i]=(sum[i-1]+t)%7;lpos[sum[i]]=min(lpos[sum[i]],i);rpos[sum[i]]=i;}for(int i=0;i<7;i++) ans=max(ans,rpos[i]-lpos[i]);printf("%d",ans);return 0;
}

一中OJ #3509 七的倍数 [USACO Jan16,洛谷P3131] | 同余前缀和 | 解题报告相关推荐

  1. HOJ 系统常用功能介绍 部署快速入门 c++ python java编程语言在线自动评测 信息奥赛一本通 USACO GESP 洛谷 蓝桥 CSP NOIP题库

    技术支持微 makytony 服务器配置需求 腾讯云 2H4G 5M 60GB 轻量应用服务器  承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛. 系统镜像选 ...

  2. 洛谷 P3131 [USACO16JAN]子共七Subsequences Summing to Sevens

    P3131 [USACO16JAN]子共七Subsequences Summing to Sevens 题目描述 Farmer John's NN cows are standing in a row ...

  3. OJ密码岛 #21011. T3 走访奶牛 / 洛谷 P1556 幸福的路

    题目描述 John 是一个开明的农场主, 每天 John 都要走访农场里 n( 1<=n<=10)头牛, 听他们吐槽心里的不快. 孤僻的牛牛们从不聚集, 各自有自己的小屋 ,位置可以描述为 ...

  4. usaco 虫洞 洛谷

    问题描述:李宗泽的爱好是在周末进行物理学实验,但事与愿违,实验将N个黑洞(2 <= N <= 12, N为even)具象化在了他的农场里,每个都有明确的坐标位置.根据他的计算,李宗泽知道将 ...

  5. 一中OJ #1151 [USACO Jan08] 化妆晚会 | 排序与查找 | 解题报告

    一中OJ | #1151 化妆晚会 时限 1000MS/Case 内存 64MB/Case 题目描述 万圣节又到了!FJ打算带他的奶牛去参加一个化装晚会,但是FJ只做了一套能容下两头总长不超过 S 的 ...

  6. 一中OJ #3514 礼物 | 暴搜 + 剪枝 | 解题报告

    一中OJ | #3514 礼物 时限 1000MS/Case 内存 128MB/Case 题目描述 你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1,宝物2的体积为S2,价值 ...

  7. 如何判断一个数是三的倍数,七的倍数,还是三和七的倍数,还是既不是三的倍数也不是七的倍数(vs版本)

    #include<stdio.h> int main() { int a = 0, b = 0, c = 0, k = 0, d = 0, f = 0, g = 0, h = 0, l = ...

  8. 思维--nkoj3653七的倍数

    七的倍数 Description 农夫约翰的N头奶牛排成一排,每头奶牛都有约翰制定的奶牛编号.约翰想要拍一张奶牛的照片,他希望该照片满足下列两个要求:  1.照片中奶牛的数量尽可能多:  2.照片中奶 ...

  9. 一中OJ #1438 航线设计 | LIS 序列DP | 解题报告

    一中OJ | #1438 航线设计 时限 1000MS/Case 内存 64MB/Case 题目描述 有一个国家被一条河划分为南北两部分,在南岸和北岸总共有N对城镇,每一城镇在对岸都有唯一的友好城镇. ...

最新文章

  1. XShell 技巧分享
  2. 部编版是什么版本_部编版是人教版吗
  3. 剑指offer——16.数值的整数次方
  4. mysql5.5默认引擎,在MySQL5.5以上系统中,默认的存储引擎是( )。
  5. android google GMS服务包安装
  6. Delphi FireMonkey 的动画以及多线程
  7. 国际C 语言乱码大赛(IOCCC )
  8. 【项目介绍】单发动机驱动的多旋翼飞行器及其控制系统
  9. 小猫钓鱼纸牌游戏java_java实现纸牌游戏-小猫钓鱼算法
  10. 立青博客:不是所有人都是Java大白
  11. 资格考试_第二章_证券投资基金概述
  12. Android保存图片到本地或者数据库,并通知相册更新
  13. AMD define函数
  14. 2023款ThinkBook 14和15锐龙版区别对比评测选哪个好
  15. html 表格排列,html表格如何排序?表格排序详解!
  16. 【转】汇编中的test和cmp指令
  17. Python读取文件时出现错误
  18. 连续四年携手,2021华为手机杯围甲雨中开幕
  19. Ansoft Designer v4.0 -ISO 1CD(电子电磁仿真)
  20. NAS信令学习笔记 ——TAU(1)

热门文章

  1. 怎么把备忘录里的照片存储到相册
  2. Linux学习之ROS-Academy-for-Beginners安装记录与问题
  3. python 三维装箱可视化图代码
  4. 易基因:m6A mRNA甲基化修饰调控CTNNB1促进肝母细胞瘤增殖的机制研究|Mol Cancer
  5. 使用Excel输出高清图片
  6. 【概率论与数理统计】1.3 概率的性质
  7. VS2013 Windows7(X64被测试)安装方法 离线安装
  8. U盘启动装Win7系统
  9. MCG格式监控录像数据恢复成功
  10. 《深入理解计算机系统》实验四Architecture Lab下载和官方文档机翻