POJ 2184(01背包)(负体积)
http://poj.org/problem?id=2184
http://blog.csdn.net/liuqiyao_01/article/details/8753686
对于负体积问题,可以先定义一个“零点”shift,将dp[shift]设为0,其他都设为-INF。
然后负体积从0往maxn+cost更新,正体积从maxn往shift更新。
最后从shift到maxn中找最大值,shift以下的值不会被遍历到
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <stack>
using namespace std; #define MEM(a,b) memset(a,b,sizeof(a))
#define pf printf
#define sf scanf
#define debug printf("!\n")
#define INF (0x3f3f3f3f)
#define MAX(a,b) a>b?a:b
#define blank pf("\n")
#define LL long long
#define ep 1e-6 const int shift = ;
const int MAXN = ;
const int MAXM = ; int dp[MAXN]; int ci[MAXM];//容量
int wi[MAXM];//价值
int n,V,i,j,v,t,sum;
double G; void zeroOnePack(int cost,int weight)
{
if(cost>=)
{
for(v = MAXN-;v>=cost;v--)
{
dp[v] =MAX(dp[v],dp[v-cost]+weight);
}
}
else
{
for(v = ;v<MAXN+cost;v++)
{
dp[v] =MAX(dp[v],dp[v-cost]+weight);
}
}
} int main()
{
while(sf("%d",&n)!=EOF)
{ MEM(dp,-INF);
MEM(wi,); for(i = ;i<n;i++)
{
sf("%d",&ci[i]);
sf("%d",&wi[i]);
} dp[shift] = ; for(i = ;i<n;i++)
{
zeroOnePack(ci[i],wi[i]);
} int ans = -INF; for(i = shift;i<MAXN;i++)
{
if(dp[i]>= && (i-shift+dp[i])>ans)
ans = i-shift+dp[i];
}
pf("%d\n",ans); }
return ;
}
/*
5
-5 7
8 -6
6 -3
2 1
-8 -5
*/
POJ 2184(01背包)(负体积)的更多相关文章
- poj 2184 01背包变形【背包dp】
POJ 2184 Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14657 Accepte ...
- POJ 2184 01背包+负数处理
Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10200 Accepted: 3977 D ...
- hdu 2184 01背包变形
转自:http://blog.csdn.net/liuqiyao_01/article/details/8753686 题意:这是又是一道01背包的变体,题目要求选出一些牛,使smartness和fu ...
- poj 1837 01背包
Balance Time Limit: 1000 MS Memory Limit: 30000 KB 64-bit integer IO format: %I64d , %I64u Java clas ...
- POJ 3628 01背包 OR 状压
思路: 1.01背包 先找到所有奶牛身高和与B的差. 然后做一次01背包即可 01背包的容积和价格就是奶牛们身高. 最后差值一减输出结果就大功告成啦! 2. 搜索 这思路很明了吧... 搜索的确可以过 ...
- Proud Merchants(POJ 3466 01背包+排序)
Proud Merchants Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) ...
- POJ 3624 01背包
初学DP,用贪心的思想想解题,可是想了一个多小时还是想不出. //在max中的两个参数f[k], 和f[k-weight[i]]+value[i]都是表示在背包容量为k时的最大价值 //f[k]是这个 ...
- POJ之01背包系列
poj3624 Charm Bracelet 模板题 没有要求填满,所以初始化为0就行 #include<cstdio> #include<iostream> using na ...
- HDU 2955_Robberies 小偷抢银行【01背包】
<题目链接> 题意: 先是给出几组数据,每组数据第一行是总被抓概率p(最后求得的总概率必须小于他,否则被抓),然后是想抢的银行数n.然后n行,每行分别是该银行能抢的钱数m[i]和被抓的概率 ...
- POJ-2184 Cow Exhibition(01背包变形)
Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10949 Accepted: 4344 Descr ...
随机推荐
- by python3-XSStrike 测试XSS
一.概述: XSStrike是一个Cross Site Scripting检测套件,配备四个手写解析器,一个智能有效载荷生成器,一个强大的模糊引擎和一个非常快速的爬虫. XSStrike不是像其他工具 ...
- Weblogic wls-wsat组件反序列化漏洞(CVE-2017-10271)
CVE编号: CVE-2017-10271 漏洞描述: Weblogic wls-wsat组件反序列化漏洞 利用脚本: https://github.com/hanc00l/weblogic_wls_ ...
- 编程开发之--java多线程学习总结(6)
5.测试 package com.lfy.ThreadsSynchronize; public class Test { public static void main(String[] args) ...
- 【性能测试】脚本开发,最普通的http协议脚本2
Action() { lr_start_transaction("FM0075基金购买"); web_submit_data("ehouse_ehGetPwdRandom ...
- spring定时任务详解
(一)在spring.xml里加入task的命名空间 xmlns:task="http://www.springframework.org/schema/task" http:// ...
- 剑指offer——面试题29:顺时针打印矩阵
#include"iostream" #include"stdio.h" using namespace std; void PrintMatrixInCirc ...
- Struts2方法调用的三种方式(有新的!调用方法的说明)
在Struts2中方法调用概括起来主要有三种形式 第一种方式:指定method属性 <action name="heroAction" class="com.ABC ...
- 将静态网页部署到git上访问
1.将已有的项目放在github上 http://www.cnblogs.com/zqunor/p/6583182.html 2.出现错误解决方案 提交错误 http://blog.csdn.net/ ...
- graphql pass arg
; ; var xhr = new XMLHttpRequest(); xhr.responseType = 'json'; xhr.open("POST", "http ...
- Java GC 垃圾回收算法 内存分配
垃圾回收(Garbage Collection, GC)是Java不同于c与c++的重要特性之一. 他帮助Java自动清空堆中不再使用的对象. 由于不需要手动释放内存,程序员在编程中也可以减少犯错的机 ...