• hdu6492 暴力预处理 + 枚举


    http://acm.hdu.edu.cn/showproblem.php?pid=6492

    题意

    他们一共有 n+m+2k 个人,包括 n+k 个男生,m+k 个女生,其中 k 对男女生为异性情侣,现在他们要找房间住。房间有三种类型,双人间 a 元一间,三人间 b 元一间,这两种只能同性一起住。情侣间能住一对异性情侣,一间 c 元。除了情侣间以外,其他房间都可以不住满。
    求最少花多少钱,能让小伙伴们都有地方住。((n,m,k leq 10^3))

    题解

    • 把人分成三部分,男同性,女同性,情侣,因为情侣间不能空,所以一定是枚举情侣间数,然后剩下的住同性,所以本质上来说处理男同女同是一样的
    • 暴力预处理出i个同性所需要的最小花费,枚举情侣间维护最小费用

    代码

    #include<bits/stdc++.h>
    #define inf 1e18
    #define ll long long 
    using namespace std;
    ll n,m,k,a,b,c,Mi[4005],ans;
    int T;
    int main(){
        cin>>T;
        while(T--){
            ans=inf;
            scanf("%lld%lld%lld%lld%lld%lld",&n,&m,&k,&a,&b,&c);
            for(int i=0;i<=n+m+k;i++)Mi[i]=inf;
            for(ll i=0;i<=n+m+k;i++){
                for(ll j=0;j<=i/2+1;j++){
                    if(j*2>=i)Mi[i]=min(Mi[i],j*a);
                    else{
                        ll lt=i-j*2;
                        if(lt%3==0)Mi[i]=min(Mi[i],j*a+lt/3*b);
                        else Mi[i]=min(Mi[i],j*a+(lt/3+1)*b);
                    }
                }
            }
            for(ll i=0;i<=k;i++){
                ans=min(ans,Mi[n+k-i]+Mi[m+k-i]+i*c);
            }
            printf("%lld
    ",ans);
        }
    }
    
  • 相关阅读:
    Python_Day3
    Python_Day2
    动漫推荐3.0 杂谈
    动漫推荐2.0 杂谈
    动漫推荐1.0 剧情向
    西湖十大特产
    一到春天 杭州西湖就美成了一幅画
    机械键盘十大品牌排行榜
    键盘的日常维护及清理
    无线键盘
  • 原文地址:https://www.cnblogs.com/VIrtu0s0/p/10815604.html
Copyright © 2020-2023  润新知