zoukankan      html  css  js  c++  java
  • MM群2007七夕模拟赛

      

    <问题分析>

    状态转移方程 s[i][j]=s[i-rmb[k]][j-rp[k]]+1 if(s[i][j]<s[i-rmb[k]][j-rp[k]]+1)

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 
     5 #define N 100+1
     6 
     7 int main()
     8 {
     9     int n,i,j,k,m,r,rmb[N],rp[N],time[N],s[N][N],c[N][N];
    10     scanf("%d",&n);
    11     for(i=1;i<=n;i++)
    12     {
    13        scanf("%d %d %d",&rmb[i],&rp[i],&time[i]);
    14     }
    15     scanf("%d %d",&m,&r);
    16     memset(s,0,N*N*sizeof(int));
    17     memset(c,0,N*N*sizeof(int));
    18     for(i=1;i<=n;i++)
    19     {                
    20        for(j=m;j>=rmb[i];j--)
    21        {
    22            for(k=r;k>=rp[i];k--)
    23            {
    24               
    25                  if(s[j][k]<s[j-rmb[i]][k-rp[i]]+1)
    26                  {
    27                     s[j][k]=s[j-rmb[i]][k-rp[i]]+1;
    28                     c[j][k]=c[j-rmb[i]][k-rp[i]]+time[i];
    29                  }
    30                  else if(s[j][k]==s[j-rmb[i]][k-rp[i]]+1&&c[j-rmb[i]][k-rp[i]]+time[i]<c[j][k])
    31                  {
    32                     c[j][k]=c[j-rmb[i]][k-rp[i]]+time[i]; 
    33                  }
    34            }
    35        }
    36     }
    37     i=c[m][r];
    38     printf("m:%d r:%d %d
    ",m,r,i);
    39     for(j=m;j>=0;j--)
    40     {
    41        for(k=r;k>=0;k--)
    42        {
    43           if(s[j][k]!=s[m][r])
    44           {
    45              continue;
    46           }
    47           if(i>c[j][k])
    48           i=c[j][k];
    49        } 
    50     }
    51     printf("%d
    ",i);
    52     while(true);
    53     return 0;
    54 }
  • 相关阅读:
    Linux 常用命令
    去除重叠区间
    Python 小工具之大文件去重
    有趣的pyfiglet
    杨辉三角
    Paginator分页
    Linux用户和用户组
    Grub介绍
    Linux系统运行级别
    Linux系统启动流程
  • 原文地址:https://www.cnblogs.com/simplesslife/p/MutiplyPackage.html
Copyright © 2011-2022 走看看