zp1366_dp.cpp

来自「浙江大学acm在线判题器代码集。 本人在浙大acm判题器上的所有代码(心血) 」· C++ 代码 · 共 41 行

CPP
41
字号
//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <iostream.h>
#include <string.h>
int b[100010],p[100010],w[100010];
int main(int argc, char* argv[])
{

  int c,n,i,j,k;
  int a[12],d[12];
  while(cin>>c)
  {
    cin>>n;
    for (i=0;i<n;i++)
      cin>>a[i]>>d[i];
    memset(b,0,sizeof(int)*100010);
    b[0]=1;
    for (k=0;k<n;k++)
    {
      memset(p,0,sizeof(int)*100010);
      for (i=0;i<c;i++)
        if (b[i])
          for (j=0;j<=a[k];j++)
            if (i+j*d[k]<=c)
              p[i+j*d[k]]=1;
      memcpy(b,p,sizeof(int)*(c+1));
    }
    for (i=c;i>0;i--)
      if (b[i])
        break;
    cout<<i<<endl;
  }
  return 0;
}
//---------------------------------------------------------------------------
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?