Guest User

Untitled

a guest
Jun 25th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <set>
  4. #include <map>
  5. using namespace std;
  6. typedef long long ent;
  7.  
  8. //by me: Mientras no llegue, sigue pidiendo. Si lo supera o "se passa", para.
  9. double rec(int& k, int ac, vector<int>& v, int sum) { //prob de conseguir >k puntos
  10. if (ac>15) return 0.;
  11. if(ac>k) return 1.;
  12. double x =0;
  13. for (int i = 0; i < 8;++i) {
  14. if (v[i]>0) {
  15. --v[i];
  16. x+=double(v[i]+1)/double(sum)*rec(k,ac+2*i+(i==0),v,sum-1);
  17. ++v[i];
  18. }
  19. }
  20. return x;
  21. }
  22.  
  23. double juga(int& k, vector<int>& v, int sum) {
  24. if(k>15) return 0.;
  25. double ans = 0;
  26. double Q = 1-rec(k,0,v,sum);
  27. for (int i = 0; i < 8; ++i) if (v[i]>0) {
  28. k+=2*i+(i==0);
  29. --v[i];
  30. double P = juga(k,v,sum-1);
  31. ++v[i];
  32. k-=2*i+(i==0);
  33. ans=max(ans, double(v[i]+1)/double(sum)*max(P,Q));
  34. }
  35. return ans;
  36. }
  37.  
  38. const int M = 16;
  39. int main() {
  40. int t;
  41. cin >> t;
  42. while (t--) {
  43. char c;
  44. int p=0,s=0;
  45. cin >> c;
  46. if (c=='F') p=1;
  47. else p=2*(c-'0');
  48. vector<int> v(8,0);
  49. for (int i=0;i<8;++i) { //v[0] fig
  50. cin >> v[i];
  51. s+=v[i];
  52. }
  53. cout << juga(p,v,s)<< " ";
  54. cout << 1-rec(p,0,v,s) << endl; //prob que dona b (segona)
  55.  
  56. }
  57. }
Add Comment
Please, Sign In to add comment