zoukankan      html  css  js  c++  java
  • 榨取kkksc03

    题目描述

    洛谷的运营组决定,如果一名oier向他的教练推荐洛谷,并能够成功的使用(成功使用的定义是:该团队有20个或以上的成员,上传10道以上的私有题目,布置过一次作业并成功举办过一次公开比赛),那么他可以浪费掉kkksc03的一些时间的同时消耗掉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

    说明

    提示 第1,2,3,6个

    分析:

    一道良心的DP题,真的良心啊,完全背包模板题。我觉得黄体都难了,应该是橙题吧。。。

    CODE:

     1 #include<cmath>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 using namespace std;
     7 const int M=205;
     8 int n,m,t,ans;
     9 int a[M],b[M];
    10 int f[M][M];
    11 inline int get(){
    12     char c=getchar();
    13     int res=0;
    14     while (c<'0'||c>'9') c=getchar();
    15     while (c>='0'&&c<='9'){
    16         res=(res<<3)+(res<<1)+c-'0';
    17         c=getchar();
    18     }
    19     return res;
    20 }
    21 int main() {
    22     n=get(),m=get(),t=get();
    23     for (int i=1;i<=n;i++) a[i]=get(),b[i]=get();
    24     for (int i=1;i<=n;i++){
    25         for (int j=m;j>=a[i];j--){
    26             for (int k=t;k>=b[i];k--){
    27                 f[j][k]=max(f[j][k],f[j-a[i]][k-b[i]]+1);
    28             }
    29         }
    30     }
    31     cout<<f[m][t]<<endl;
    32     //system("pause");
    33     return 0;
    34 }
  • 相关阅读:
    term "JavaScript"
    Pro Git
    Pro Git
    Pro Git
    git
    flask
    OJ
    [蓝桥杯]Huffuman树
    priority_queue优先队列
    [蓝桥杯]高精度加法
  • 原文地址:https://www.cnblogs.com/kanchuang/p/11150208.html
Copyright © 2011-2022 走看看