希望Total Smart和Totol Funess都尽量大,两者之间的关系是鱼和熊掌。这种矛盾和背包的容量和价值相似。

dp[第i只牛][j = 当前TotS] = 最大的TotF。

dp[i][j] = max(dp[i-1][j-s[i]])。

滚动数组根据j-s[i]和j大小关系决定递推顺序。

中间的j或者TF都可以为负,把j都加上下界的绝对值bound变成正数,最后再减掉就好。

对于s[i]和f[i]取值特殊的可以直接贪心

(1e8跑起来并不虚

#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<queue>
#include<vector>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<algorithm>
//#include<bits/stdc++.h>
using namespace std; const int maxn = 1e3+, maxs = 2e5, bound = 1e5;
int s[maxn], f[maxn];
int dp[maxs+]; //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int n, c = ; cin>>n;
int TS = , TF = ;
for(int i = n; i--;){
scanf("%d%d",s+c,f+c);
if(s[c]> && f[c]>){
TS += s[c];
TF += f[c];
continue;
}
if(s[c]<= && f[c] <=) continue;
c++;
}
memset(dp,0xc0,sizeof(dp));
dp[bound] = ;
for(int i = c; i--;){
if(s[i]>){
for(int j = maxs; j >= s[i]; j--){
dp[j] = max(dp[j],dp[j-s[i]] + f[i]);
}
}
else {
for(int j = ; j-s[i] <= maxs; j++){
dp[j] = max(dp[j],dp[j-s[i]] + f[i]);
}
}
}
int ans = bound;
for(int i = bound; i <= maxs; i++){
if(dp[i]+TF>=) ans = max(i+dp[i],ans);
}
printf("%d\n",ans-bound+TS+TF);
return ;
}

最新文章

  1. C++:为什么说 goto 没有用
  2. SQL,根据不同条件拼接不同SQL,非if拼接 改为SQL where形式
  3. FFMpeg 滤镜中英文对照
  4. JS几种数组遍历方式以及性能分析对比
  5. Java中final、finally、finalize的区别
  6. O(1)时间删除链表节点
  7. ENode框架初始化
  8. 【codevs 1911 孤岛营救问题】
  9. batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
  10. v-charts 和 websocket实现数据展示动态推送
  11. 升级到 Android Studio 3.0 + Gradle 4.1 遇到的一些坑及解决方案
  12. 2013年蓝桥杯省赛C/C++A组真题解析
  13. zzw原创_非root用户启动apache的问题解决(非root用户启动apache的1024以下端口)
  14. spring源码学习1
  15. C++ for循环与迭代器
  16. 手动安裝TMG2010所需Windows服务和功能
  17. mongo长连接
  18. Oracle学习笔记:decode函数
  19. Effective C++ —— 继承与面向对象设计(六)
  20. 【单调队列】【P3957】 跳房子

热门文章

  1. ARC085E(最小割规划【最大流】,Dinic当前弧优化)
  2. CodeForces 118C 【模拟】
  3. MongoDB的安装避坑(踩坑)
  4. GoWeb开发_Iris框架讲解(三):路由功能处理方式
  5. ASP.NET对象
  6. AT2301 Solitaire
  7. PAT甲级——1101 Quick Sort (快速排序)
  8. 使用JMeter进行API功能测试
  9. BZOJ 4165 矩阵 堆
  10. javascript 返回上一页面:onclick=&quot;javascript:history.back(-1);&quot;