2 条题解

  • 1
    @ 2024-2-11 19:29:22

    世界上最好的题解😄

    #include<bits/stdc++.h>
    using namespace std;
    int f[401][401];
    int hi[401],ti[401],ki[401];
    int main(){
    	int h,t,n;
    	cin>>h>>t>>n;
    	for(int i=1;i<=n;i++)
    	cin>>hi[i]>>ti[i]>>ki[i];
    	for(int i=1;i<=n;i++){
    		for(int j=h;j>=hi[i];j--)
    		for(int k=t;k>=ti[i];k--)
    		f[j][k]=max(f[j][k],f[j-hi[i]][k-ti[i]]+ki[i]);
    	}
    	cout<<f[h][t];
    	return 0;
    }
    

    看完别忘了点赞呦👀️

    • 0
      @ 2022-7-19 22:40:18
      #include <iostream>
      #include <cmath>
      using namespace std;
      int t1, t2, n, w[20010], v[20010], k[20010], f[20010][20010];
      int main()
      {
          cin >> t1 >> t2;
          cin >> n;
          for (int i = 1;i <= n;i ++) cin >> w[i] >> v[i] >> k[i];
          for (int i = 1;i <= n;i ++)
          {   
              for (int j = t1;j >= w[i];j --)
              {   
                  for (int h = t2;h >= v[i];h --)
                  {
                      f[j][h] = max(f[j][h], f[j - w[i]][h - v[i]] + k[i]);//状态转移方程
                  }
              }
          }
          cout << f[t1][t2];
          return 0;
      }
      
      • 1

      信息

      ID
      506
      时间
      1000ms
      内存
      125MiB
      难度
      2
      标签
      递交数
      13
      已通过
      12
      上传者