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/
  • 相关阅读:
    设计一个数据结构,包含两个函数,1.插入一个数字,2.获得中数
    数状数组
    25匹马,每次能5匹一起跑,选出最快的3匹
    禁止ImageCapture自动启动
    SublimeText Videos Notes
    10G个64bit整数,找出中位数
    python初步要点II
    python初步要点
    找出丢失的数字
    nice & renice
  • 原文地址:https://www.cnblogs.com/xcysblog/p/9624253.html
Copyright © 2011-2022 走看看