zoukankan      html  css  js  c++  java
  • BZOJ5018: [Snoi2017]英雄联盟

    算算 n 的最大值,∑i=1nk[i] * c[i] <= 243552

    这就可以直接上背包了

    最裸最暴力的那种

    可以选择滚动数组,并不能减掉一维,因为在重复枚举 j 的时候除第一次枚举之外都会用到当前这一层的状态


    代码:  

    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<cctype>
    #include<cstdio>
    using namespace std;
     
    typedef long long ll;
    const int MAXN = 123;
     
    int n, totm;
    int sum[MAXN], cst[MAXN], ans = 2147483644;
    ll m;
    ll f[MAXN][243552];
     
    int main() {
        scanf("%d%lld", &n, &m);
        for(int i = 1; i <= n; ++i) scanf("%d", &sum[i]);
        for(int i = 1; i <= n; ++i) {
            scanf("%d", &cst[i]);
            totm += cst[i] * sum[i];
        }
        f[0][0] = 1ll;
        for(int ii = 1; ii <= n; ++ii) {
        	int i = (ii & 1);
            for(int k = 0; k <= totm; ++k) {
            	f[i][k] = f[i ^ 1][k];
                for(int j = 0; j <= sum[ii] && k >= j * cst[ii]; ++j) {
                    f[i][k] = min(m, max(f[i][k], f[i ^ 1][k - j * cst[ii]] * (ll)j));
                    if(f[i][k] == m) ans = min(ans, k);
                }
            }
        }
        printf("%d
    ", ans);
        return 0;
    }
    
    禁止诸如开发者知识库/布布扣/码迷/学步园/马开东等 copy 他人博文乃至博客的网站转载 ,用户转载请注明出处:https://www.cnblogs.com/xcysblog/
  • 相关阅读:
    数字类型内置方法
    流程控制之while循环
    流程控制之if判断
    基本运算符
    格式化输出的三种方式
    Python与用户交互
    解压缩
    布尔值(bool)
    django基础 -- 8.cookie 和 session
    为博客园文章添加目录的方法
  • 原文地址:https://www.cnblogs.com/xcysblog/p/9624253.html
Copyright © 2011-2022 走看看