题意:给你一个字符串,算它的值,单个值为1 连续的值为累加和。
解题思路:水
解题代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 // BEGIN CUT HERE 2 /* 3 4 */ 5 // END CUT HERE 6 #line 7 "SquareScoresDiv2.cpp" 7 #include <cstdlib> 8 #include <cctype> 9 #include <cstring> 10 #include <cstdio> 11 #include <cmath> 12 #include <algorithm> 13 #include <vector> 14 #include <string> 15 #include <iostream> 16 #include <sstream> 17 #include <map> 18 #include <set> 19 #include <queue> 20 #include <stack> 21 #include <fstream> 22 #include <numeric> 23 #include <iomanip> 24 #include <bitset> 25 #include <list> 26 #include <stdexcept> 27 #include <functional> 28 #include <utility> 29 #include <ctime> 30 using namespace std; 31 32 #define PB push_back 33 #define MP make_pair 34 35 #define REP(i,n) for(i=0;i<(n);++i) 36 #define FOR(i,l,h) for(i=(l);i<=(h);++i) 37 #define FORD(i,h,l) for(i=(h);i>=(l);--i) 38 39 typedef vector<int> VI; 40 typedef vector<string> VS; 41 typedef vector<double> VD; 42 typedef long long LL; 43 typedef pair<int,int> PII; 44 45 46 class SquareScoresDiv2 47 { 48 public: 49 int getscore(string s) 50 { 51 int t = 1 ; 52 int sum = 0 ; 53 int len = s.size(); 54 for(int i = 1 ;i < s.size(); i ++) 55 { 56 if(s[i] != s[i-1]) 57 { 58 int tsum = 0 ; 59 for(int j = 1; j <= t; j ++ ) 60 { 61 tsum += j ; 62 } 63 sum += tsum ; 64 t = 1 ; 65 }else{ 66 t ++ ; 67 } 68 } 69 int tsum = 0 ; 70 for(int j = 1; j <= t ;j ++) 71 { 72 tsum += j ; 73 } 74 return sum + tsum ; 75 } 76 77 // BEGIN CUT HERE 78 public: 79 void run_test(int Case) { if ((Case == -1) || (Case == 0)) test_case_0(); if ((Case == -1) || (Case == 1)) test_case_1(); if ((Case == -1) || (Case == 2)) test_case_2(); if ((Case == -1) || (Case == 3)) test_case_3(); if ((Case == -1) || (Case == 4)) test_case_4(); } 80 private: 81 template <typename T> string print_array(const vector<T> &V) { ostringstream os; os << "{ "; for (typename vector<T>::const_iterator iter = V.begin(); iter != V.end(); ++iter) os << '"' << *iter << "","; os << " }"; return os.str(); } 82 void verify_case(int Case, const int &Expected, const int &Received) { cerr << "Test Case #" << Case << "..."; if (Expected == Received) cerr << "PASSED" << endl; else { cerr << "FAILED" << endl; cerr << " Expected: "" << Expected << '"' << endl; cerr << " Received: "" << Received << '"' << endl; } } 83 void test_case_0() { string Arg0 = "aaaba"; int Arg1 = 8; verify_case(0, Arg1, getscore(Arg0)); } 84 void test_case_1() { string Arg0 = "zzzxxzz"; int Arg1 = 12; verify_case(1, Arg1, getscore(Arg0)); } 85 void test_case_2() { string Arg0 = "abcdefghijklmnopqrstuvwxyz"; int Arg1 = 26; verify_case(2, Arg1, getscore(Arg0)); } 86 void test_case_3() { string Arg0 = "p"; int Arg1 = 1; verify_case(3, Arg1, getscore(Arg0)); } 87 void test_case_4() { string Arg0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; int Arg1 = 5050; verify_case(4, Arg1, getscore(Arg0)); } 88 89 // END CUT HERE 90 91 }; 92 93 // BEGIN CUT HERE 94 int main() 95 { 96 SquareScoresDiv2 ___test; 97 ___test.run_test(-1); 98 return 0; 99 } 100 // END CUT HERE