昨天 CF div1 C 题玄学 UB 求助
  • 板块灌水区
  • 楼主_FJqwq
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/1 10:14
  • 上次更新2024/5/1 13:26:04
查看原帖
昨天 CF div1 C 题玄学 UB 求助
755947
_FJqwq楼主2024/5/1 10:14

样例会 Wa

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=2e5+5,mod=998244353;
ll t,n,k,b[N],val[N],cnt[N],ans[N],lg[N];
ll lowbit(ll x){return (x&(-x));}
ll power(ll x,ll y){
    if(!y) return 1ll;
    ll z=power(x,y>>1ll);
    z=(z*z)%mod;
    if(y&1) return (z*x)%mod;
    return z;
}
ll inv(ll x){return power(x,mod-2);}
ll C(ll x,ll y){
    ll res=1;
    for(ll i=x-y+1;i<=x;i++) res=(res*i)%mod;
    for(ll i=1;i<=y;i++) res=(res*inv(i))%mod;
    return res;
}
signed main(){
    for(int i=1;i<=200000;i++) lg[i]=lg[i>>1]+1;
    scanf("%lld",&t);
    while(t--){
        scanf("%lld%lld",&n,&k);
        for(ll i=1;i<=n;i++) scanf("%lld",&b[i]);
        for(ll i=1;i<=n;i++) ans[i]=b[i];
        for(ll i=1;i<=n;i<<=1ll){
            for(ll j=1;j<=n;j++)
                if(lowbit(j)==i)
                    for(ll p=j+lowbit(j),x,y,z;p<=n;p+=lowbit(p)){
                        x=lg[lowbit(j)],y=lg[lowbit(p)];
                        z=abs(x-y);
                        ans[p]=(ans[p]-ans[j]*C(z+k-1,z))%mod;
                    }
        }
        for(ll i=1;i<=n;i++) printf("%lld ",(ans[i]%mod+mod)%mod);
        puts("");
    }
    return 0;
}
2024/5/1 10:14
加载中...