• P2979 [USACO10JAN]奶酪塔Cheese Towers


    P2979 [USACO10JAN]奶酪塔Cheese Towers

    背包dp

    不过多了一个大奶酪可以压扁其他奶酪的

    一开始写了个暴力82分。贪心的选择

    然后发现,有如下两种规律

    要么最优都是小奶酪,要么就是有一个大奶酪是在顶上的。

    所以我们先用小奶酪跑一遍背包,记录最优值。

    然后加上大奶酪,不考虑压缩的再跑一遍。因为如果大奶酪在上面的话,我们就不用考虑在dp中压缩,直接跑完dp后。看做一大块一起压缩

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    using std::max;
    const int maxn=1300;
    const int N=110;
    int h[N],V[N];
    int f[maxn];
    int main()
    {
    	int n,t,k;
    	scanf("%d%d%d",&n,&t,&k);
    	for(int i=1;i<=n;i++)
    		scanf("%d%d",&V[i],&h[i]);
    	int top=1.0*t*5/4+0.5;
    	for(int i=1;i<=n;i++)
    		if(h[i]<k)
    			for(int j=h[i];j<=top;j++)
    				f[j]=max(f[j],f[j-h[i]]+V[i]);
    	int ans=f[t];
    	for(int i=1;i<=n;i++)
    		if(h[i]>=k)
    			for(int j=h[i];j<=top;j++)
    				f[j]=max(f[j],f[j-h[i]]+V[i]);	
    	for(int i=1;i<=n;i++)
    		if(h[i]>=k)	
    			ans=max(ans,f[(t-h[i])*5/4]+V[i]);
    	printf("%d",ans);
    }
    
  • 相关阅读:
    json、txt、xlsx
    word-排版准备与文字清洗
    运营能力分析
    获利能力分析
    偿债能力分析
    现金流量表结构分析
    负债项目分析
    资产负债表分析
    财务报表的分析
    会计电算化账务处理流程8
  • 原文地址:https://www.cnblogs.com/Lance1ot/p/9636192.html
Copyright © 2020-2023  润新知