首页 > 其他分享 >洛谷 P6620 [省选联考 2020 A 卷] 组合数问题

洛谷 P6620 [省选联考 2020 A 卷] 组合数问题

时间:2023-07-09 14:45:32浏览次数:55  
标签:typedef ll 洛谷 limits 省选 sum times binom 联考

洛谷传送门

记一下是怎么推的。

\[\sum\limits_{k = 0}^n f(k) \times x^k \times \binom{n}{k} \]

\[= \sum\limits_{p = 0}^m \sum\limits_{k = 0}^n a_p k^p \times x^k \times \binom{n}{k} \]

\[= \sum\limits_{p = 0}^m \sum\limits_{k = 0}^n x^k \times \binom{n}{k} \times a_p \times \sum\limits_{i = 0}^k {p \brace i} \binom{k}{i} i! \]

\[= \sum\limits_{p = 0}^m a_p \times \sum\limits_{i = 0}^p {p \brace i} i! \times \sum\limits_{k = i}^n \binom{n}{k} \binom{k}{i} \times x^k \]

\[= \sum\limits_{p = 0}^m a_p \times \sum\limits_{i = 0}^p {p \brace i} i! \times x^i \times \binom{n}{i} \times \sum\limits_{k = 0}^{n - i} \binom{n - i}{k} \times x^k \]

\[= \sum\limits_{p = 0}^m a_p \times \sum\limits_{i = 0}^p {p \brace i} x^i \times n^{\underline i} \times (x + 1)^{n - i} \]

至此可在 \(O(m^2 \log n)\) 计算。

code
// Problem: P6620 [省选联考 2020 A 卷] 组合数问题
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P6620
// Memory Limit: 512 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>
#define pb emplace_back
#define fst first
#define scd second
#define mems(a, x) memset((a), (x), sizeof(a))

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
typedef pair<ll, ll> pii;

const int maxn = 1010;

ll n, m, X, mod, a[maxn], S[maxn][maxn], f[maxn];

inline ll qpow(ll b, ll p) {
	ll res = 1;
	while (p) {
		if (p & 1) {
			res = res * b % mod;
		}
		b = b * b % mod;
		p >>= 1;
	}
	return res;
}

void solve() {
	scanf("%lld%lld%lld%lld", &n, &X, &mod, &m);
	for (int i = 0; i <= m; ++i) {
		scanf("%lld", &a[i]);
	}
	S[0][0] = 1;
	for (int i = 1; i <= m; ++i) {
		for (int j = 1; j <= m; ++j) {
			S[i][j] = (S[i - 1][j - 1] + S[i - 1][j] * j % mod) % mod;
		}
	}
	f[0] = 1;
	for (int i = 1; i <= m; ++i) {
		f[i] = f[i - 1] * (n - i + 1) % mod;
	}
	ll ans = 0;
	for (int p = 0; p <= m; ++p) {
		ll res = 0;
		for (int i = 0; i <= p; ++i) {
			res = (res + S[p][i] * qpow(X, i) % mod * f[i] % mod * qpow((X + 1) % mod, n - i) % mod) % mod;
		}
		ans = (ans + res * a[p] % mod) % mod;
	}
	printf("%lld\n", ans);
}

int main() {
	int T = 1;
	// scanf("%d", &T);
	while (T--) {
		solve();
	}
	return 0;
}

标签:typedef,ll,洛谷,limits,省选,sum,times,binom,联考
From: https://www.cnblogs.com/zltzlt-blog/p/17538710.html

相关文章

  • 洛谷 P3378 【模板】堆
    siftup模板当然还得有siftdown模板“稍”加调试,就可以得到模板代码#include<bits/stdc++.h>usingnamespacestd;intn,op,sl=0,h[1000010];voidjh(intx,inty)//交换{intz=h[x];h[x]=h[y];h[y]=z;}voidsiftu(inti)//siftup{boolf=true;......
  • 洛谷题解——【模板】堆
    题目链接:【模板】堆【模板】堆题目描述给定一个数列,初始为空,请支持下面三种操作:给定一个整数\(x\),请将\(x\)加入到数列中。输出数列中最小的数。删除数列中最小的数(如果有多个数最小,只删除\(1\)个)。输入格式第一行是一个整数,表示操作的次数\(n\)。接下来\(n\)......
  • 洛谷P9025题解
    P9025题解简化题意求一个值\(c\)使得\[\sum_{i=1}^nw_i(\left|c-p_i\right|-d_i)\]最小化(注意题目中\(w_i\)表示每移动一米需要\(w_i\)秒)思路首先我们令选择\(c\)位置的总用时为\(f(c)\)显然,我们可以把它分成两边来看在\(c\)左边的人:\[f(c)=\sum_{p_i+d_......
  • 2023-03-24-CQ 2023 省选前考试记录
    Ihopeitwasenoughtobethewayyouarewheneverything'sfallingapart.2023-03-27我是......
  • 2023-03-24-CQ 2023 省选前复习记录
    伝えに来たよ傷跡を辿ってそれならもう恐れるものはないんだと.CF449D看来我确实只会做板题/kk。一个很naive的想法是定义\(dp_{i,x}\)表示当前到了第\(i\)位,与起来的值为\(x\)的方案数,显然这个做不下去,因为状态数会有重叠,并且这复杂度会爆。一个不那么naiv......
  • 2023-03-05-CQOI 2023 省选 游记
    心高气盛难免对自己抱有幻想。Before2023-04-01上接2023春测。以及停课时模拟赛复习。2023-04-01来得比较早,听游老师强调了一些低级错误,然后吴老师过来给我们打气。心理稍微稳了一点,合了影就去考场了。中途发生了一个小插曲,我以为桌子上写的是座位号,于是坐在了......
  • 洛谷CF29B题解
    CF29B交通信号灯传送门题目很好理解,这里就不多说了,思路都在代码里#include<bits/stdc++.h>usingnamespacestd;doublel,d,v,g,r;intmain(){ cout<<fixed<<setprecision(8);//重置输出方式(保留8位小数) cin>>l>>d>>v>>g>>r; if(l<=d)cout<<......
  • 洛谷 P1081 题解
    P1081[NOIP2012提高组]开车旅行题解Link洛谷题目链接Solution首先考虑这道题的暴力做法,对于第一问,枚举每个起始点,暴力计算每个点之后最近和第二近的位置,计算答案,最后取最大值。对于第二问,对每个询问独立模拟即可。复杂度较高,无法通过此题。第一个优化:考虑到对于固定的当......
  • 「解题报告」2023.7.1 洛谷7月月赛
    『XYGOIround1』三个数题目描述MX有一个有\((w-2)\)个数的集合\(S=\{3,4,5,\cdots,w\}\)。要求构造一个只包含非负整数的集合(无重复元素),使得\(S\)里面的任何一个数都能被这个集合里面大于等于\(3\)个不同的数相加得到,求这个集合中至少包含多少个元素。输入格式本题......
  • 洛谷P4178 Tree 题解 树上点分治
    题目链接:https://www.luogu.com.cn/problem/P4178解题思路:点分治模板题。设当前重心为\(u\),一共有三种不同类型的路径:路径的一个端点恰好是重心\(u\);路径的两个端点在\(u\)的不同子树中;路径的两个端点在\(u\)的同一个子树中。找到重心\(u\)之后,前两类路径分开求......