POJ2184Cow Exhibition (01背包变形)
思路一下子就想到了,转移方程却没想好,看到网上一个的思路相同的代码,改的转移方程。
同时dp全部初始化为负无穷,需要注意一下。
AC代码如下:
/**************************************************
Memory: 1884 KB Time: 250 MS
Language: G++ Result: Accepted
**************************************************/
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; /**
题目描述:
n头牛(1-n),每个牛有两个值Si和Fi,选其中任意头,使s和f的和最大,其中s和f各自和都不能为负数
*/ int s[105], f[105];
int dp[200005];
int num[200005];
const int INF = 0x5f5f5f5f; int main()
{
int n;
while (cin >> n)
{
int m = 0; for (int i = 0; i < n; ++i)
{
cin >> s[i] >> f[i];
s[i] += 1000; // 全部加上1000保证非负
m += s[i];
} for (int i = 0; i <= m; ++i) dp[i] = -INF;
memset(num, 0, sizeof num);
dp[0] = 0; // 保证所有dp的值都是正好装满。。 for (int i = 0; i < n; ++i)
{
for (int j = m; j >= s[i]; --j)
{
//if (dp[j] < dp[j - s[i]] + f[i])
if (dp[j] - num[j] * 1000 < dp[j - s[i]] + f[i] - (num[j - s[i]] + 1) * 1000)
{ // 这转移方程我也是醉了。。保证的是s和为j时s和f的和最大
dp[j] = dp[j - s[i]] + f[i];
num[j] = num[j - s[i]] + 1; // 记录用了多少头牛。。
}
//printf("dp[%d]=%d, num[%d]=%d\n", j, dp[j],j, num[j]);
}
} int ans = 0; for (int j = 0; j <= m; ++j)
{
if (dp[j] >= 0 && j - num[j] * 1000 >= 0)
ans = max(ans, dp[j] + j - num[j] * 1000);
} cout << ans << endl;
}
return 0;
}
POJ2184Cow Exhibition (01背包变形)的更多相关文章
- [POJ 2184]--Cow Exhibition(0-1背包变形)
题目链接:http://poj.org/problem?id=2184 Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total S ...
- POJ-2184 Cow Exhibition(01背包变形)
Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10949 Accepted: 4344 Descr ...
- POJ 2184 Cow Exhibition (01背包变形)(或者搜索)
Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10342 Accepted: 4048 D ...
- FZU 2214 Knapsack problem 01背包变形
题目链接:Knapsack problem 大意:给出T组测试数据,每组给出n个物品和最大容量w.然后依次给出n个物品的价值和体积. 问,最多能盛的物品价值和是多少? 思路:01背包变形,因为w太大, ...
- codeforce Gym 101102A Coins (01背包变形)
01背包变形,注意dp过程的时候就需要取膜,否则会出错. 代码如下: #include<iostream> #include<cstdio> #include<cstri ...
- HDU 2639 Bone Collector II(01背包变形【第K大最优解】)
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 【01背包变形】Robberies HDU 2955
http://acm.hdu.edu.cn/showproblem.php?pid=2955 [题意] 有一个强盗要去几个银行偷盗,他既想多抢点钱,又想尽量不被抓到.已知各个银行 的金钱数和被抓的概率 ...
- CF#214 C. Dima and Salad 01背包变形
C. Dima and Salad 题意 有n种水果,第i个水果有一个美味度ai和能量值bi,现在要选择部分水果做沙拉,假如此时选择了m个水果,要保证\(\frac{\sum_{i=1}^ma_i}{ ...
- (01背包变形) Cow Exhibition (poj 2184)
http://poj.org/problem?id=2184 Description "Fat and docile, big and dumb, they look so stupid ...
- poj 2184 Cow Exhibition(dp之01背包变形)
Description "Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - ...
随机推荐
- HDFS文件读写流程 (转)
文件读取的过程如下: 使用HDFS提供的客户端开发库Client,向远程的Namenode发起RPC请求: Namenode会视情况返回文件的部分或者全部block列表,对于每个block,Namen ...
- OpenFileDialog组件打开文件....待续
1.常用属性 InitialDirectory 对话框的初始目录 this.openFileDialog1.InitialDirectory = "d:\\"; ...
- MVC 4 网页版发送 邮件的配置问题
有时项目要用到邮箱验证就要发送邮件传统的解决方案: public void SendResetPasswordEmail(string email) { MailAddress from = new ...
- AJAX技术的核心
//创建一个XMLHttpRequest对象 ,利用此对象与服务器进行通信 是AJAX技术的核心 /** * 获取XmlHttpRequest对象 */ function getXMLHttpRequ ...
- iOS8的一些控件的变更---备用
UISearchDisplayController变更为UISearchController UIAlertView变更为UIAlertController 如果添加点击事件则需要使用UIAlertC ...
- tomcat session思考
最近在做统计服务器在线人数时,按照当前服务器session数量来实现,具体方法:实现HttpSessionListener接口来,每次sessionCreate的时候增加1,sessionDestro ...
- chkconfig用法
有时候为了方便管理,我们常常喜欢在Linux中将之安装为服务,然后就可以使用服务来管理. 但是当我们运行安装服务的命令时候,假设服务名为myservice #chkconfig --add myser ...
- static和const
转自说出static和const关键字尽可能多的作用 static关键字至少有下列n个作用: 函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次 ...
- hdu 4878 ZCC loves words AC自动机+中国剩余定理+快速幂
题意就不说了. 分析:折腾好几天自己写的代码还是看了别人代码后发现几乎没什么复杂度的差别,可是就是一直超时,后来干脆照着别人写啊,一直WA,就在准备放弃干脆先写这篇博客的时候,又看了一眼WA的代码,发 ...
- Win2003部署Framework 4.5框架的MVC4项目
[一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/4554672.html] Win2003中IIS6部署Framework 4.5框架的MVC4 ...