codeforces——思路与规律
codeforces 804B http://codeforces.com/problemset/problem/804/B
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/* 题意:给定一个只含ab的序列,每次操作可将ab变为bba 问至少变换多少次使序列不含形式为"ab"的子串 这题没想出来......唉。 思路:从后往前处理,每次经过一个a,都要将它移到最后, 共经过x个b,将ans+=x,同时b的个数翻倍x += x;每经过一个b,x++。 */ #include<iostream> #include<cstdio> #include<cstring> #define mod 1000000007 #define maxn 1000001 using namespace std; int now,ans; char s[maxn]; int main() { scanf("%s",s); int l=strlen(s); for(int i=l-1;i>=0;i--) { if(s[i]=='b') now=(now+1)%mod; else { ans=(ans+now)%mod; now=(now+now)%mod; } } printf("%d\n",ans); return 0; }
折花枝,恨花枝,准拟花开人共卮,开时人去时。
怕相思,已相思,轮到相思没处辞,眉间露一丝。