1. 程式人生 > >codeforces——思路與規律

codeforces——思路與規律

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
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; }
難度系數 2

codeforces——思路與規律