codeforces 399B Red and Blue Balls-数据-(模拟题找规律)

来源:互联网 发布:公子无耻知乎 编辑:程序博客网 时间:2024/06/06 00:11

题意:按照题目的步骤把所有的球都换成红色

分析:直接模拟超时。模拟题要是超时就是找规律。自己手动模拟一下发现每换一个Blue的球a[i]需要换:a[0]+a[1]+....+a[i-1]+1次,所以这就是一个数列的题。先预处理所有的a[i]需要的次数:b[i],然后根据输入用预处理的数列求和即可。

代码:

#include<iostream>using namespace std;int n;char a[100010];long long b[100010];long long sum;void init(){b[1]=1,b[2]=2;sum=3;for(int i=3;i<100009;i++) b[i]=sum+1,sum+=b[i];return;}int main(){init();while(cin>>n){sum=0;for(int i=1;i<=n;i++){cin>>a[i];if(a[i]=='B') sum+=b[i];}cout<<sum<<endl;}}


0 0
原创粉丝点击