Advertisement
yicongli

LG2473

Apr 1st, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.85 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define gc c=getchar()
  6. #define r(x) read(x)
  7. #define ll long lon
  8.  
  9. template<typename T>
  10. inline void read(T&x){
  11.     T k=1;char gc;x=0;
  12.     while(!isdigit(c)){if(c=='-')k=-1;gc;}
  13.     while(isdigit(c))x=x*10+c-'0',gc;x*=k;
  14. }
  15.  
  16. const int N=(1<<15)|7;
  17.  
  18. int a[20];
  19. int sta[N];
  20. double f[105][N];
  21.  
  22. int main(){
  23.     // freopen(".in","r",stdin);
  24.     // freopen(".out","w",stdout);
  25.     int m,n;r(m),r(n);
  26.     for(int i=1,x;i<=n;++i){
  27.         r(a[i]);
  28.         for(r(x);x;r(x))sta[i]|=1<<(x-1);
  29.     }
  30.     for(int i=m-1;~i;--i){
  31.         for(int j=0;j<1<<n;++j){
  32.             for(int k=1;k<=n;++k){
  33.                 if((j|sta[k])==j){
  34.                     f[i][j]+=max(f[i+1][j],f[i+1][j|(1<<(k-1))]+a[k]);
  35.                 }
  36.                 else f[i][j]+=f[i+1][j];
  37.             }
  38.             f[i][j]/=n;
  39.         }
  40.     }
  41.     printf("%.6lf",f[0][0]);
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement