首页 > 其他分享 >[ABC241Ex] Card Deck Score 题解

[ABC241Ex] Card Deck Score 题解

时间:2023-12-09 11:11:07浏览次数:36  
标签:ix limits int 题解 sum ABC241Ex Score ans prod

题目链接

点击打开链接

题目解法

个人认为推式子很妙的生成函数题

暴力套上生成函数,\(ans=[x^m]\prod\limits_{i=1}^{n}(\sum\limits_{j=1}^{b_i}(a_ix)^j)\)
\(\sum\limits_{j=1}^{b_i}(a_ix)^j=\frac{1-(a_ix)^{b_i+1}}{1-a_ix}\)
所以 \(ans=[x^m]\prod\limits_{i=1}^{n}\frac{1-(a_ix)^{b_i+1}}{1-a_ix}\)
分离一下分子分母:\(ans=[x^m]\prod\limits_{i=1}^{n}(1-a_ix^{b_i+1})\prod\limits_{i=1}^n\frac{1}{1-a_ix}\)
因为 \(n\) 非常小,所以 \(\prod\limits_{i=1}^{n}(1-a_ix^{b_i+1})\) 可以 \(2^n\) 枚举子集然后暴力计算系数和指数
上面的都是比较套路的 GF 技巧

现在考虑 \(\prod \frac{1}{1-a_ix}\) 怎么算
我感觉这道题的精髓在于下面的化 \(\prod\) 为 \(\sum\),这样可以避免除法的操作
具体怎么做,可以待定系数法:\(\prod \frac{1}{1-a_ix}=\sum \frac{t_i}{1-a_ix}\)
考虑分子恒为 \(1\),列出一下等式:\(1=\sum\limits_{i=1}^n c_i\prod\limits_{j=1,j\neq i}(1-a_jx)\)

下面一步我感觉也很妙
因为 \(x\) 是任意的,所以考虑构造出 \(x\) 从而构造出 \(t\) 使得等式满足
考虑 \(crt\) 的思想,因为我们需要在 \(i\neq k\) 时,使 \(\sum c_k\prod\limits_{l=1,l\neq k}(1-a_lx)=0\)
可以构造 \(x_i=\frac{1}{a_i}\),然后不难求得 \(t_i\)

因为 \(1-a_ix=\sum\limits_{j=0}^{\infty} (a_ix)^j\)
所以不难直接统计答案

时间复杂度 \(O(2^nn\log b)\)

#include <bits/stdc++.h>
#define F(i,x,y) for(int i=(x);i<=(y);i++)
#define DF(i,x,y) for(int i=(x);i>=(y);i--)
#define ms(x,y) memset(x,y,sizeof(x))
#define SZ(x) (int)x.size()-1
#define pb push_back
#define int long long
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
typedef pair<int,int> pii;
template<typename T> void chkmax(T &x,T y){ x=max(x,y);}
template<typename T> void chkmin(T &x,T y){ x=min(x,y);}
inline int read(){
    int FF=0,RR=1;
    char ch=getchar();
    for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;
    for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;
    return FF*RR;
}
const int N=16,P=998244353;
int n,m,f[1<<N],mi[1<<N],coef[N],a[N],b[N],t[N];
int qmi(int a,int b){
    int res=1;
    for(;b;b>>=1){ if(b&1) res=1ll*res*a%P;a=1ll*a*a%P;}
    return res;
}
signed main(){
    n=read(),m=read();
    F(i,0,n-1){
        a[i]=read(),b[i]=read();b[i]++;
        coef[i]=P-qmi(a[i],b[i]);
    }
    F(S,0,(1<<n)-1){
        f[S]=1;
        F(i,0,n-1) if(S>>i&1) f[S]=1ll*f[S]*coef[i]%P,mi[S]+=b[i];
    }
    F(i,0,n-1){
        int x=qmi(a[i],P-2);t[i]=1;
        F(j,0,n-1) if(i!=j) t[i]=1ll*t[i]*(P+1-a[j]*x%P)%P;
        t[i]=qmi(t[i],P-2);
    }
    int ans=0;
    F(S,0,(1<<n)-1) if(m>=mi[S]) F(i,0,n-1) ans=(ans+f[S]*t[i]%P*qmi(a[i],m-mi[S]))%P;
    printf("%lld\n",ans);
    fprintf(stderr,"%d ms\n",int64_t(1e3*clock()/CLOCKS_PER_SEC));
    return 0;
}

标签:ix,limits,int,题解,sum,ABC241Ex,Score,ans,prod
From: https://www.cnblogs.com/Farmer-djx/p/17890671.html

相关文章

  • 【洛谷 P2670】[NOIP2015 普及组] 扫雷游戏 题解(模拟)
    [NOIP2015普及组]扫雷游戏题目背景NOIP2015普及组T2题目描述扫雷游戏是一款十分经典的单机小游戏。在行列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的......
  • P1024 [NOIP2001 提高组] 一元三次方程求解( 普及- ) 题解
    题目传送门思路:1可以直接暴力2二分搜索答案3盛金公式一元三次方程:\(ax^3+cx^2+d=0\)重根判别公式:\(A=b^2-3ac\)\(B=bc-9ad\)\(C=c^2-3bd\)当\(A=B=0\)时,\(X1=X2=X3=-b/3a=-c/b=-3d/c\)4牛顿迭代法:对于一个已知的x值,每一次根据函数在这一点的导数,把x移动到,切......
  • T404546 亮亮的玫瑰问题 2 题解
    再次被初中的自己搏杀,想到网络流去了LinkT404546亮亮的玫瑰问题2Question有\(n\)种花,第\(i\)种花有\(a_i\)个,求需要摆\(m\)朵花的方案数Solution定义\(F[i][j]\)表示前\(i\)种花,已经摆了\(j\)个的方案数枚举第\(i\)种花需要摆多少个\(k\)所以\(F[i][j......
  • [ARC164E] Segment-Tree Optimization 题解
    题目链接题目链接题目解法一个自认为比较自然的解法这种一段序列切成两部分的问题首先考虑区间\(dp\)令\(f_{l,r}\)为\([l,r]\)能构成的最小深度,\(g_{l,r}\)为在\(f_{l,r}\)最小的情况下最少的最大深度的点的个数转移枚举\(k\)即可需要在下面是叶子的时候处理一......
  • 2023.12.7 挑战杯题解
    选择题T1有序实数对即为数,坐标系中的点\(P\)即为形。故选择A。T2\(9.46\times10^{12}=9460000000000\)为\(13\)位数所以选D。T3如图所示,过点\(D\)作\(DE\botAB\),设\(AE=x\),在\(Rt\DeltaADE\)中利用勾股定理列方程为\((x-1)^2+10^2=x^2\),解得\(x=\frac{101}{2......
  • PTA-2023第十二次练习题目题解
    PTA-2023第十二次练习题目题解(祝大家机考顺利)以下代码已做防抄袭处理,切勿抄袭。注意:手机端因为屏幕限制,代码会有(不希望的)换行。解决方案:1.建议使用电脑端打开。2.点击代码进入全屏观看。6-24实验8_3_设计函数利用冒泡排序的思想,将每一列的最小值放到每列的最后一个位置。voi......
  • [AGC049D] Convex Sequence 题解
    题目链接点击打开链接题目解法好题!!考虑原题的限制相当于原序列下凸,即差分数组单调考虑把原序列在第一个最小值处割成\(2\)半因为原序列是凸的,所以非最小值的长度是\(\sqrt{2m}\)级别的这可以让我们\(dp\)差分数组,即求满足\(\sum\limits_{i=1}^{n'}ib_i=m'\)的\(b......
  • [ARC165E] Random Isolation 题解
    题目链接点击打开链接题目解法略有些套路的概率题,不过中间的把操作序列看成排列的操作还是很妙的首先套路的考虑期望的线性性,有两个方式:把贡献放在点上或点集上,这里采用后面的方式做对于每一个树上的集合\(S\),假设大小为\(n\),相邻的点为\(m\)考虑这个集合独立的限制为:相......
  • Emiya今天的饭 题解
    题目考虑条件主要食材最大的不超过总菜数的一半,不好处理,但存在主要食材最大的超过总菜数的一半是好处理的,容斥即可。首先计算所有情况,由于题目要求每个烹饪方式最多使用一次,很明显可以记\(g_i\)表示前\(i\)种烹饪方式的方案数。\[g_i=g_{i-1}+g_{i-1}\times\sum_{j=1}^......
  • 虚拟机运行Hadoop | 各种问题解决的心路历程
    ps:完成大数据技术实验报告的过程,出项各种稀奇古怪的问题。(知道这叫什么吗?经济基础决定上层建筑,我当时配置可能留下了一堆隐患,总之如果有同样的问题,希望可以帮到你)一、虚拟机网络连接不通的各种情况我这里遇到的是,三台虚拟机,两台piing百度不同原因:改了下内存,重启就又未知的网......