zoukankan      html  css  js  c++  java
  • hdu4648Magic Pen 6

    http://acm.hdu.edu.cn/showproblem.php?pid=4648

    求连续的一段和对m取余为0  若s[j]和s[i]对M的余数都相同 则相见就满足要求 找个最长的

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 using namespace std;
     7 #define LL long long
     8 #define N 100010
     9 #define INF 0xfffffff
    10 LL s[N];
    11 int a[N],d1[N],d2[N];
    12 int main()
    13 {
    14     int i,j,n,m,k;
    15     while(cin>>n>>m)
    16     {
    17         memset(s,0,sizeof(s));
    18         LL sum=0;
    19         for(i = 1; i <= m ; i++)
    20         {
    21             d1[i] = -INF;
    22             d2[i] = INF;
    23         }
    24         int ans=0;
    25         for(i = 1; i <= n ; i++)
    26         {
    27             scanf("%d",&a[i]);
    28             sum+=a[i];
    29             s[i] = s[i-1]+a[i];
    30             k = s[i]%m;
    31             if(k<0) k+=m;
    32             if(k==0)
    33             ans = max(ans,i);
    34             d1[k] = max(d1[k],i);
    35             d2[k] = min(d2[k],i);
    36         }
    37         for(i = 1; i < m ; i++)
    38         ans = max(d1[i]-d2[i],ans);
    39         cout<<ans<<endl;
    40     }
    41     return 0;
    42 }
    View Code
  • 相关阅读:
    KVM/QEMU简介
    编辑器制作的一些资源
    HRBEU ACM 图论 1006
    zoj 2001
    HRBEU equal
    zoj Integer Inquiry
    HRBEU 字符串 1003
    poj 2736
    SDUT_DP 1003
    zoj Martian Addition
  • 原文地址:https://www.cnblogs.com/shangyu/p/3242371.html
Copyright © 2011-2022 走看看