Educational Codeforces Round 9 B. Alice, Bob, Two Teams 前缀和
B. Alice, Bob, Two Teams
题目连接:
http://www.codeforces.com/contest/632/problem/B
Description
Alice and Bob are playing a game. The game involves splitting up game pieces into two teams. There are n pieces, and the i-th piece has a strength pi.
The way to split up game pieces is split into several steps:
First, Alice will split the pieces into two different groups A and B. This can be seen as writing the assignment of teams of a piece in an n character string, where each character is A or B.
Bob will then choose an arbitrary prefix or suffix of the string, and flip each character in that suffix (i.e. change A to B and B to A). He can do this step at most once.
Alice will get all the pieces marked A and Bob will get all the pieces marked B.
The strength of a player is then the sum of strengths of the pieces in the group.
Given Alice's initial split into two teams, help Bob determine an optimal strategy. Return the maximum strength he can achieve.
Input
The first line contains integer n (1 ≤ n ≤ 5·105) — the number of game pieces.
The second line contains n integers pi (1 ≤ pi ≤ 109) — the strength of the i-th piece.
The third line contains n characters A or B — the assignment of teams after the first step (after Alice's step).
Output
Print the only integer a — the maximum strength Bob can achieve.
Sample Input
5
1 2 3 4 5
ABABA
Sample Output
11
Hint
题意
有n个物品,每个物品有一个分值
然后每个物品有一个标牌,如果标牌上是A,那么就属于A,是B,那么就属于B
现在你可以选择一个前缀或者后缀,然后将上面的A改成B,将B改成A
然后问你最多B能够得到多少
题解:
暴力维护前缀和就好了
维护A的前缀和,和B的前缀和
翻转其实就是把A的变成B,B的变成A而已
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 5e5+7;
int n;
long long p[maxn];
char s[maxn];
long long sum1[maxn];
long long sum2[maxn];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&p[i]);
scanf("%s",s+1);
for(int i=1;i<=n;i++)
{
sum1[i]=sum1[i-1];
sum2[i]=sum2[i-1];
if(s[i]=='A')
sum1[i]+=p[i];
else
sum2[i]+=p[i];
}
long long ans = max(sum2[n],sum1[n]);
for(int i=1;i<=n;i++)
{
ans = max(ans,sum2[n]-sum2[i]+sum1[i]);
ans = max(ans,sum2[i]+sum1[n]-sum1[i]);
}
cout<<ans<<endl;
}
Educational Codeforces Round 9 B. Alice, Bob, Two Teams 前缀和的更多相关文章
- Educational Codeforces Round 129 (Rated for Div. 2) A-D
Educational Codeforces Round 129 (Rated for Div. 2) A-D A 题目 https://codeforces.com/contest/1681/pro ...
- [Educational Codeforces Round 16]E. Generate a String
[Educational Codeforces Round 16]E. Generate a String 试题描述 zscoder wants to generate an input file f ...
- [Educational Codeforces Round 16]D. Two Arithmetic Progressions
[Educational Codeforces Round 16]D. Two Arithmetic Progressions 试题描述 You are given two arithmetic pr ...
- [Educational Codeforces Round 16]C. Magic Odd Square
[Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...
- [Educational Codeforces Round 16]B. Optimal Point on a Line
[Educational Codeforces Round 16]B. Optimal Point on a Line 试题描述 You are given n points on a line wi ...
- [Educational Codeforces Round 16]A. King Moves
[Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...
- Educational Codeforces Round 6 C. Pearls in a Row
Educational Codeforces Round 6 C. Pearls in a Row 题意:一个3e5范围的序列:要你分成最多数量的子序列,其中子序列必须是只有两个数相同, 其余的数只能 ...
- Educational Codeforces Round 9
Educational Codeforces Round 9 Longest Subsequence 题目描述:给出一个序列,从中抽出若干个数,使它们的公倍数小于等于\(m\),问最多能抽出多少个数, ...
- Educational Codeforces Round 37
Educational Codeforces Round 37 这场有点炸,题目比较水,但只做了3题QAQ.还是实力不够啊! 写下题解算了--(写的比较粗糙,细节或者bug可以私聊2333) A. W ...
随机推荐
- H264协议(转)
码率(Bitrate).帧率(FPS).分辨率和清晰度的联系与区别:https://blog.csdn.net/pc9319/article/details/79621352 H.264编码原理以及I ...
- Python3 生成器
生成器(genetor): 1>生成器只有在调用的时候才会生成相应的数据: 2>生成器只记录当前位置,有一个__next__()方法 3>yield可以实现单线程先的并发运算 1.列 ...
- echo常用操作
echo -n 不换行输出 [root@C ~]# echo -n "peter" ; echo "linux" peterlinux echo -e 输出转义 ...
- 从Java Future到Guava ListenableFuture实现异步调用
原文地址: http://blog.csdn.net/pistolove/article/details/51232004 Java Future 通过Executors可以创建不同类似的线程 ...
- Django-form組件補充
自定义验证规则 方法一: 1 2 3 4 5 6 7 8 9 10 from django.forms import Form from django.forms import widgets f ...
- 【hdoj_2391】FilthyRich
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2391 题目大意:给定一个矩阵,从左上角第一个元素开始到右下最后一个元素,寻找一条路线,使得路线经过的矩阵元 ...
- SGU 289. Challenging Tic-Tac-Toe
注意一个问题就是不合法状态的判定.一个是点数不对,一个是X赢了,但是0接着下了一个子,一个是0赢了,但X也接着下了子,判断一下就行了. 做法是直接搜索,然后调参数...比较难懂的说. #include ...
- CentOS7.5安装teamviwer13
1.首先到官网下载teamviewer13的rpm包 https://www.teamviewer.com/zhcn/download/linux/ 2.安装 安装依赖包 http://mirror. ...
- idea优秀插件(Java开发常用)
http://blog.csdn.net/sujun10/article/details/72852939 1.findBugs-IDEA 可以查看代码中基础错误,这个eclipse中也有,操作也方便 ...
- POJ 1845 Sumdiv (整数唯一分解定理)
题目链接 Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 25841 Accepted: 6382 Desc ...