传送门
蒟蒻净做些水题还请大佬见谅
没错这又是个一眼的分组背包。
题意简述:有n棵树,每只树上有aia_iai​只鸟,第iii棵树买一只鸟要花cic_ici​的钱,每买一只鸟可以奖励bbb块钱,从一棵树移动到下一棵树可以奖励xxx块钱,最初有www块钱,求买下的鸟的数量的最大值。


由于钱数很大,考虑按照选择的鸟的方案数来进行dpdpdp。
我们定义状态fi,jf_{i,j}fi,j​表示走过前iii棵树买下来jjj只鸟的剩下钱数的最大值。
最后看使得fn,jf_{n,j}fn,j​合法的jjj的最大值即可。
转移很简单:fi,j=max{fi−1,k−ci∗(j−k)+b∗(j−k)}f_{i,j}=max\{f_{i-1,k}-c_i*(j-k)+b*(j-k)\}fi,j​=max{fi−1,k​−ci​∗(j−k)+b∗(j−k)}
代码:

#include<bits/stdc++.h>
#define ri register int
using namespace std;
inline int read(){int ans=0;char ch=getchar();while(!isdigit(ch))ch=getchar();while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();return ans;
}
typedef long long ll;
const int N=1e3+5,M=1e4+5;
int n,tmp=0,a[N],up=0;
ll c[N],f[2][M],w,b,x;
int main(){memset(f[tmp],-1,sizeof(f[tmp])),n=read(),f[tmp][0]=w=read(),b=read(),x=read();for(ri i=1;i<=n;++i)a[i]=read();for(ri i=1;i<=n;++i)c[i]=read();for(ri i=1;i<=n;++i){up+=a[i],tmp^=1,memset(f[tmp],-1,sizeof(f[tmp]));ll sum=w;for(ri j=0;j<=up;++j){for(ri k=0;k<=a[i]&&k<=j;++k){if(f[tmp^1][j-k]==-1||c[i]*k>f[tmp^1][j-k])continue;f[tmp][j]=max(f[tmp][j],f[tmp^1][j-k]-c[i]*k);}if(~f[tmp][j])f[tmp][j]=min(f[tmp][j]+x,sum);sum+=b;}}for(ri i=up;~i;--i)if(~f[tmp][i])return cout<<i,0;
}

转载于:https://www.cnblogs.com/ldxcaicai/p/10367832.html

2018.12.14 codeforces 922E. Birds(分组背包)相关推荐

  1. 2018.12.08 codeforces 946D. Timetable(背包)

    传送门 题意简述:有一个人上n天课,每天有m个小时的时间安排表(一个01串),为1表示要上课,否则不上课,求出如果可以最多翘kkk节课这nnn天在校待的总时间的最小值(一天必须在所有课上完后才能离开) ...

  2. 【2018.12.14】python3.7 一个低级趣味的爬虫(requests+pyquery)妹纸的图哇咔咔

    这是个低级趣味的爬虫 #!/practice/Study_Test python # -*- coding: utf-8 -*- # @Time : 2018/12/13 23:35 # @Autho ...

  3. 【一周头条盘点】中国软件网(2018.12.10~2018.12.14)

    每一个企业级应用的人都置顶了中国软件网 中国软件网为你带来最新鲜的行业干货 一周热点 青云QingCloud容器管理平台KubeSphere开启公测 近日,企业级全栈云ICT服务商青云QingClou ...

  4. 12.14补卡,多重背包二进制优化

    题目链接:22背包专题 [Cloned] - Virtual Judge (vjudge.net) 思路:多重背包的主要思路就是把每一个物品分开放,从而达到每个物品拿与不拿全部遍历到.但是当物品数量过 ...

  5. 2018.12.05 codeforces 948C. Producing Snow(堆)

    传送门 维护一个堆. 每次先算出一个都不弹掉的总贡献. 然后把要弹掉的弹掉,并减去它们对应的贡献. 代码: #include<bits/stdc++.h> #define ri regis ...

  6. 2018.12.08 codeforces 939E. Maximize!(二分答案)

    传送门 二分答案好题. 题意简述:要求支持动态在一个数列队尾加入一个新的数(保证数列单增),查询所有子数列的 最大值减平均值 的最大值. 然而网上一堆高人是用三分做的. 我们先考虑当前的答案有可能由什 ...

  7. 2018/12/14

    一.spring配置datasource 使用org.apache.commons.dbcp.BasicDataSource  说明:这是一种推荐说明的数据源配置方式,它真正使用了连接池技术  < ...

  8. Codeforces 922E Birds

    题意:有一排nnn棵树,每棵树木上有ci" role="presentation">cicic_i只鸟,每次从一棵树上召唤一只鸟要消耗costicosticost_ ...

  9. 分组背包----HDU1712 ACboy needs your help

    很简单的一道分组背包入门问题.不多解释了. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring&g ...

最新文章

  1. formValidator BUG
  2. 技术:常见视频会议网络线路介绍
  3. 移动硬盘格式化了的资料找回方法
  4. MongoDB:GridFS删除方法删除存储桶中的所有文件
  5. 【LeetCode笔记】53. 最大子序和(Java、动态规划)
  6. 解决mac上每次升级nodejs都要重新安装扩展包的问题
  7. 全国计算机等级内容,全国计算机等级内容
  8. buffer pool mysql_理解Mysql中的Buffer pool
  9. Atitit 面试技术点最小化问题法总结 目录 1. Web 前端 1 1.1. Jq 常用操作哪些?? 1 1.2. 查询后如何绑定后端数据到表格 2 1.3. 提交后怎么接受表单数据 2 2.
  10. 华为路由GRE隧道搭建
  11. 【笔记本触摸板失灵】终极解决办法
  12. java实现获取当前日期、农历、周
  13. C语言学习笔记-各项为正整数的一元二次方程的十字交叉法因式分解
  14. psycopg2 : cursor already closed
  15. 专利检索常用的十八个网站
  16. Android7.0 拨号盘应用源码分析(一) 界面浅析
  17. 矩阵特征值和特征向量的求取
  18. 婴幼儿体重在线计算机,【婴儿体重计算器标准_婴儿体重计算器标准专题】- 天鹅到家...
  19. 在Keil MDK编译环境下使用UEstudio编写程序
  20. leaflet实现动态地图风场效果

热门文章

  1. Caused by: org.gradle.api.tasks.StopExecutionException: Your project path contains non-ASCII charact
  2. linux内核head.S分析
  3. 计算机视觉安推商汤科技经典,商汤科技人脸实战应用亮相安博会 推动平安城市建设...
  4. 量子计算机出错,最近特别火的“量子计算机”,出BUG了该怎么Debug?
  5. BUUCTF刷题记录 Ping Ping Ping
  6. 数据库原理概论Ⅱ-SQL
  7. 虹科案例 | 激光测距仪在高温金属冶炼中的应用
  8. 遗传算法(二)之组卷算法
  9. ubuntu16.04 更新软件源 操作步骤
  10. python: partical function 偏函数