Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define gc c=getchar()
- #define r(x) read(x)
- #define ll long lon
- template<typename T>
- inline void read(T&x){
- T k=1;char gc;x=0;
- while(!isdigit(c)){if(c=='-')k=-1;gc;}
- while(isdigit(c))x=x*10+c-'0',gc;x*=k;
- }
- const int N=(1<<15)|7;
- int a[20];
- int sta[N];
- double f[105][N];
- int main(){
- // freopen(".in","r",stdin);
- // freopen(".out","w",stdout);
- int m,n;r(m),r(n);
- for(int i=1,x;i<=n;++i){
- r(a[i]);
- for(r(x);x;r(x))sta[i]|=1<<(x-1);
- }
- for(int i=m-1;~i;--i){
- for(int j=0;j<1<<n;++j){
- for(int k=1;k<=n;++k){
- if((j|sta[k])==j){
- f[i][j]+=max(f[i+1][j],f[i+1][j|(1<<(k-1))]+a[k]);
- }
- else f[i][j]+=f[i+1][j];
- }
- f[i][j]/=n;
- }
- }
- printf("%.6lf",f[0][0]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement