题解 [USACO10JAN]Cheese Towers S

给同学讲完全背包时找到的一个好题。

题目分析

我们首先知道,如果这个题没有大奶酪,那么就是一个裸的完全背包,代码可以参考这题

这题难就难在如果我们加上大奶酪之后要怎么处理。

首先,我们知道最优解只有可能是一下两种情况:

  1. 塔内没有大奶酪,也就是完全背包的板子。
  2. 我们选择把大奶酪放到最顶端,因为如果在这个奶酪塔里有大奶酪,那么把它放到最顶端肯定不会使答案变差。

答案是两者取最大值。

对于第二种情况的处理,我们可以尝试去枚举最顶端的那个大奶酪,然后用 vi+f(tc[i])×5/4 来取最大值,从而可以求出第二种的答案。

其实这道题的核心就是第二种情况的处理,因此这里给出第二种情况的代码。

for(int i=1;i<=n;i++)
{
if(c[i]>=k)//如果是大奶酪
{
int tmp1=v[i]+f[(t-c[i])*5/4];//求出要被用来更新这个值
tmp=max(tmp1,tmp);//更新值
}
}

本文作者:zplqwq

本文链接:https://www.cnblogs.com/zplqwq/p/15695552.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   zplqwq  阅读(45)  评论(0编辑  收藏  举报
编辑推荐:
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
阅读排行:
· dotnet 源代码生成器分析器入门
· 官方的 MCP C# SDK:csharp-sdk
· 一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
· 一文搞懂MCP协议与Function Call的区别
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起