#38234: 解體想法+答案


samlin961112@gmail.com (林哲甫)

學校 : 新北市私立南山高級中學
編號 : 220506
來源 : [123.252.121.18]
最後登入時間 :
2024-11-21 18:41:43
c412. 四、多麼OwO(OwO) -- 板橋高中模擬賽 | From: [219.70.213.92] | 發表日期 : 2023-11-05 21:56

每一次讀到O時,可以作為第1個O與已有w的第2個O

讀到w時可以做為已讀到O的w

建3個變數,分別為

第一個O的數量ocount

第二個w的數量wcount

第三個O的數量ans

每個O:ocount+=1(作為第一個O),ans+=wcount(作為最後一個w)

每個w:wcount+=ocount(每個已有O都可在其後加w)

用string儲存空間不足:一個一個字元讀取

時間較短:用getchar_unlocked(),不要用cin,cout

code

#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
int main() {
  int T;
  scanf("%d",&T);
  getchar_unlocked();
  char s='1';
  while (T--) {
    int ans = 0;
    int ocount = 0; 
    int wcount = 0;
    while (true) {
      s=getchar_unlocked();
      if (s == 'O') {
        ocount++;
        ans += wcount;
        ans %= MOD;
      } else if (s == 'w') {
        wcount += ocount;
        wcount%=MOD;
      }else if(s=='\n'){
        break;
      }

    }
    printf("%d\n",ans);
  }
}

 

 

 
ZeroJudge Forum