fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. #define int ll
  5.  
  6. int n ;
  7. long double dp[101][101][101] ;
  8. long double solve(int x , int y , int z){
  9. if (x == n || y == n || z == n){
  10. return 0.0 ;
  11. }
  12. if( x + y == n){
  13. return 3.0 * y ;
  14. }
  15. if(dp[x][y][z] != 0) return dp[x][y][z] ;
  16. long double sum = 1.5 ;
  17. sum += 0.5 * solve(x+1 , y , z - 1) ;
  18.  
  19. int w = x ; int l = y + 1 ;
  20. if (l > w) swap(l , w) ;
  21.  
  22. sum += 0.5 * solve(w , l , z-1) ;
  23.  
  24. return dp[x][y][z] = sum ;
  25. }
  26.  
  27. signed main()
  28. {
  29. ios::sync_with_stdio(false);
  30. cin.tie(nullptr);
  31. cin >> n ;
  32. string s ; cin >> s ;
  33. vector<int> v(3) ;
  34. for(int i = 0 ; i < n ; i++){
  35. if(s[i] == 'r') v[0]++;
  36. if(s[i] == 'g') v[1]++;
  37. if(s[i] == 'b') v[2]++;
  38. }
  39. sort(v.begin() , v.end()) ;
  40.  
  41. cout << fixed << setprecision(8) << solve(v[2] , v[1] , v[0]) << endl ;
  42.  
  43. }
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
0.00000000