2018.12.14 codeforces 922E. Birds(分组背包)
传送门
蒟蒻净做些水题还请大佬见谅
没错这又是个一眼的分组背包。
题意简述:有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(分组背包)相关推荐
- 2018.12.08 codeforces 946D. Timetable(背包)
传送门 题意简述:有一个人上n天课,每天有m个小时的时间安排表(一个01串),为1表示要上课,否则不上课,求出如果可以最多翘kkk节课这nnn天在校待的总时间的最小值(一天必须在所有课上完后才能离开) ...
- 【2018.12.14】python3.7 一个低级趣味的爬虫(requests+pyquery)妹纸的图哇咔咔
这是个低级趣味的爬虫 #!/practice/Study_Test python # -*- coding: utf-8 -*- # @Time : 2018/12/13 23:35 # @Autho ...
- 【一周头条盘点】中国软件网(2018.12.10~2018.12.14)
每一个企业级应用的人都置顶了中国软件网 中国软件网为你带来最新鲜的行业干货 一周热点 青云QingCloud容器管理平台KubeSphere开启公测 近日,企业级全栈云ICT服务商青云QingClou ...
- 12.14补卡,多重背包二进制优化
题目链接:22背包专题 [Cloned] - Virtual Judge (vjudge.net) 思路:多重背包的主要思路就是把每一个物品分开放,从而达到每个物品拿与不拿全部遍历到.但是当物品数量过 ...
- 2018.12.05 codeforces 948C. Producing Snow(堆)
传送门 维护一个堆. 每次先算出一个都不弹掉的总贡献. 然后把要弹掉的弹掉,并减去它们对应的贡献. 代码: #include<bits/stdc++.h> #define ri regis ...
- 2018.12.08 codeforces 939E. Maximize!(二分答案)
传送门 二分答案好题. 题意简述:要求支持动态在一个数列队尾加入一个新的数(保证数列单增),查询所有子数列的 最大值减平均值 的最大值. 然而网上一堆高人是用三分做的. 我们先考虑当前的答案有可能由什 ...
- 2018/12/14
一.spring配置datasource 使用org.apache.commons.dbcp.BasicDataSource 说明:这是一种推荐说明的数据源配置方式,它真正使用了连接池技术 < ...
- Codeforces 922E Birds
题意:有一排nnn棵树,每棵树木上有ci" role="presentation">cicic_i只鸟,每次从一棵树上召唤一只鸟要消耗costicosticost_ ...
- 分组背包----HDU1712 ACboy needs your help
很简单的一道分组背包入门问题.不多解释了. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring&g ...
最新文章
- formValidator BUG
- 技术:常见视频会议网络线路介绍
- 移动硬盘格式化了的资料找回方法
- MongoDB:GridFS删除方法删除存储桶中的所有文件
- 【LeetCode笔记】53. 最大子序和(Java、动态规划)
- 解决mac上每次升级nodejs都要重新安装扩展包的问题
- 全国计算机等级内容,全国计算机等级内容
- buffer pool mysql_理解Mysql中的Buffer pool
- Atitit 面试技术点最小化问题法总结 目录 1. Web 前端	1 1.1. Jq 常用操作哪些??	1 1.2. 查询后如何绑定后端数据到表格	2 1.3. 提交后怎么接受表单数据	2 2.
- 华为路由GRE隧道搭建
- 【笔记本触摸板失灵】终极解决办法
- java实现获取当前日期、农历、周
- C语言学习笔记-各项为正整数的一元二次方程的十字交叉法因式分解
- psycopg2 : cursor already closed
- 专利检索常用的十八个网站
- Android7.0 拨号盘应用源码分析(一) 界面浅析
- 矩阵特征值和特征向量的求取
- 婴幼儿体重在线计算机,【婴儿体重计算器标准_婴儿体重计算器标准专题】- 天鹅到家...
- 在Keil MDK编译环境下使用UEstudio编写程序
- leaflet实现动态地图风场效果
热门文章
- Caused by: org.gradle.api.tasks.StopExecutionException: Your project path contains non-ASCII charact
- linux内核head.S分析
- 计算机视觉安推商汤科技经典,商汤科技人脸实战应用亮相安博会 推动平安城市建设...
- 量子计算机出错,最近特别火的“量子计算机”,出BUG了该怎么Debug?
- BUUCTF刷题记录 Ping Ping Ping
- 数据库原理概论Ⅱ-SQL
- 虹科案例 | 激光测距仪在高温金属冶炼中的应用
- 遗传算法(二)之组卷算法
- ubuntu16.04 更新软件源 操作步骤
- python: partical function 偏函数