比赛 2024暑假C班集训C 评测结果 TAAAAAATTT
题目名称 W&B 最终得分 60
用户昵称 彭欣越 运行时间 10.519 s
代码语言 C++ 内存使用 4.04 MiB
提交时间 2024-07-12 09:52:07
显示代码纯文本
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int t,n,cnt,a[100010],b[100010];
  4. long long ans,sum1,sum2,res1,res2;
  5. int main () {
  6. freopen("silly.in","r",stdin);
  7. freopen("silly.out","w",stdout);
  8. cin >> t;
  9. while (t--) {
  10. memset(a,0,sizeof(a));
  11. memset(b,0,sizeof(b));
  12. ans=0,res1=0,res2=0,cnt=0,sum1=0,sum2=0;
  13. cin >> n;
  14. for (int i=1;i<=n;i++) {
  15. int x;
  16. char s;
  17. cin >> x >> s;
  18. cnt++;
  19. if (s=='B') {
  20. a[cnt]=x;
  21. sum1+=x;
  22. }else{
  23. b[cnt]=x;
  24. sum2+=x;
  25. }
  26. }
  27. //cout << sum1 <<' '<< sum2 <<endl;
  28. if (sum1==0) {
  29. cout << sum2 <<endl;
  30. continue;
  31. }else if (sum2==0) {
  32. cout << sum1 <<endl;
  33. continue;
  34. }else if (sum1==1||sum2==1) {
  35. cout << 1 <<endl;
  36. continue;
  37. }
  38. int flag=0;
  39. //cout << sum1 <<' '<< sum2 <<endl;
  40. int t=min(sum1,sum2);
  41. for (int i=2;i<=t;i++) {
  42. while (sum1%i==0&&sum2%i==0) {
  43. sum1/=i;
  44. sum2/=i;
  45. flag=1;
  46. }
  47. }
  48. //cout << sum1 <<' '<< sum2 <<endl;
  49. if (flag==0) {
  50. cout << 1 <<endl;
  51. continue;
  52. }
  53. res2+=b[1];
  54. res1+=a[1];
  55. //cout << res1 <<' '<< res2 <<endl;
  56. for (int i=2;i<=cnt;i++) {
  57. if (b[i]==0) {
  58. for (int j=1;j<=a[i];j++) {
  59. res1++;
  60. //cout << res1 <<' '<< res2 <<' '<< sum1 <<' '<< sum2 <<endl;
  61. if (res1%sum1==0&&res2%sum2==0&&res1/sum1==res2/sum2) {
  62. ans++;
  63. res1=0;
  64. res2=0;
  65. res1+=a[i]-j;
  66. break;
  67. }
  68. }
  69. }else{
  70. for (int j=1;j<=b[i];j++) {
  71. res2++;
  72. //cout << res1 <<' '<< res2 <<' '<< sum1 <<' '<< sum2 <<endl;
  73. if (res1%sum1==0&&res2%sum2==0&&res1/sum1==res2/sum2) {
  74. //cout << res1 <<' '<< res2 <<endl;
  75. ans++;
  76. res1=0;
  77. res2=0;
  78. res2+=b[i]-j;
  79. break;
  80. }
  81. }
  82. }
  83. }
  84. cout << ans <<endl;
  85. }
  86. return 0;
  87. }