2013 多校第五场 hdu 4648 Magic Pen 6
来源:互联网 发布:广富宝网络借贷 编辑:程序博客网 时间:2024/06/05 03:31
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4648
题目大意:就是给你一个n个数的序列,让你求能被m整除的连续的一段数的最大长度。
思路:用sum[ i ]表示前i项和,那么连续的一段[ i , j ]就可以表示为sum[ j ] - sum[ i - 1 ],也就是sum[ j ]%m - sum[ i - 1 ]%m ==0 最大,那么我们对于每个余数k记录它的最左边的位置和最右边的位置,减一下就是最大长度了。这里还要注意,mod为0的位置最左边位置应该为0,没有数mod算是0.
比赛的时候竟然想了一个小时都没想出来,无语。。= =
代码如下:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int mod1[11111],mod2[11111];int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { memset(mod1,-1,sizeof(mod1)); memset(mod2,-1,sizeof(mod2)); int sum = 0 ; int a; for(int i = 1;i<=n;i++) { scanf("%d",&a); sum += a; int t = (sum%m+m)%m; if(mod1[t]==-1) mod1[t] = i; mod2[t] = i; } int ans = 0; mod1[0]=0; for(int i = 0;i<=m;i++) { if(mod1[i]!=-1) ans = max(ans,mod2[i]-mod1[i]); } printf("%d\n",ans); } return 0;}
- 2013 多校第五场 hdu 4648 Magic Pen 6
- 2013暑期多校联合训练\第五场 Problem F Magic Pen 6
- hdu 4648 Magic Pen 6 多校的一个题目
- hdu 4648 Magic Pen 6
- HDU 4648 Magic Pen 6
- hdu - 4648 - Magic Pen 6
- hdu 4648 Magic Pen 6
- HDU 4648 Magic Pen 6
- HDU 4648 Magic Pen 6
- hdu 4648Magic Pen 6
- HDU 4648 Magic Pen 6
- hdu 4648 Magic Pen
- HDU 4648 magic pen
- hdu 4648 - Magic Pen 6(“水”题)
- hdu 4648 Magic Pen 6(贪心)
- 【HDU- 4648】 Magic Pen 6 【思维 】
- hdoj 4648 Magic Pen 6
- hdu 4649 Magic Pen 6 解题报告
- Mini2440 DM9000 驱动分析(三)
- POJ 1142 A Walk Through the Forest ( 最短路 +记忆化搜索)
- Surrounded Regions
- eclipse最佳实践:快捷键
- LeetCode —— Best Time to Buy and Sell Stock III
- 2013 多校第五场 hdu 4648 Magic Pen 6
- IOS学习之路七(通过xib自定义UITableViewCell)
- android:background
- uva 565 Pizza Anyone?(二进制+搜索)
- hdu 2602 Bone Collector
- 什么是数据库分表技术
- strictmode
- HDU 4649 Professor Tian (2013多校联合5 1007)
- [leetcode刷题系列]First Missing Positive