官方题解:

题意转化一下就是:

给出一列数a[1]...a[n],求长度最长的一段连续的数,使得这些数的和能被M整除。

分析:

设这列数前i项和为s[i],

则一段连续的数的和 a[i]+a[i+1]+...+a[j-1]+a[j]=s[j]-s[i-1],

所以这段连续的数的和能被m整除的条件就是 (s[j]-s[i-1]) % m == 0,

即 s[j]%m-s[i-1]%m == 0,

因此,只需要每一个余数找使s[i]%m等于该余数的最小的i,和s[j]%m等于该余数的最大的j,相减即为最长的连续的数的长度。

i 要从1开始,不然会WA。

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm> using namespace std; const int MAXN = ; int n, mod;
int maxPos[MAXN];
int minPos[MAXN]; int main()
{
//freopen( "1006.in", "r", stdin );
//freopen( "s.txt", "w", stdout );
while ( ~scanf( "%d%d", &n, &mod ) )
{
memset( maxPos, -, sizeof(maxPos) );
memset( minPos, -, sizeof(minPos) );
int sum = ;
minPos[] = ;
for ( int i = ; i <= n; ++i )
{
int a;
scanf( "%d", &a );
sum += a;
sum %= mod;
if ( sum < ) sum += mod; if ( minPos[sum] == - )
minPos[sum] = i;
maxPos[sum] = i;
}
int ans = ;
for ( int i = ; i < mod; ++i )
if ( maxPos[i] != - && minPos[i] != - )
{
ans = max( ans, maxPos[i] - minPos[i] );
}
printf( "%d\n", ans );
}
return ;
}

HDU 4648 Magic Pen 6 思路的更多相关文章

  1. HDU 4648 Magic Pen 6 (。。。。。。。。。。)

    Magic Pen 6 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  2. hdu 4648 - Magic Pen 6(“水”题)

    摘自题解: 题意转化一下就是: 给出一列数a[1]...a[n],求长度最长的一段连续的数,使得这些数的和能被M整除. 分析: 设这列数前i项和为s[i], 则一段连续的数的和 a[i]+a[i+1] ...

  3. HDU 4648 Magic Pen 6

    题目链接 6Y什么水平.. #include <cstdio> #include <cstring> #include <string> #include < ...

  4. Magic Pen 6

    Problem Description In HIT, many people have a magic pen. Lilu0355 has a magic pen, darkgt has a mag ...

  5. HDU 1153 magic bitstrings(读题+)

    hdu 1153 magic bitstrings 题目大意 一个质数p,现在让你求一个p-1长度的“01魔法串”.关于这个魔法串是这么定义的:     我们现在把这个串经过一段处理变成一个长宽均为p ...

  6. HDU 2274 Magic WisKey

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2274 Magic WisKey Time Limit: 2000/1000 MS (Java/Othe ...

  7. [搜索] hdu 4016 Magic Bitwise And Operation

    主题链接: http://acm.hdu.edu.cn/showproblem.php?pid=4016 Magic Bitwise And Operation Time Limit: 6000/30 ...

  8. hdu A Magic Lamp

    http://acm.hdu.edu.cn/showproblem.php?pid=3183 A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)   ...

  9. hdu 4605 Magic Ball Game

    http://acm.hdu.edu.cn/showproblem.php?pid=4605 可以离线求解 把所以可能出现的 magic ball  放在一个数组里(去重),从小到大排列 先不考虑特殊 ...

随机推荐

  1. 《我是IT小小鸟》读书笔记

    转眼间,大学的第二学期悄悄来临了,老师给我们布置了一道原本我以为很无趣的题目----写<我是IT的读书笔记>,但是我读了<我是IT小小鸟>这本书后,令我受益匪浅:五个人,每个人 ...

  2. UVA 10078 The Art Gallery

    Problem: Century Arts has hundreds of art galleries scattered all around the country and you are hir ...

  3. 我的这10年——从机械绘图 到 炼油 到 微软MVP 的华丽转身

    年底了,各种总结计划满天飞,有空的时候我也一直在思考这么多年,是怎么过来的.也曾经很迷茫,希望经验和经历能给大家一点带来一点正能量的东西.10年很长,10年前说实话我没有思考过现在的样子,但10年前的 ...

  4. aspx页面生成html

              /// <summary>         /// aspx生成Html         /// </summary>         /// <pa ...

  5. 在C语言中嵌入汇编语言

    TMS320C28x编译器允许在C程序中嵌入汇编指令,通过下面声明实现: asm(“assembler text”); 其中assembler text指汇编代码.asm指令一般用来处理C/C++语句 ...

  6. 使用Assetbundle时可能遇到的坑

    原地址:http://www.cnblogs.com/realtimepixels/p/3652128.html 一 24 十一郎未分类 No Comments 转自 http://www.unity ...

  7. poj 1704

    Georgia and Bob Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7233   Accepted: 2173 D ...

  8. LA 3713

    The Bandulu Space Agency (BSA) has plans for the following three space missions: Mission A: Landing ...

  9. UITextField输入中文限制

      [self.textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEve ...

  10. POJ 1953

    //FINBONACI数列 #include <iostream> #define MAXN 100 using namespace std; int _m[MAXN]; int main ...