codeforces——思路與規律
阿新 • • 發佈:2017-05-17
efi clas hide 同時 sin else closed sca code
codeforces 804B http://codeforces.com/problemset/problem/804/B
/* 題意:給定一個只含ab的序列,每次操作可將ab變為bba 問至少變換多少次使序列不含形式為"ab"的子串 這題沒想出來......唉。 思路:從後往前處理,每次經過一個a,都要將它移到最後, 共經過x個b,將ans+=x,同時b的個數翻倍x += x;每經過一個b,x++。 */ #include<iostream> #include<cstdio> #include<cstring> #define難度系數 2mod 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; }
codeforces——思路與規律