zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 94 (Rated for Div. 2)B. RPG Protagonist

    Educational Codeforces Round 94 (Rated for Div. 2)B. RPG Protagonist

    题意:
    给你俩个背包p,f,俩种物品a,b的数量,和重量。求最多能拿多少物品。
    思路:
    暴力是一门艺术,好耶!
    题目给的p,f很大,直接背包肯定8行。假设a<b(可以交换),如果第一个背包拿了s1个第一个物品,那么拿第二种和第二个背包拿东西都可以确定了。也就是说,s1的大小从0到可以拿的最大值,然后根据s1的数量再计算剩下的物品的数量,取最大值即可。

    #include <bits/stdc++.h>
    #define inf 0x3f3f3f3f
    #define INF 0x3f3f3f3f3f3f3f3f
    #define mem(a, b) memset(a, b, sizeof(a))
    #define pb push_back
    #define ll long long
    using namespace std;
    const double PI = acos(-1.0);
    const int N = 2e5 + 10;
    const int mod = 998244353;
    ////////////////////////////////
    ll ans;
    ll p, f, cnts, cntw, sw, ww;
    void solve()
    {
        ans=0;
        cin >> p >> f >> cnts >> cntw >> sw >> ww;
        if (sw > ww)
        {
            swap(sw, ww);
            swap(cnts, cntw);
        }
        ll s1 = min(cnts, p / sw);
        ll tmp=s1;
        for (int s1 = 0; s1 <= tmp; s1++)
        {
            ll w1 = min(cntw, (p - s1 * sw) / ww);
            ll s2 = min(cnts - s1, f / sw);
            ll w2 = min(cntw - w1, (f - s2 * sw) / ww);
            ans=max(ans,w1+s2+w2+s1);
        }
        cout<<ans<<endl;
    }
    int main()
    {
        int t;
        cin >> t;
        while (t--)
        {
            solve();
        }
        return 0;
    }
    
  • 相关阅读:
    leetcode 之 Palindrome Partitioning
    虚拟机共享文件夹下tar
    leetcode 之 Excel Sheet Column Number
    AndroidHttpClient & jsoup 解析 正方教务系统
    查看android下的分区表
    ubuntukylin 下编译 android4.4
    android:layout_weight 和 android: weightSum的使用
    Intent 与Bundle的传值关系
    使用自定义的Toast
    SlideMenu例子解析2
  • 原文地址:https://www.cnblogs.com/Aracne/p/13962149.html
Copyright © 2011-2022 走看看