Codeforces 922E Birds
题意:有一排nnn棵树,每棵树木上有ci" role="presentation">cicic_i只鸟,每次从一棵树上召唤一只鸟要消耗costicosticost_i魔力,同时,每召唤一只鸟,召唤鸟的魔力消耗都会增加BBB.一个人初始有W" role="presentation">WWW魔力,每到一颗新的树下,会获得XXX魔力,同时这个人只能从左往右走。问最多召唤鸟的数目
思路:动态规划,设定状态dp[i][j]" role="presentation">dp[i][j]dp[i][j]dp[i][j]表示在第iii棵树下,已经召唤j" role="presentation">jjj只鸟所需要消耗最少的魔力。状态转移即可
#include<bits/stdc++.h>using namespace std;
typedef long long ll;
const ll MOD = 1e9 + 7;
const ll MAXN = 1e5;ll dp[2][MAXN];
ll cst[MAXN];
ll bird[MAXN];
int n;
ll w,b,x;
int up=0;int main()
{ios::sync_with_stdio(false);while(cin>>n>>w>>b>>x){up=0;for(int i=0;i<n;i++){cin>>bird[i];up+=bird[i];}for(int i=0;i<n;i++)cin>>cst[i];memset(dp,-1,sizeof dp);int p=0;dp[p][0]=w;for(int i=0;i<n;i++){// cout<<bird[i]<<endl;// cout<<up<<endl;for(int j=0;j<=up;j++){// cout<<"ff"<<endl;if(dp[p][j]==-1)continue;for(int k=0;k<=bird[i];k++){if(k*cst[i]>dp[p][j])break;if(dp[p^1][k+j]==-1)dp[p^1][k+j]=min(dp[p][j]-k*cst[i]+x,w+(k+j)*b);else dp[p^1][k+j]=max(dp[p^1][j+k],min(dp[p][j]-k*cst[i]+x,w+(k+j)*b));}}p^=1;// cout<<p<<endl;}int ans=0;for(int i=0;i<=up;i++)if(dp[p][i]!=-1)ans=i;cout<<ans<<endl;}
}
Codeforces 922E Birds相关推荐
- 2018.12.14 codeforces 922E. Birds(分组背包)
传送门 蒟蒻净做些水题还请大佬见谅 没错这又是个一眼的分组背包. 题意简述:有n棵树,每只树上有aia_iai只鸟,第iii棵树买一只鸟要花cic_ici的钱,每买一只鸟可以奖励bbb块钱,从一棵 ...
- codeforces 922E
题解: 能量值域很大,不好作为状态 因此我们可以将召唤的鸟的数目当作状态 这样我们可以轻松算出能量上限 W + j * B 然后我们现在是dp( i , j )表示到第 i 个树,召唤 j 个鸟的状态 ...
- Codeforces 题目合集+分类+代码 【Updating...】【361 in total】
961A - Tetris 模拟 ...
- Codeforces Problem 717C Potions Homework(排序)
此文章可以使用目录功能哟↑(点击上方[+]) 比赛链接→Bubble Cup 9 - Finals [Online Mirror] Codeforces Problem 717C Potions H ...
- CodeForces 375D Tree and Queries
传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...
- 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)
题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...
- 【codeforces 812C】Sagheer and Nubian Market
[题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...
- CodeForces 获得数据
针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...
- codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...
题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...
最新文章
- 【OpenCV 4开发详解】边缘检测原理
- bat自动输入密码登录_如何制作自动设置计算机管理员密码的脚本
- HttpServletrequest 与HttpServletResponse总结
- 华为云春节前夕遭连续偷袭!密谋3个月,专挑凌晨断网
- 使用memcache的session入库
- 微软开源 rDSN 分布式系统开发框架
- 在Google Cloud platform上创建Kubernetes cluster并使用
- Linux中使用crontab命令启用自定义定时任务
- 浅析 .Net Core中Json配置的自动更新
- mySQL数据库中的备份代码_MySQL中的备份数据库
- xadmin在Django 1.11中的使用及中英文切换
- Python 3.8与普通程序员有关的几个新特性
- 摩斯密码php,摩斯密码是什么?
- 搜狐狐友通过增加知名度增加用户量
- 服务器光盘装centos7系统,光盘安装CentOS 7.4步骤
- 郭博分析modbus主机模式
- ExtJs 第二章,Ext.form.Basic表单操作
- 【基于uml高校新闻发布管理系统】
- // 和 \\ 都表示什么意思
- 华为ICT云赛道真题