CodeForces 632 B.Alice, Bob, Two Teams(水~)
来源:互联网 发布:金石工程计价软件 编辑:程序博客网 时间:2024/06/11 15:59
Description
有n个物品,分为A和B两种,每个物品有一个价值pi,Bob可以把任意一个前缀或者后缀中所有A物品变成B物品,B物品变成A物品,之后Bob拿到所有B物品,问Bob能拿到的物品的最大价值
Input
第一行一整数n表示物品数量,之后n个整数pi表示第i个物品的价值,最后一个长度为n的字符串表示每个物品的种类(1<=n<=5e5,1<=pi<=1e9)
Output
输出Bob能拿到物品的最大价值
Sample Input
5
1 2 3 4 5
ABABA
Sample Output
11
Solution
分别维护A物品和B物品价值的前缀和和后缀和,pa[i]和pb[i]分别表示前i个物品中A和B物品的价值和,sa[i]和sb[i]分别表示第i个物品到第n个物品中A和B物品的价值和,那么ans=max(max(pa[i]+sb[i+1]),max(pb[i]+sa[i+1]))
Code
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#include<map>#include<set>#include<ctime>using namespace std;typedef long long ll;#define INF 0x3f3f3f3f#define maxn 555555int n,p[maxn];ll pa[maxn],pb[maxn],sa[maxn],sb[maxn];char s[maxn];int main(){ while(~scanf("%d",&n)) { for(int i=1;i<=n;i++)scanf("%d",&p[i]); scanf("%s",s+1); pa[0]=p[0]=0; for(int i=1;i<=n;i++) { pa[i]=pa[i-1],pb[i]=pb[i-1]; if(s[i]=='A')pa[i]+=p[i]; else pb[i]+=p[i]; } sa[n+1]=sb[n+1]=0; for(int i=n;i>=1;i--) { sa[i]=sa[i+1],sb[i]=sb[i+1]; if(s[i]=='A')sa[i]+=p[i]; else sb[i]+=p[i]; } ll ans=pb[n]; for(int i=0;i<=n;i++)ans=max(ans,pa[i]+sb[i+1]); for(int i=n;i>=1;i--)ans=max(ans,pb[i-1]+sa[i]); printf("%I64d\n",ans); } return 0;}
0 0
- CodeForces 632 B.Alice, Bob, Two Teams(水~)
- CodeForces 632B- Alice, Bob, Two Teams
- codeforces-632B-Alice, Bob, Two Teams
- CodeForces-632B-Alice, Bob, Two Teams
- CodeForces 632B Alice, Bob, Two Teams
- CodeForces 632B Alice, Bob, Two Teams
- 【codeforces 632B Alice, Bob, Two Teams】
- 【CodeForces】 632B Alice, Bob, Two Teams
- CodeForces 632B Alice, Bob, Two Teams
- CodeForces 632B Alice, Bob, Two Teams
- Alice, Bob, Two Teams codeforces 632B
- 【CodeForces】632B - Alice, Bob, Two Teams(模拟)
- Codeforces 632B:Alice, Bob, Two Teams(英文题。。。)
- 【Codeforces】-632B-Alice, Bob, Two Teams(模拟,思维)
- CodeForces 632B Alice, Bob, Two Teams(暴力)
- 【CodeForces 632B】 Alice, Bob, Two Teams(暴力)
- codeforces--623B Alice, Bob, Two Teams
- Codeforces 632B Alice, Bob, Two Teams 【水题】
- 工具拼接xml
- 栈的分析(二)————函数栈
- 数据库复制
- CSS中子元素浮动导致父元素高度塌陷解决方案
- sweetalert弹框使用
- CodeForces 632 B.Alice, Bob, Two Teams(水~)
- 数据安全访问之Sharing Rules
- 前端基础进阶(六):在chrome开发者工具中观察函数调用栈、作用域链与闭包
- 2017中兴算法挑战赛思路解题过程
- 扫雷
- Python使用os.listdir()函数来得目录内容的介绍
- ROS Gazebo(一):安装与使用
- js入门三JavaScript 面向对象实现
- spring的DriverManagerDataSource与apache的BasicDataSource区别