[POJ2184] Cow Exhibition
题意:有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相关推荐
- POJ2184 Cow Exhibition(DP:变种01背包)
题意: 一群奶牛分别有s和f两个值,要求选出一些奶牛使s与f的和最大并且s和f分别的和不能为负数. 要点: 用dp[i]=j表示当s的和为i时f的和为j,这样最后只要求dp[i]+i的最大值即可.注意 ...
- POJ 2184 Cow Exhibition
01背包.把一个属性当成费用,另一个属性当成价值.费用可能为负数,处理的时候加上100000就可以了. #include<cstdio> #include<cstring> # ...
- 暑假N天乐 —— 01背包及变形
暑假集训的第一天 第二天了. 决定还是先把基础巩固一下好了,万一后面训练赛出事故更尴尬. 所以今天的主题是 -- 01背包及变形 动态规划概念 动态规划(Dynamic programming,DP) ...
- 《挑战程序设计竞赛(第2版)》习题册攻略
本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...
- 【转】别人整理的DP大全
为什么80%的码农都做不了架构师?>>> 动态规划 动态规划 容易: 1018 , 1050 , 1083 , 1088 , 1125 , 1143 , 1157 , 1163 ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
- 《挑战程序设计竞赛》--初级篇习题POJ部分【动态规划】
关于基本的动态规划和经典的动态规划,在之前已经总结过了,可以温习一下: 传送门 这次是延续上次的<挑战程序设计竞赛>初级篇,总结部分poj上的练习题,主要是DP方面的练习题: 一.基础的动 ...
- 洛谷--橙色百道DP总结
最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...
- NOIP 好题推荐(DP+搜索+图论)POJ ZOJ
NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS) 1090 Chain ->格雷码和二进制码 ...
最新文章
- python错误和异常处理怎处理你知道么
- submit提交判断
- Python中使用ElementTree解析xml
- 容器技术Docker云计算实战 镜像操作大总结
- 【NLP】四万字全面详解 | 深度学习中的注意力机制(四,完结篇)
- java实现条形图,JavaFX条形图
- 2019年春季学期第九周作业
- 如何确定电脑主板坏了_原阳县地暖漏水如何检测
- win7系统网络计算机,Win7系统打开局域网没看到其他计算机的修复方法
- 凸二次规划的解法(x取值具有上确界)
- python分行政区域汇总_python:编写行政区域三级菜单(day 1)
- 智鼎在线测评是测什么_人才测评工具和人才测评方法
- lottie-动画转代码神器
- AudioToolbox使用方法总结
- 使用hexo基于cactus仙人掌主题最全美化客制教程
- 100/1000BASE-T1多端口测试方案
- 查看mysql是否区分大小写
- java实验2总结心得,java实验的心得体会
- 【CXY】JAVA基础 之 System
- 在计算机英语中memory,memory是什么 memory什么意思