题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1013

好吧,这题没节操=_=

状态f[u,v,i]表示:消费u的人民币和v的人品同时泡到i个mm所需要的最少时间。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4 #include <algorithm>
 5 using namespace std;
 6 int f[101][101][101], r[101], rp[101], t[101], rmb, RP, n, INF=0x7f7f7f7f;
 7 int main(void) {
 8     freopen("in1.txt","r",stdin);
 9     scanf("%d",&n);for(int i=1;i<=n;scanf("%d%d%d",r+i,rp+i,t+i),++i)
10         ;scanf("%d%d",&rmb,&RP);
11     for(int i=0;i<=rmb;++i)for(int j=0;j<=RP;++j)for(int k=1;k<=n;++k)f[i][j][k]=INF;
12     for(int i=1;i<=n;++i)for(int u=rmb;u>=r[i];--u)for(int v=RP;v>=rp[i];--v)for(int j=1;j<=i;++j)
13         if(f[u][v][j-1]!=INF) f[u][v][j]=min(f[u][v][j],f[u-r[i]][v-rp[i]][j-1]+t[i]);
14     for(int i=n;i>=0;--i)if(f[rmb][RP][i]!=INF){printf("%d\n",f[rmb][RP][i]);break;}
15     return 0;
16 }

为了使泡到的mm尽量多,所以要从后往前找合法的解,只要找到就输出,然后break;

=_=

相关文章:

  • 2021-06-25
  • 2021-04-27
  • 2021-09-14
  • 2021-05-20
  • 2021-11-16
  • 2021-05-31
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-03
  • 2021-05-25
  • 2022-12-23
  • 2022-12-23
  • 2021-06-29
  • 2021-12-30
相关资源
相似解决方案