1093. Count PAT's (25)

来源:互联网 发布:coc治疗法术数据 编辑:程序博客网 时间:2024/05/05 20:14

辅助数组记录左右的情况

这题和1101. Quick Sort一个思想

最后结果要取余数

long long 当然也不能忘

#include<iostream>#include<vector>#include<algorithm>#include<string>#include<map>#include<queue>using namespace std;typedef long long LL;const int MAX = 100010;int pnum[MAX] = {0}, tnum[MAX] = {0};vector<int> indexa;int main(){string s;cin>>s;LL count = 0;LL np = 0, na = 0, nt = 0;//从左到右扫描s,记录每个A之前的P的数目,存入pnum[],并记录A的下标 for(int i = 0; i < s.size(); i++){if(s[i] == 'P'){np++;}pnum[i] = np;if(s[i] == 'A'){indexa.push_back(i);} }//从右到左遍历记录每个A之后的T的数目,存入tnum[]for(int i = s.size() - 1; i >= 0; i--){if(s[i] == 'T'){nt++;}tnum[i] = nt;}//每个A对应的PAT即为,A下标对应的pnum[indexa]*tnum[indexa]for(int i = 0; i < indexa.size(); i++){count += pnum[indexa[i]]*tnum[indexa[i]];}printf("%lld\n",count%1000000007);return 0; } 


0 0
原创粉丝点击