[USACO]奶牛会展

题目背景

奶牛想证明它们是聪明而风趣的。为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行

了面试,确定了每头奶牛的智商和情商。

题目描述

贝西有权选择让哪些奶牛参加展览。由于负的智商或情商会造成负面效果,所以贝西不希望出展奶牛的智商之和小于零,或情商之和小于零。满足这两个条件下,她希望出展奶牛的智商与情商之和越大越好,请帮助贝西求出这个最大值。

输入输出格式

输入格式:

• 第一行:单个整数N,1 ≤ N ≤ 400

• 第二行到第N + 1 行:第i + 1 行有两个整数:Si 和Fi,表示第i 头奶牛的智商和情商,−1000 ≤ Si; Fi ≤ 1000

输出格式:

输出格式

• 单个整数:表示情商与智商和的最大值。贝西可以不让任何奶牛参加展览,如果这样做是最好的,输出0

输入输出样例

输入样例#1:

5

-5 7

8 -6

6 -3

2 1

-8 -5

输出样例#1:

8

说明

选择第一头,第三头,第四头奶牛,智商和为−5+6+2 = 3,情商和为7−3+1 = 5。再加

入第二号奶牛可使总和提升到10,不过由于情商和变成负的了,所以是不允许的

被绿题支配的恐惧??? 最开始看到题目是懵逼的,之后看了题解才明白。将智商和情商分别看作容量和价值来做01背包。

\(F[i]\)表示当智商总和为\(i\)时,情商的最大值。

\[F[i]=max(F[i-a[k]]+b[k])
\]

但是有一点我们需要注意,在状态转移的过程中,智商和情商是允许为负数的,所以我们为了考虑到这种情况,将智商往右移\(sa\)个单位。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int read()
{
int x=0,w=1;char ch=getchar();
while(ch>'9'||ch<'0') {if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*w;
}
int dp[800010],a[410],b[410];
int main()
{
int sa=0,ans=0;
int n=read();
for(int i=1;i<=n;i++)
{
a[i]=read();b[i]=read();
if(a[i]>0) sa+=a[i];
}
sa=sa*2;
memset(dp,-0x3f,sizeof(dp));
dp[sa/2]=0;
for(int i=1;i<=n;i++)
{
if(a[i]>=0)
for(int j=sa;j>=a[i];j--)
{
dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
}
else
for(int j=0;j<=sa-a[i];j++)
{
dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
}
}
sa/=2;
for(int i=0;i<=sa;i++)
{
if(dp[i+sa]>=0)//这句判断一定不能忘记了
ans=max(ans,i+dp[i+sa]);
}
cout<<ans;
}

最新文章

  1. WebApi跨域问题
  2. combobox实现模糊查询自动填充
  3. 学习大神笔记之“MyBatis学习总结(三)”
  4. 图论 ---- spfa + 链式向前星 ---- poj 3268 : Silver Cow Party
  5. JBOSS通过Apache负载均衡方法二:使用mod_cluster
  6. 自定义右键菜单,禁用浏览器自带的右键菜单[右键菜单实现--Demo]
  7. delphi 实现vip126发邮件
  8. ecshop3.0.0注入
  9. Android笔试题三
  10. RedHat如何关闭防火墙
  11. 把图片上的文字转换成word文字?
  12. Hbase 学习(七) rowkey设计
  13. e768. 创建单选按钮
  14. [转]仿91助手的PC与android手机通讯
  15. pycaffe编译
  16. Egret 菜鸟级使用手册
  17. windows下thrift的使用(C++)
  18. 使用C#创建及调用WCF完整实例 (Windows服务宿主)
  19. DNS BIND之rndc介绍及使用
  20. 关于linux的一些基础知识

热门文章

  1. APIO2019解题报告
  2. [CSP-S模拟测试]:简单的序列(DP)
  3. 基于自定义的动态数组实现一个栈(Java语言)
  4. Cannot refer to the non-final local variable user defined in an enclosing scope
  5. 阿里云DNS api接口 shell 更改DNS解析
  6. c# Thread5——线程同步之基本原子操作。Mutex互斥量的使用
  7. Learn Python the hard way, ex41 来自Percal 25 号星星的哥顿人
  8. LeetCode 94. Binary Tree Inorder Traversal 动态演示
  9. 疯狂Java学习
  10. Hand on Machine Learning 第二章:端到端的机器学习