题目:

正文:

  • 啊,多重背包真恶心。。。

  • 一开始我是把多重背包改成了01背包,然鹅我当时是直接1个1个的往后摞的。。。

  • 参见以下代码:

  • for(int i=1;i<=n;++i){//平平无奇的输入
    v[i]=R;w[i]=R;num[i]=R;
    }
    for(int i=1;i<=t;++i){//t等于n,但是一会要修改n,所以使用了另一个变量
    while(--num[i]){//把--提前是因为下标i这里还需要留1个
    v[++n]=v[i];//摞摞摞
    w[n]=w[i];
    }
    }
  • 于是数据就很多,然后就TLE了。。。(实测:50分(开O2) | 30分(不开O2))

  • 然后按照背包九讲里面的板子改了改贴上去A惹,但是我到现在还没有看懂那个板子每一句话的意思。。。

  • 于是我又按照最开始的思路开始了我的修改之旅,正是:

  • 一改一改又一改,改完是错还超时。

  • 不知不觉秃顶中,但愿评测能AC。

  • 我借鉴了那个背包九讲里面用次方求解的思路,把1个1个摞改成了几个几个往后摞。。。

  • 如下:

  • for(int i=1;i<=n;++i){
    a=R;b=R;c=R;//代替输入,因为不这样的话会很麻烦
    for(int j=1;j<=c;j<<=1){//j是摞的个数
    v[++t]=a*j;//摞
    w[t]=b*j;
    c-=j;//去掉摞上的个数
    }
    if(c){//因为c可能会有剩余,所以特判一下
    v[++t]=a*c;
    w[t]=b*c;
    }
    }
  • 这样就A啦啦啦。

Code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <list>
using namespace std;
#define R read()
#define GC getchar()
#define ll long long
#define ull unsigned long long
#define INF 0x7fffffff
#define LLINF 0x7fffffffffffffff
ll read(){
ll s=0,f=1;
char c=GC;
while(c<'0'||c>'9'){if(c=='-')f=-f;c=GC;}
while(c>='0'&&c<='9'){s=s*10+c-'0';c=GC;}
return s*f;
}
int n,m,t;
int a,b,c;
int v[200010],w[200010];
int f[40010];
int main(){
n=R;m=R;
for(int i=1;i<=n;++i){
a=R;b=R;c=R;//代替输入,因为不这样的话会很麻烦
for(int j=1;j<=c;j<<=1){//j是摞的个数
v[++t]=a*j;//摞
w[t]=b*j;
c-=j;//去掉摞上的个数
}
if(c){//因为c可能会有剩余,所以特判一下
v[++t]=a*c;
w[t]=b*c;
}
}
for(int i=1;i<=t;++i){//平平无奇的01背包
for(int j=m;j>=w[i];--j){
f[j]=max(f[j],f[j-w[i]]+v[i]);
}
}
printf("%d",f[m]);//输出
return 0;
}

P1776 宝物筛选的更多相关文章

  1. P1776 宝物筛选_NOI导刊2010提高(02)&& 多重背包二进制优化

    多重背包, 要求 \(N\log N\) 复杂度 Solution 众所周和, \(1-N\) 之内的任何数可以由 \(2^{0}, 2^{1}, 2^{2} ... 2^{\log N}, N - ...

  2. 洛谷P1776 宝物筛选_NOI导刊2010提高(02)

    P1776 宝物筛选_NOI导刊2010提高(02) 题目描述 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF可发财了,嘎嘎.但是这里的宝物实在是太多了, ...

  3. [luogu P1776] 宝物筛选 解题报告(单调队列优化DP)

    题目链接: https://www.luogu.org/problemnew/show/P1776 题目: 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF ...

  4. luogu||P1776||宝物筛选||多重背包||dp||二进制优化

    题目描述 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF可发财了,嘎嘎.但是这里的宝物实在是太多了,小FF的采集车似乎装不下那么多宝物.看来小FF只能含泪 ...

  5. P1776 宝物筛选_NOI导刊2010提高(02)

    题目描述 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF可发财了,嘎嘎.但是这里的宝物实在是太多了,小FF的采集车似乎装不下那么多宝物.看来小FF只能含泪 ...

  6. P1776 宝物筛选_NOI导刊2010提高(02)(背包的二进制优化)

    题目描述 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF可发财了,嘎嘎.但是这里的宝物实在是太多了,小FF的采集车似乎装不下那么多宝物.看来小FF只能含泪 ...

  7. 洛谷p1776宝物筛选

    宝物筛选 多重背包问题 物品数目已知 可以枚举每个物品 当做01背包来做 不过会超时 此时需要二进制拆分来优化 分解成新的物品 再跑一遍01背包即可 //二进制拆分+01背包 //设f[j]表示前i件 ...

  8. 洛谷P1776 宝物筛选 题解 多重背包

    题目链接:https://www.luogu.com.cn/problem/P1776 题目大意: 这道题目是一道 多重背包 的模板题. 首先告诉你 n 件物品和背包的容量 V ,然后分别告诉你 n ...

  9. 洛谷P1776 宝物筛选

    一道很好的单调队列优化多重背包入门题 令\(v[i]\)表示重量,\(w[i]\)表示价格 ,\(c[i]\)表示最多可放的数量,不难推出朴素的转移方程如下: \(f[i][j]=max\{f[i-1 ...

  10. Luogu P1776 宝物筛选_NOI导刊2010提高(02)(多重背包模版)

    传送门 多重背包板子题, 多重背包就是每种东西有好几个,可以把它拆分成一个一个的01背包 优化:二进制拆分(拆成1+2+4+8+16+...) 比如18=1+2+4+8+3,可以证明18以内的任何数都 ...

随机推荐

  1. Linux 之Mycat搭建报错 java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException

    搭建MyCat环境时出现 错误: 代理抛出异常错误: java.net.MalformedURLException: Local host name unknown: java.net.Unknown ...

  2. .NET Core Hangfire周期性作业调度问题

    前言 四月中旬Hangfire团队发布了1.7.11版本,在使用周期性作业调度过程中发现一个问题,这个问题应该一直未解决,故做此记录,希望遇到的童鞋根据项目业务而避开这个问题. 周期性作业调度 我们依 ...

  3. debug PostgreSQL 9.6.18 using Eclipse IDE on CentOS7

    目录 debug PostgreSQL 9.6.18 using Eclipse IDE on CentOS7 1.概览 2.建立用户 3.编译postgre 4.启动Eclipse 5.设置环境变量 ...

  4. SpringMVC 学习笔记(7)spring和springmvc的整合

    58. 尚硅谷_佟刚_SpringMVC_Spring整合SpringMVC_解决方案.avi 解决办法让springmvc值扫描@Control控制层和@ControllerAdvice对应的异常处 ...

  5. Win8.1安装配置64位Oracle Database 11g的详细图文步骤记录

    在开始Oracle数据安装之前建议:1.关闭本机的病毒防火墙.2.断开互联网. 这样可以避免解压缩丢失文件和安装失败. Step1 Oracle官网下载好Windows系统64位的安装包,下载速度慢的 ...

  6. Python数据分析帮你清晰的了解整理员工们的工作效率和整体满意度

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 项目背景 2018年,被称为互联网的寒冬之年.无论大小公司,纷纷走上了裁员 ...

  7. C# 模型赋值

    /// <summary> /// 模型赋值 /// </summary> /// <param name="target">目标</pa ...

  8. 计算机组成原理Day-1

  9. JavaWeb项目在浏览器点击几次就阻塞了

    问题描述 在学习JavaWeb项目时,通过IDE启动项目后,在浏览器点击几次页面中的链接就阻塞了,浏览器一直转圈圈无法加载,后台日志也没有输出. 第一次遇见这种情况,没有日志完全无法分析到底是什么问题 ...

  10. 二.drf之使用序列化编写视图

    总结:两功能序列化: a.拿到queryset --->idc = Idc.objects.all() b.将queryset给序列化成类---->serializer = IdcSeri ...