CodeForces 632 B.Alice, Bob, Two Teams(水~)
2017-04-27 11:45
295 查看
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
有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 555555 int 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 ; 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; }
相关文章推荐
- 【CodeForces 632B】 Alice, Bob, Two Teams(暴力)
- codeforces 632B B. Alice, Bob, Two Teams(暴力)
- Codeforces 632B:Alice, Bob, Two Teams(英文题。。。)
- CodeForces-632B Alice, Bob, Two Teams 【dp】
- 【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-Alice, Bob, Two Teams
- CodeForces 632B Alice, Bob, Two Teams(暴力)
- CodeForces-632B-Alice, Bob, Two Teams
- codeforce-【B. Alice, Bob, Two Teams】
- cf#ECR 9-B. Alice, Bob, Two Teams-DP
- Educational Codeforces Round 9-B. Alice, Bob, Two Teams(前缀和)
- (Educational Codeforces Round 9 )Alice, Bob, Two Teams(前缀和)
- Alice, Bob, Two Teams CodeForces - 632B
- Educational Codeforces Round 9 B. Alice, Bob, Two Teams 前缀和
- Alice, Bob, Two Teams codeforces 632B
- CodeForces 632B Alice, Bob, Two Teams