PAT 甲级1093乙级 1040 PAT Ranking 个人错误总结

    技术2022-07-10  126

    这题比较简单,直接ac了。 思路:用信息换时间问题,暴力解法的问题在于获取了很多没用的信息(对应的pat字符在哪一位,如果是不同的字符串,需要将每个打印出来,那确实需要这些信息,而现在这些信息是无用的),这题是知道个数即可,需要从计算的角度考虑,而不需要把每个点都遍历出来。 ac代码

    #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; char str[100000]; int main() { long long count=0; int p=0; int a=0; int t=0; int p1=0,a1=0,t1=0; scanf("%s",str); int l=strlen(str); for(int i=0;i<l;i++) { if(str[i]=='P') p++; if(str[i]=='A') a++; if(str[i]=='T') t++; } for(int i=0;i<l;i++) { if(str[i]=='P') p1++; if(str[i]=='A') { count+=p1*(t-t1); } if(str[i]=='T') t1++; } printf("%ld",count00000007); return 0; }
    Processed: 0.022, SQL: 9