题意:有n头牛,每头牛两个元素(s,t),选择若干头牛使∑s+∑t最大,且∑s、∑t非负

题解:

dp(带决策条件的状态)

状态:dp[j]表示s和为j时,t和的最大值

转移:dp[j+s[i]]=max{dp[j]+t[i]} (j>=0)

这样是不行的,因为s[i]会被重复转移,所以要把当前被转移的答案存到另一个数组里

tmp[j+s[i]]=max{dp[j]+t[i]}

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;int dp[100010],tmp[100010];struct Node {int s,t;bool operator < (Node x) const {return s>x.s;}
}p[110];int gi() {int x=0,o=1; char ch=getchar();while(ch!='-' && (ch<'0' || ch>'9')) ch=getchar();if(ch=='-') o=-1,ch=getchar();while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return o*x;
}int main() {int n=gi(),S=n*1000,ans=0,inf;for(int i=1; i<=n; i++) {p[i].s=gi(),p[i].t=gi();}sort(p+1,p+n+1);memset(dp,-63,sizeof(dp));inf=dp[0],dp[0]=0;for(int i=1; i<=n; i++) {for(int j=0; j<=S; j++) tmp[j]=dp[j];for(int j=S; j>=0; j--) {if(dp[j]==inf) continue;if(j+p[i].s>=0) {tmp[j+p[i].s]=max(dp[j+p[i].s],dp[j]+p[i].t);}}for(int j=0; j<=S; j++) dp[j]=tmp[j];}for(int i=0; i<=S; i++) {if(dp[i]<0) continue;ans=max(ans,dp[i]+i);}printf("%d", ans);return 0;
}

转载于:https://www.cnblogs.com/HLXZZ/p/7510520.html

[POJ2184] Cow Exhibition相关推荐

  1. POJ2184 Cow Exhibition(DP:变种01背包)

    题意: 一群奶牛分别有s和f两个值,要求选出一些奶牛使s与f的和最大并且s和f分别的和不能为负数. 要点: 用dp[i]=j表示当s的和为i时f的和为j,这样最后只要求dp[i]+i的最大值即可.注意 ...

  2. POJ 2184 Cow Exhibition

    01背包.把一个属性当成费用,另一个属性当成价值.费用可能为负数,处理的时候加上100000就可以了. #include<cstdio> #include<cstring> # ...

  3. 暑假N天乐 —— 01背包及变形

    暑假集训的第一天 第二天了. 决定还是先把基础巩固一下好了,万一后面训练赛出事故更尴尬. 所以今天的主题是 -- 01背包及变形 动态规划概念 动态规划(Dynamic programming,DP) ...

  4. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  5. 【转】别人整理的DP大全

    为什么80%的码农都做不了架构师?>>>    动态规划 动态规划 容易: 1018 , 1050 , 1083 , 1088 , 1125 , 1143 , 1157 , 1163 ...

  6. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  7. 《挑战程序设计竞赛》--初级篇习题POJ部分【动态规划】

    关于基本的动态规划和经典的动态规划,在之前已经总结过了,可以温习一下: 传送门 这次是延续上次的<挑战程序设计竞赛>初级篇,总结部分poj上的练习题,主要是DP方面的练习题: 一.基础的动 ...

  8. 洛谷--橙色百道DP总结

    最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...

  9. NOIP 好题推荐(DP+搜索+图论)POJ ZOJ

    NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS)  1090 Chain ->格雷码和二进制码 ...

最新文章

  1. python错误和异常处理怎处理你知道么
  2. submit提交判断
  3. Python中使用ElementTree解析xml
  4. 容器技术Docker云计算实战 镜像操作大总结
  5. 【NLP】四万字全面详解 | 深度学习中的注意力机制(四,完结篇)
  6. java实现条形图,JavaFX条形图
  7. 2019年春季学期第九周作业
  8. 如何确定电脑主板坏了_原阳县地暖漏水如何检测
  9. win7系统网络计算机,Win7系统打开局域网没看到其他计算机的修复方法
  10. 凸二次规划的解法(x取值具有上确界)
  11. python分行政区域汇总_python:编写行政区域三级菜单(day 1)
  12. 智鼎在线测评是测什么_人才测评工具和人才测评方法
  13. lottie-动画转代码神器
  14. AudioToolbox使用方法总结
  15. 使用hexo基于cactus仙人掌主题最全美化客制教程
  16. 100/1000BASE-T1多端口测试方案
  17. 查看mysql是否区分大小写
  18. java实验2总结心得,java实验的心得体会
  19. 【CXY】JAVA基础 之 System
  20. 在计算机英语中memory,memory是什么 memory什么意思

热门文章

  1. VB 长整型和字节数组的转换问题 (LongByte)
  2. Jenkins系统上的时间不正确问题
  3. 在LNMP或Nginx上配置NameCheap免费SSL证书
  4. Jenkins拾遗--第三篇(用户权限管理)
  5. 《转》IIS中配置通配符应用程序映射
  6. windows phone7 学习笔记15——Bing Maps
  7. How Browser Works
  8. 产品经理跳槽面试大揭秘……
  9. 产品经理如何让问题迎刃而解|PMCAFF工具圈第12期分享整理
  10. 【pmcaff】重磅干货,必读的扁平化设计技巧