woj 1565 - B - Magic (贪心+dp)

#include<cstdio>

#include<iostream>

#include<cstring>

#include<cstdlib>

#include<cmath>

#include<queue>

#include<algorithm>

using namespace std;

int a[1000000+10];

char str[1000000+10];

int main()

{

    int n;

    int i,j,k;

    while(~scanf("%d",&n))

      {

        int sum=0;

        int after;

        scanf("%s",str);

        for(i=0;i<n;i++)

        {

          a[i]=str[i]-'0';

          sum+=a[i];

          if(a[i]!=0)

          {

            after=10-a[i];

            a[i]=after-a[i];

          }

        }

        int ans=0,temp=0;

      /* for(i=0;i<n;i++)

        {

          printf("%d\n",a[i]);



        }*/



        for(i=0;i<n;i++)

        {

          if(temp+a[i]<=0)

          {

            temp=0;

          }

          else

          {

            temp+=a[i];

          }

          if(temp>ans) ans=temp;

        }



        printf("%d\n",sum+ans);

    }

    return 0;

}

  

你可能感兴趣的:(dp)