题目链接:点击这里
题目大意:
 有 
    
     
      
       
        n
       
      
      
       n
      
     
    n 个人和一个长度为 
    
     
      
       
        m
       
      
      
       m
      
     
    m 的序列。每个人对序列的每个元素都可以选或不选,如果某个元素被 
    
     
      
       
        0
       
      
      
       0
      
     
    0 或 
    
     
      
       
        n
       
      
      
       n
      
     
    n 个人选中就算该元素被删除掉,在人们不互相沟通且做出最优选择的前提下,求该序列剩余元素个数的期望
题目分析:
 我们可以发现,对于序列的不同位置,是相互独立的,因此期望就是单个元素的期望乘上 
    
     
      
       
        m
       
      
      
       m
      
     
    m 。
 因为每个都是在不能互相交流的情况下做出最优选择,所以他们对于同一个元素的选取概率是相同的
 不妨设第 
    
     
      
       
        i
       
      
      
       i
      
     
    i 个人选该元素的概率为 
    
     
      
       
        p
       
      
      
       p
      
     
    p ,因此该元素被删掉的期望(概率)为 
    
     
      
       
        
         p
        
        
         n
        
       
       
        +
       
       
        (
       
       
        1
       
       
        −
       
       
        p
       
       
        
         )
        
        
         n
        
       
      
      
       p^n+(1-p)^n
      
     
    pn+(1−p)n (都选择该元素和都没选择两种情况加起来)。因为做的是最优选择,所以大家都希望删除的期望尽可能的小
 设 
    
     
      
       
        f
       
       
        (
       
       
        p
       
       
        )
       
       
        =
       
       
        
         p
        
        
         n
        
       
       
        +
       
       
        (
       
       
        1
       
       
        −
       
       
        p
       
       
        
         )
        
        
         n
        
       
      
      
       f(p)=p^n+(1-p)^n
      
     
    f(p)=pn+(1−p)n ,则 
    
     
      
       
        
         f
        
        
         ′
        
       
       
        (
       
       
        p
       
       
        )
       
       
        =
       
       
        n
       
       
        
         p
        
        
         
          n
         
         
          −
         
         
          1
         
        
       
       
        −
       
       
        n
       
       
        (
       
       
        1
       
       
        −
       
       
        p
       
       
        
         )
        
        
         
          n
         
         
          −
         
         
          1
         
        
       
      
      
       f'(p)=np^{n-1}-n(1-p)^{n-1}
      
     
    f′(p)=npn−1−n(1−p)n−1
 令 
    
     
      
       
        
         f
        
        
         ′
        
       
       
        (
       
       
        p
       
       
        )
       
       
        =
       
       
        0
       
      
      
       f'(p)=0
      
     
    f′(p)=0 得 
    
     
      
       
        p
       
       
        =
       
       
        0.5
       
      
      
       p=0.5
      
     
    p=0.5 ,易知 
    
     
      
       
        
         f
        
        
         ′
        
       
       
        (
       
       
        p
       
       
        )
       
      
      
       f'(p)
      
     
    f′(p) 在 
    
     
      
       
        (
       
       
        0
       
       
        ,
       
       
        0.5
       
       
        )
       
      
      
       (0,0.5)
      
     
    (0,0.5) 小于 
    
     
      
       
        0
       
      
      
       0
      
     
    0 ,在 
    
     
      
       
        (
       
       
        0.5
       
       
        ,
       
       
        1
       
       
        )
       
      
      
       (0.5,1)
      
     
    (0.5,1) 大于 
    
     
      
       
        0
       
      
      
       0
      
     
    0 ,所以 
    
     
      
       
        p
       
       
        =
       
       
        0.5
       
      
      
       p=0.5
      
     
    p=0.5 时取得最小值
 所以总体期望就是 
     
      
       
        
         m
        
        
         ×
        
        
         
          
           
            2
           
           
            n
           
          
          
           −
          
          
           2
          
         
         
          
           2
          
          
           n
          
         
        
       
       
        m\times\frac{2^n-2}{2^n}
       
      
     m×2n2n−2
 减去了全选和全不选两种情况
具体细节见代码:
//#pragma GCC optimize(2)
//#pragma GCC optimize("Ofast","inline","-ffast-math")
//#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<unordered_map>
#define ll long long
#define inf 0x3f3f3f3f
#define Inf 0x3f3f3f3f3f3f3f3f
//#define int  ll
#define endl '\n'
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
using namespace std;
int read()
{
	int res = 0,flag = 1;
	char ch = getchar();
	while(ch<'0' || ch>'9')
	{
		if(ch == '-') flag = -1;
		ch = getchar();
	}
	while(ch>='0' && ch<='9')
	{
		res = (res<<3)+(res<<1)+(ch^48);//res*10+ch-'0';
		ch = getchar();
	}
	return res*flag;
}
const int maxn = 1e6+5;
const int mod = 1e9+7;
const double pi = acos(-1);
const double eps = 1e-8;
int n,m;
int qpow(int a,int b)
{
	int res = 1;
	while(b)
	{
		if(b&1) res = 1LL*res*a%mod;
		a = 1LL*a*a%mod;
		b >>= 1;
	}
	return res;
}
int main()
{
	int t = read();
	while(t--)
	{
		n = read(),m = read();
		printf("%d\n",1LL*m*(qpow(2,n)-2+mod)%mod*qpow(qpow(2,n),mod-2)%mod);
	}
	return 0;
}










