题目大意:全然背包。假设最顶端的物品重量≥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 动态规划的更多相关文章

  1. BZOJ 2021 [Usaco2010 Jan]Cheese Towers:dp + 贪心

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2021 题意: John要建一个奶酪塔,高度最大为m. 他有n种奶酪.第i种高度为h[i]( ...

  2. 【BZOJ】2021: [Usaco2010 Jan]Cheese Towers(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2021 噗,自己太弱想不到. 原来是2次背包. 由于只要有一个大于k的高度的,而且这个必须放在最顶,那 ...

  3. BZOJ2021: [Usaco2010 Jan]Cheese Towers

    2021: [Usaco2010 Jan]Cheese Towers Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 184  Solved: 107[Su ...

  4. bzoj 1783: [Usaco2010 Jan]Taking Turns

    1783: [Usaco2010 Jan]Taking Turns Description Farmer John has invented a new way of feeding his cows ...

  5. BZOJ 2020 [Usaco2010 Jan]Buying Feed,II:贪心【定义价值】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2020 题意: FJ开车去买K份食物. 如果他的车上有X份食物,每走一里就花费X元. FJ的 ...

  6. bzoj 1783: [Usaco2010 Jan]Taking Turns【贪心+dp】

    不知道该叫贪心还是dp 倒着来,记f[0][i],f[1][i]分别为先手和后手从n走到i的最大值.先手显然是取最大的,当后手取到比先手大的时候就交换 #include<iostream> ...

  7. 2020: [Usaco2010 Jan]Buying Feed, II

    2020: [Usaco2010 Jan]Buying Feed, II Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 220  Solved: 162[ ...

  8. P2979 [USACO10JAN]奶酪塔Cheese Towers

    P2979 [USACO10JAN]奶酪塔Cheese Towers 背包dp 不过多了一个大奶酪可以压扁其他奶酪的 一开始写了个暴力82分.贪心的选择 然后发现,有如下两种规律 要么最优都是小奶酪, ...

  9. [bzoj 1782] [Usaco2010 Feb]slowdown慢慢游

    [bzoj 1782] [Usaco2010 Feb]slowdown慢慢游 Description 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1-N)从 ...

随机推荐

  1. Python画图参数设置

    https://blog.csdn.net/qiu931110/article/details/68130199

  2. 【习题 6-9 UVA - 127】"Accordian" Patience

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 链表模拟即可. 1pile不能加s... [代码] #include <bits/stdc++.h> using nam ...

  3. 【Codeforces Round #446 (Div. 2) C】Pride

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 想一下,感觉最后的结果肯定是从某一段开始,这一段的gcd为1,然后向左和向右扩散的. 则枚举那一段在哪个地方. 我们设这一段中所有的 ...

  4. vs2015 EF code first 问题待解决

    在vs 2013 上可以成功ef 生成代码.EF power Tools 安装在vs 2015 :一般不可安装, 把扩展名改成zip,解压缩. 打开extension.vsixmanifest文件 找 ...

  5. [D3] Add hovercard

    The way to add hovercard is Append a div with class 'hovercard' in the tick function, positioning th ...

  6. poj 3122

    Pie Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10309   Accepted: 3651   Special Ju ...

  7. Project Euler 363 Bézier Curves(几何+二分)

    题目链接: https://projecteuler.net/problem=363 题目: A cubic Bézier curve is defined by four points: \(P_0 ...

  8. 【Redis】redis的安装、配置执行及Jedisclient的开发使用

    定义: Redis is an open source, BSD licensed, advanced key-value cache and store. It is often referred ...

  9. 为什么通过空指针(NULL)能够正确调用类的部分成员函数

    #include <iostream> using namespace std; class B { public: void foo() { cout << "B ...

  10. Redis学习笔记--Hash(五)

    Redis的数据是通过key-value的方式存储的,对于value的数据类型有字符串.Hash.list.set.sortedSet在redis命令语句中,语句是忽略大小写的,但是key是不可以忽略 ...