dp之多重背包(二进制优化)
void solve(int v,int w,int c)
{
int count=0;
for(int k=1;k<=c;k<<=1)
{
val[count]=k*v;
size[count++]=k*w;
c-=k;
}
if(c>0)
{
val[count]=c*v;
size[count++]=c*w;
}
for(int i=0;i<count;i++)
{
cout<<val[i]<<" "<<size[i]<<endl;
}
}
多重转为01模版
hdu 3732
思路:因为v,w都是0到10的数 ,所以会有很多v和w重复,把他们统计出数量,弄成多重背包,然后二进制优化,转为01
#include <string>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#include <iostream>
using namespace std;
int cnt;
int v[100005];
int w[100005];
int dp[10005];
int n,m;
void change(int a,int b,int c)
{
int k=1;
for(k=1;k<=c;k<<=1)
{
/*v[cnt]=k*a;
w[cnt++]=k*b;*/
for(int j=m;j>=k*b;j--)
{
dp[j]=max(dp[j],dp[j-k*b]+k*a);
}
c-=k;
}
if(c>0)
{
/*v[cnt]=k*a;
w[cnt++]=k*b;*/
for(int j=m;j>=c*b;j--)
{
dp[j]=max(dp[j],dp[j-c*b]+c*a);
}
}
return;
}
int main()
{
int a,b;
int map[11][11];
char s[1005];
while(~scanf("%d %d",&n,&m))//记得加~或者EOF 不然你怎么优化都是超时
{
memset(map,0,sizeof(map));
memset(dp,0,sizeof(dp));
cnt=0;
for(int i=0;i<n;i++)
{
scanf("%s %d %d",&s,&a,&b);
getchar();
map[a][b]++;
}
for(int i=1;i<11;i++)
{
for(int j=1;j<11;j++)
{
if(map[i][j]>0)
{
int k=1;
int c=map[i][j];
for(k=1;k<=c;k<<=1)
{
/*v[cnt]=k*a;
w[cnt++]=k*b;*/
for(int s=m;s>=k*j;s--)
{
dp[s]=max(dp[s],dp[s-k*j]+k*i);
}
c-=k;
}
if(c>0)
{
/*v[cnt]=k*a;
w[cnt++]=k*b;*/
for(int s=m;s>=c*j;s--)
{
dp[s]=max(dp[s],dp[s-c*j]+c*i);
}
}
}
}
}
/*for(int i=0;i<cnt;i++)
{
for(int j=m;j>=w[i];j--)
{
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}*/
printf("%d\n",dp[m]);
}
return 0;
}
dp之多重背包(二进制优化)的更多相关文章
- hdu1059 dp(多重背包二进制优化)
hdu1059 题意,现在有价值为1.2.3.4.5.6的石头若干块,块数已知,问能否将这些石头分成两堆,且两堆价值相等. 很显然,愚蠢的我一开始并想不到什么多重背包二进制优化```因为我连听都没有听 ...
- HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)
HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化) 题意分析 先把每种硬币按照二进制拆分好,然后做01背包即可.需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数 ...
- HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化)
HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化) 题意分析 给出一系列的石头的数量,然后问石头能否被平分成为价值相等的2份.首先可以确定的是如果石头的价值总和为奇数的话,那 ...
- HDOJ(HDU).2191. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 (DP 多重背包+二进制优化)
HDOJ(HDU).2191. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 (DP 多重背包+二进制优化) 题意分析 首先C表示测试数据的组数,然后给出经费的金额和大米的种类.接着是每袋大米的 ...
- BZOJ.3425.[POI2013]Polarization(DP 多重背包 二进制优化)
BZOJ 洛谷 最小可到达点对数自然是把一条路径上的边不断反向,也就是黑白染色后都由黑点指向白点.这样答案就是\(n-1\). 最大可到达点对数,容易想到找一个点\(a\),然后将其子树分为两部分\( ...
- hdu 2191 (多重背包+二进制优化)
Problem Description 急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品, ...
- Coins(多重背包+二进制优化)
Problem Description Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. On ...
- Cash Machine POJ - 1276 多重背包二进制优化
题意:多重背包模型 n种物品 每个m个 问背包容量下最多拿多少 这里要用二进制优化不然会超时 #include<iostream> #include<cstdio> #in ...
- HDU 5445 Food Problem(多重背包+二进制优化)
http://acm.hdu.edu.cn/showproblem.php?pid=5445 题意:现在你要为运动会提供食物,总共需要提供P能量的食物,现在有n种食物,每种食物能提供 t 能量,体积为 ...
- POJ-1276 Cash Machine 多重背包 二进制优化
题目链接:https://cn.vjudge.net/problem/POJ-1276 题意 懒得写了自己去看好了,困了赶紧写完这个回宿舍睡觉,明早还要考试. 思路 多重背包的二进制优化. 思路是将n ...
随机推荐
- affe(8) solver 优化方法
上文提到,到目前为止,caffe总共提供了六种优化方法: Stochastic Gradient Descent (type: "SGD"), AdaDelta (type: &q ...
- NodeJS学习笔记 (17)集群-cluster(ok)
cluster模块概览 node实例是单线程作业的.在服务端编程中,通常会创建多个node实例来处理客户端的请求,以此提升系统的吞吐率.对这样多个node实例,我们称之为cluster(集群). 借助 ...
- luogu-1908 逆序对 离散化+树状数组
题目链接:https://www.luogu.org/problem/show?pid=P1908 题意 简单的求逆序对 思路 用树状数组来做逆序对 对于过大的数字来讲,用离散化处理即可 比赛的时候没 ...
- 紫书 例题 10-22 UVa 1640(数位统计)
这道题的题解有几个亮点 一个是每次只统计一个数字来简化思维 一个是统计当前位数的时候分三个部分来更新答案 具体看代码,有注释 #include<cstdio> #include<cs ...
- 二 MapReduce 各阶段流程分析
如果想要将问题变得清晰.精准和优雅, 需要关注 MapReduce 作业所需要的系统资源,尤其是集群内部网络资源使用情况. MR 可以运行在共享集群上处理 TB 级 甚至 PB 级的数据.同时,改作业 ...
- Oracle运行set autotrace on报错SP2-0618、SP2-0611
SQL> set autotrace on SP2-0618: 无法找到会话标识符.启用检查 PLUSTRACE 角色 SP2-0611: 启用 STATISTICS 报告时出错 原因: PLU ...
- ArcGIS api for javascript——地理处理任务-瓶中信
描述 如果在海洋中丢下一个瓶子,本例使用颗粒追踪模型显示指定的天数后瓶子在的地方.首先,输入一个追踪瓶子的天数.然后单击按钮并在海洋里的任意地方画一个点来开始模型.几秒以后将看到一条线出现描述瓶子将去 ...
- linux设备驱动归纳总结(三):4.ioctl的实现
linux设备驱动归纳总结(三):4.ioctl的实现 一.ioctl的简单介绍: 尽管在文件操作结构体"struct file_operations"中有非常多相应的设备操作函数 ...
- vue20 父子组件数据交互
子组件使用父组件数据 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 10.ng-class-even与ng-class-odd
转自:https://www.cnblogs.com/best/tag/Angular/ AngularJS模板使你可以把该作用域内的数据直接绑定到所显示的HTML元素 ng-class-even与n ...