func_code_string: #include <iostream>   #include <algorithm>   #include <cstring>   #include <string>   #include <queue>   typedef long long ll;   using namespace std;         int main()    {    // what is greedy?    int T;    cin >> T;    while (T--) {     int len, a, b;     cin >> len >> a >> b;     string s;     cin >> s;     if (b > 0)       cout << (a + b) * len << endl;     else {      // 尽量连续      char ch = s[0];      int arr[5] = { 0, 0, 0, 0, 0 };      for (int i = 0; i < len; i++) {       if (s[i] != ch) {        arr[ch -  0 ]++;        ch = s[i];       }      }      // cout << s[len - 1] -  0  << endl;      arr[s[len - 1] -  0 ]++;      // cout <<  arr[0] ==   << arr[0] << endl;      // cout <<  arr[1] ==   << arr[1] << endl;      int minEle = arr[0] < arr[1] ? arr[0] : arr[1];      cout << a * len + (minEle + 1) * b << endl;     }     // if (a <= 0 && b <= 0) {     //  // 尽量连续     //  char ch = s[0];     //  int arr[5] = { 0, 0, 0, 0, 0 };     //  for (int i = 0; i < len; i++) {     //   if (s[i] != ch) {     //    arr[ch -  0 ]++;     //    ch = s[i];     //   }     //  }     //  int minEle = arr[0] < arr[1] ? arr[0] : arr[1];     //  cout << a * len + (minEle + 1) * b << endl;     // } else if (a <= 0 && b > 0) {     //  // 一个一个弄     //  cout << (a + b) * len << endl;     // } else if (a >= 0 && b <= 0) {     //  // 尽量连续     //  char ch = s[0];     //  int arr[5] = { 0, 0, 0, 0, 0 };     //  for (int i = 0; i < len; i++) {     //   if (s[i] != ch) {     //    arr[ch -  0 ]++;     //    ch = s[i];     //   }     //  }     //  int minEle = arr[0] < arr[1] ? arr[0] : arr[1];     //  cout << a * len + (minEle + 1) * b << endl;     // } else if (a >= 0 && b > 0) {     //  // 一个一个弄     //  cout << (a + b) * len << endl;     // }    }       return 0;   }