看马蜂猜人 2.0
NOIP2025 T2
il void Dadd(int &a,int b){(a+=b)>=P?a-=P:0;}
il int Add(int a,int b){int v=a+b;return v>=P?v-P:v;}
il void Ddel(int &a,int b){(a-=b)<0?a+=P:0;}
int R=min(mxr,rk[id[l]|1]-1),pos=l+2;
for(int r=l+1;r<=R;r++)if(id[r]&1){
int cnt0=c0[l-1]-1,cnt1=c1[r-1];
int qpow(int x,int y){
int res=1;
while(y){
if(y&1) res=res*x%mod;
tmp+=qpow(2,max(0LL,n-k));
tmp%=mod;
for(int i=1;i<=5000;i++){
pw[i]=pw[i-1]*2%modd;
jie[i]=jie[i-1]*i%modd;
ni[i]=kuai(jie[i],modd-2);
}
for(int i=0;i<=5000;i++){
ee=0;
const int N=5005,mod=998244353;
int c,T,a[N],n,m;
ll fac[N*2],inv[N*2],p2[N*2],p[N*2],s[N*2];
ll val=s[j];
while(t>j&&b[j].x+b[t].x<b[i].x) t--;
sum=(sum+val*p2[n-t])%mod;
bool cmp(node x,node y)
{
if(x.w!=y.w) return x.w>y.w;
mp.clear();
cnt.clear();
for(int i=1;i<=n;i++) mp[a[i]]++;
int res = 0;
for (int s = 0; s < (1 << n); s++) {
cnt = 0;
for (int i = 0; i < n; i++) {
if (dp[m] > ans) ++res;
for (int i = 0; i <= m; i++) dp[i] = 0;
while(b){
if(b&1) res=1ll*res*a%mod;
a=1ll*a*a%mod,b>>=1;
}
}
cout<<del(pw2[n],ans)<<'\n';
for(int i=1;i<=n;i++){
q[i].c=a[i]*1.0/p[i];
q[i].id=i,q[i].val=a[i],q[i].p=p[i];
cin>>id>>T;
while(T--){
cin>>n>>m;
int ans=0;
for(int s=0;s<1<<n;s++){
memset(dp,0,(m+1)<<3);
int vl=i==1?1:2;
if(vl==1) b[i]={1.*a[i],a[i],i,1};
else b[i]={a[i]*0.5,a[i],i,2};
}
inline void solve(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1,cmp),ans=0;
if(c<=5){
for(int j = i + 1; j <= n; j++) {
if(a[i] >= 2 * a[j]) continue;
if(a[i] - a[j] <= 0) continue;
il void main() {
fin >> Id >> T; init(100005);
while(T--) solve();
}
cout<<ans<<'\n';
continue;
}
int ans=0;
for(int i=0;i<(1<<n);i++){
for(int j=1;j<=n;j++){

浙公网安备 33010602011771号