zoukankan      html  css  js  c++  java
  • P1855 榨取kkksc03 二维费用背包

    Kkksc03的时间和金钱是有限的,所以他很难满足所有同学的愿望。所以他想知道在自己的能力范围内,最多可以完成多少同学的愿望?

    输入输出格式

    输入格式:

    第一行,n M T,表示一共有n(n<=100)个愿望,kkksc03 的手上还剩M(M<=200)元,他的暑假有T(T<=200)分钟时间。

    第2~n+1行 mi,ti 表示第i个愿望所需要的金钱和时间。

    输出格式:

    一行,一个数,表示kkksc03最多可以实现愿望的个数。

    输入输出样例

    输入样例#1: 复制
    6 10 10
    1 1
    2 3 
    3 2
    2 5
    5 2
    4 3
    输出样例#1: 复制
    4

    一开始将 j,s放在一个for里遍历 导致漏掉了很多的状态 (想一想)
    其他没什么难度
    #include<bits/stdc++.h>
    using namespace std;
    //input
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define RI(n) scanf("%d",&(n))
    #define RII(n,m) scanf("%d%d",&n,&m);
    #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
    #define RS(s) scanf("%s",s);
    #define LL long long
    #define REP(i,N)  for(int i=0;i<(N);i++)
    #define CLR(A,v)  memset(A,v,sizeof A)
    //////////////////////////////////
    #define N 500+5
    #define inf 0x3f3f3f3f
    int mp[N][N];
    long long dp[N][N];
    int main()
    {
      int n,m,k;
      RIII(n,m,k);
      rep(i,1,n)
      {
        int a,b;
        RII(a,b);
        for(int j=m;j>=a;j--)
        for(int s=k;s>=b;s--)
        dp[j][s]=max(dp[j][s],dp[j-a][s-b]+1);
      }
      cout<<dp[m][k];
    }









  • 相关阅读:
    搭建zend framework1开发环境
    动态调整UITableViewCell高度的实现方法
    实用SQL语句大全
    ios错误大全
    UITableView取消选中颜色、常用操作
    NSString的常用方法
    地图覆盖物
    iOS 录音功能的实现
    UITableView划动删除的实现
    UITableView的编辑模式
  • 原文地址:https://www.cnblogs.com/bxd123/p/10518601.html
Copyright © 2011-2022 走看看