BZOJ 2021 Usaco2010 Jan Cheese Towers 动态规划
题目大意:全然背包。假设最顶端的物品重量≥k,那么以下的全部物品的重量变为原来的45
考虑一些物品装进背包,显然我要把全部重量大于≥k的物品中重量最小的那个放在最顶端。才干保证总重量最小
那么我们给物品排个序,第一键值为重量是否≥k(≥k的放在前面),第二键值为重量(从小到大)
然后依次增加背包。令fi表示没有重量≥k的物品放在最顶端时重量为i的最大价值。gi表示有重量≥k的物品放在最顶端是重量为i的最大价值。DP就可以
时间复杂度O(nT)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 1010
using namespace std;
int n,m,k;
pair<int,int> a[M];
long long f[M],g[M];
bool Compare(const pair<int,int> &a,const pair<int,int> &b)
{
if(a.first!=b.first)
{
if( (a.first>=k)==(b.first>=k) )
return a.first<b.first;
return a.first>b.first;
}
return a.second<b.second;
}
int main()
{
int i,j;
cin>>n>>m>>k;
for(i=1;i<=n;i++)
scanf("%d%d",&a[i].second,&a[i].first);
sort(a+1,a+n+1,Compare);
memset(f,0xef,sizeof f);
memset(g,0xef,sizeof g);
f[0]=0;
for(i=1;i<=n;i++)
{
int temp=a[i].first/5*4;
if(a[i].first>=k)
{
for(j=a[i].first;j<=m;j++)
g[j]=max(g[j],f[j-a[i].first]+a[i].second);
}
else
{
for(j=a[i].first;j<=m;j++)
f[j]=max(f[j],f[j-a[i].first]+a[i].second);
}
for(j=temp;j<=m;j++)
g[j]=max(g[j],g[j-temp]+a[i].second);
}
long long ans=0;
for(i=0;i<=m;i++)
{
ans=max(ans,f[i]);
ans=max(ans,g[i]);
}
cout<<ans<<endl;
return 0;
}
BZOJ 2021 Usaco2010 Jan Cheese Towers 动态规划的更多相关文章
- BZOJ 2021 [Usaco2010 Jan]Cheese Towers:dp + 贪心
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2021 题意: John要建一个奶酪塔,高度最大为m. 他有n种奶酪.第i种高度为h[i]( ...
- 【BZOJ】2021: [Usaco2010 Jan]Cheese Towers(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=2021 噗,自己太弱想不到. 原来是2次背包. 由于只要有一个大于k的高度的,而且这个必须放在最顶,那 ...
- BZOJ2021: [Usaco2010 Jan]Cheese Towers
2021: [Usaco2010 Jan]Cheese Towers Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 184 Solved: 107[Su ...
- bzoj 1783: [Usaco2010 Jan]Taking Turns
1783: [Usaco2010 Jan]Taking Turns Description Farmer John has invented a new way of feeding his cows ...
- BZOJ 2020 [Usaco2010 Jan]Buying Feed,II:贪心【定义价值】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2020 题意: FJ开车去买K份食物. 如果他的车上有X份食物,每走一里就花费X元. FJ的 ...
- bzoj 1783: [Usaco2010 Jan]Taking Turns【贪心+dp】
不知道该叫贪心还是dp 倒着来,记f[0][i],f[1][i]分别为先手和后手从n走到i的最大值.先手显然是取最大的,当后手取到比先手大的时候就交换 #include<iostream> ...
- 2020: [Usaco2010 Jan]Buying Feed, II
2020: [Usaco2010 Jan]Buying Feed, II Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 220 Solved: 162[ ...
- P2979 [USACO10JAN]奶酪塔Cheese Towers
P2979 [USACO10JAN]奶酪塔Cheese Towers 背包dp 不过多了一个大奶酪可以压扁其他奶酪的 一开始写了个暴力82分.贪心的选择 然后发现,有如下两种规律 要么最优都是小奶酪, ...
- [bzoj 1782] [Usaco2010 Feb]slowdown慢慢游
[bzoj 1782] [Usaco2010 Feb]slowdown慢慢游 Description 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1-N)从 ...
随机推荐
- 最小二乘法,python3实现
https://www.cnblogs.com/BlogOfMr-Leo/p/8627311.html [用的是库函数] https://blog.csdn. ...
- Mysql5.7.19压缩版安装步骤及踩过的坑
安装Mysql5.7.19压缩版 一:下载压缩包 1.从MySQL官网下载MySQL Community Server 5.7.19,此版本为免费版. 2.下载完成之后解压缩,打开之后文件夹如下: ...
- C#执行sql文件
C# 执行sql文件 2012-05-11 12:28:57| 分类: App Develop|举报|字号 订阅 /// <summary> /// 执行sq ...
- angular 响应式自定义表单控件—注册头像实例
1. 组件继承ControlValueAccessor,ControlValueAccessor接口需要实现三个必选方法 writeValue() 用于向元素中写入值,获取表单的元素的元素值 regi ...
- MWPhotoBrowser 属性详解 和代理解释
--------0.MWPhoto简单属性解释---------------- MWPhoto *photo = [MWPhoto photoWithURL:[NSURL URLWithString: ...
- java.util.ConcurrentModificationException(如何避免ConcurrentModificationException)
java.util.ConcurrentModificationException is a very common exception when working with java collecti ...
- Windows下Nginx的下载安装、启动停止和配置浏览
前言: 记录一下今天在Windows下载安装Nginx服务器的过程.因为网上关于Nginx的资料都太复杂了,大多数是在Linux下使用的方法. 1.下载 Nginx官网下载地址:http://ngin ...
- VMware linux虚拟机在线识别新添加磁盘
登录进虚拟机linux系统中执行以下命令,识别新增加的硬盘 echo "- - -" > /sys/class/scsi_host/host0/scan # ls /sys/ ...
- 【例题 6-4 UVA - 11988】Broken Keyboard (a.k.a. Beiju Text)
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 会链表的插入操作的话.这个就不难了. 放置两个哨兵节点. 然后模拟插入一个节点的过程就好. 实时修改光标就好->即下一个插入的 ...
- jQuery获取多种input值的方法(转)
获取input的checked值是否为true: 第一种: if($("input[name=item][value='val']").attr('checked')==true) ...