[NOIP2021] 数列(计数dp)

solution

f[i][j][k][num][p]:2pf[i][j][k][num][p]:2^pf[i][j][k][num][p]:2p 选择了 iii 个,前 p−1p-1p1(202p−1)(2^0~2^{p-1})(20 2p1) 已经选了jjj个,低位向高位进位上来 kkk,前 ppp 位已经确定有 numnumnum 个位置为 111,所有的情况和

g[j][k][num][p]:g[j][k][num][p]:g[j][k][num][p]:p−1p-1p1 位一共选了 jjj 个数,向 ppp 位进了 kkk,前 p−1p-1p1 位一共确定有 numnumnum 个位置为 111,所有的情况和

考虑彼此转移更新
f[i][j][k][num][p]=g[j][k][num−(i+k)%2][p]∗C(n−j,i)∗(v[p])if[i][j][k][num][p] = g[j][k][num-(i+k)\%2][p]*C(n-j,i)*(v[p])^if[i][j][k][num][p]=g[j][k][num(i+k)%2][p]C(nj,i)(v[p])ig[i+j][(i+k)/2][num][p+1]+=f[i][j][k][num][p]g[i+j][(i+k)/2][num][p+1] += f[i][j][k][num][p]g[i+j][(i+k)/2][num][p+1]+=f[i][j][k][num][p]

code

#include <cstdio>
#define maxn 35
#define maxm 105
#define mod 998244353
int N, M, K;
int v[maxm], fac[maxn], inv[maxn];
int Pow[maxm][maxn];
int g[maxn][maxn][maxn][maxm];
int f[maxn][maxn][maxn][maxn][maxm];int qkpow( int x, int y ) {int ans = 1;while( y ) {if( y & 1 ) ans = 1ll * ans * x % mod;x = 1ll * x * x % mod;y >>= 1;}return ans;
}void init() {fac[0] = inv[0] = 1;for( int i = 1;i <= N;i ++ ) fac[i] = 1ll * fac[i - 1] * i % mod;inv[N] = qkpow( fac[N], mod - 2 );for( int i = N - 1;i;i -- ) inv[i] = 1ll * inv[i + 1] * ( i + 1 ) % mod;
}int C( int n, int m ) { return 1ll * fac[n] * inv[m] % mod * inv[n - m] % mod; }int main() {scanf( "%d %d %d", &N, &M, &K );init();for( int i = 0;i <= M;i ++ ) {scanf( "%d", &v[i] );Pow[i][0] = 1;for( int j = 1;j <= N;j ++ ) Pow[i][j] = 1ll * Pow[i][j - 1] * v[i] % mod;}g[0][0][0][0] = 1;for( int p = 0;p <= M;p ++ )for( int i = 0;i <= N;i ++ )for( int j = 0;j <= N - i;j ++ )for( int k = 0;k <= N;k ++ )for( int num = 0;num <= K;num ++ ) {if( num - ( i + k ) % 2 < 0 ) continue;f[i][j][k][num][p] = 1ll * g[j][k][num - (i + k) % 2][p] * Pow[p][i] % mod * C( N - j, i ) % mod;g[i + j][(i + k) / 2][num][p + 1] = ( g[i + j][(i + k) / 2][num][p + 1] + f[i][j][k][num][p] ) % mod;}int ans = 0;for( int i = 0;i <= N;i ++ ) for( int k = 0;k <= N;k ++ )for( int num = 0;num <= K;num ++ )if( num + __builtin_popcount( ( i + k ) / 2 ) > K ) break;else ans = ( 1ll * ans + f[i][N - i][k][num][M] ) % mod;printf( "%d\n", ans );return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xor sum HDU - 6955

Xor sum HDU - 6955 题意&#xff1a; 给定一个长度为n的整数序列&#xff0c;求其XOR和不小于k的最短连续子序列。 如果有多个相同长度的连续子序列&#xff0c;则打印具有最小左端点的连续子序列。 如果没有连续的子序列开关XOR总和不小于k&#xff0c;只需打印“-1”。 …

模板:子序列自动机(字符串)

所谓子序列自动机&#xff0c;就是根据子序列建立的自动机。 &#xff08;逃&#xff09; 前言 小清新算法。 解析 和其他自动机类似的&#xff0c;我们希望子序列自动机能且只能接受原串的所有子序列。 考虑一个问题&#xff1a;给你一个串 T&#xff0c;如何判断它是否是…

Docker最全教程之Go实战,墙裂推荐(十九)

前言与其他语言相比&#xff0c;Go非常值得推荐和学习&#xff0c;真香&#xff01;为什么&#xff1f;主要是可以直接编译成机器代码&#xff08;性能优越&#xff0c;体积非常小&#xff0c;可达10来M&#xff0c;见实践教程图片&#xff09;而且设计良好&#xff0c;上手门槛…

[BZOJ3093][Fdu校赛2012] A Famous Game(不等概率)

problem BOZJ3093 solution 逆概率公式&#xff0c;即贝叶斯(Bayes)公式&#xff1a; 假设 B1,B2,...,BnB_1,B_2,...,B_nB1​,B2​,...,Bn​ 是 Ω\OmegaΩ 的一个分割&#xff0c;P(A)>0P(A)>0P(A)>0&#xff0c;则有 P(Bk∣A)P(ABk)P(A)P(Bk)P(A∣Bk)∑i1nP(Bi)…

Mod, Or and Everything HDU - 6950

Mod, Or and Everything HDU - 6950 题意&#xff1a; 给你一个n,问(n%1) or (n%2) or … or (n %n)的值 题解&#xff1a; 无论n为奇偶&#xff0c;定义m(n-1)/2&#xff0c; 我们发现n mod i<m&#xff0c;而当i<m时&#xff0c;有n mod (n-i) i ,于是就有n mod i …

你注意到 .Net Framework 和 .Net Core 中使用 Session 的区别了吗?

在测试一个例子时发现的问题&#xff0c;这个示例实现的功能是刷新页面也能保持表格锁定列的状态&#xff0c;先看下页面的完成效果&#xff1a;测试中发现&#xff0c;几乎相同的代码&#xff1a;在 FineUIMvc&#xff08;Net Framework&#xff09;下没有问题&#xff1a;htt…

模板:拉格朗日乘子法(数学)

所谓拉格朗日乘子法&#xff0c;就是拉格朗日发明的乘子法。 &#xff08;逃&#xff09; 前言 曾经&#xff0c;我被它爆杀&#xff1b;如今&#xff0c;不同的日子&#xff0c;同样的题目&#xff0c;我却不再是曾经的我了。 因为我写模拟退火了。 也不能老是这么混着&…

[UOJ299][CTSC2017] 游戏

【CTSC2017】游戏 problem UOJ299 solution 定义 Xi:X_i:Xi​: 当前已知条件第 iii 局的状态 1/01/01/0&#xff08;胜/败&#xff09;。 将 XiCiX_iC_iXi​Ci​ 记为事件 AiA_iAi​。 假设现在已知条件共有 sss 个&#xff0c;即&#xff1a;第 k1∼sk_{1\sim s}k1∼s​…

Alice and Bob

Alice and Bob 题意&#xff1a; 两人博弈&#xff0c;每次一个人从一堆中拿k个&#xff0c;同时从另一堆拿k * s(s>0)个&#xff0c;问谁先不能拿 10000组数据,N<5000 题解&#xff1a; (x,y)表示第一堆石头数量为x&#xff0c;第二堆为y 如果(x,y)是必败状态&#…

一键发布部署vs插件[AntDeploy]开源了

deploy to remote server by one button click功能支持docker一键部署(支持netcore)支持iis一键部署(支持netcore和framework)(支持增量发布)(支持一键回滚)(支持点火)支持windows服务一键部署(支持netcore和framework)(支持增量发布)(支持一键回滚) 使用插件前我要发布一个net…

CF1257F Make Them Similar(meet in the middle,模拟退火)

前言 sto 退火大师_slb orz sto 正解大师_KHIN orz 只有我啥也不会&#xff0c;哈哈。 有趣的是&#xff0c;两种方法我都想到了一部分&#xff0c;然后都寄掉了。 这有趣个锤子。 解析 Sol1 考虑枚举最终的popcount&#xff0c;然后限制就变成了一个类似于高斯消元的形式…

Find 3-friendly Integers

Find 3-friendly Integers 题意&#xff1a; 定义一个自然数是精妙的&#xff0c;如果他存在一个字串(允许前导0)是3的倍数 问L到R中精妙的数的个数 题解&#xff1a; 数位dp可以做(但我不会。。。) 用结论来做&#xff0c;当n>100时(即为3位数时)必然是精妙的数&#x…

【学习笔记】平等博弈及常见的公平博弈类型

文章目录平等博弈nim堆SG定理nim和常见的公平博弈模型bash博弈nim博弈nim-k博弈wythoff博弈扩展wythoff博弈fibonacci博弈阶梯博弈green hackenbushMisre Nim博弈Every-SGnim积翻棋子游戏游戏的积&#xff0c;tartan定理平等博弈 G{L∣R},LRG\{L|R\},LRG{L∣R},LR&#xff0c;所…

Excel催化剂开源第31波-pdf相关功能实现及类库介绍

在Excel催化剂刚推出的pdf相关功能中&#xff0c;反馈很热烈&#xff0c;不止是用户层面好多人喜欢&#xff0c;也听到在.NET开发群里有询问pdf在winform上展现的功能诉求&#xff0c;一段时间没写开源篇&#xff0c;生怕大家以为Excel催化剂太小气了&#xff0c;不再开发了&am…

CF1526D Kill Anton(暴力)

前言 我的证明&#xff1a;这似乎非常对啊。 。。。 解析 直观感受&#xff1a;字母交错出现非常愚蠢。 然后就猜对了 为什么&#xff1f; 考虑两个相同但不相邻的字符 Ti,TjT_i,T_jTi​,Tj​&#xff0c;对应位置为 pi,pjp_i,p_jpi​,pj​。 夹在中间的字符 kkk 无非三种可…

Minimum spanning tree HDU - 6954

Minimum spanning tree HDU - 6954 题意&#xff1a; 给定n-1个点&#xff0c;编号从2到n&#xff0c;两点a和b之间的边权重为lcm&#xff08;a&#xff0c;b&#xff09;。请找出它们形成的最小生成树。 2<n<10000000 题解&#xff1a; 这题一看就眼熟。。。这不是去…

[小技巧]ASP.NET Core中如何预压缩静态文件

原文地址&#xff1a;Pre-compressed static files with ASP.NET Core作者&#xff1a;Gunnar Peipman译者&#xff1a;Lamond Lu译文&#xff1a;https://www.cnblogs.com/lwqlun/p/10552131.html示例代码&#xff1a;https://github.com/lamondlu/CompressedStaticFileSample…

CF1494F Delete The Edges(欧拉回路)

前言 走远了走远了… 一直在想翻转一条链的奇偶性怎么做&#xff0c;但没有意识到最后一定是个菊花。 解析 一状态就是走一个欧拉回路&#xff0c;合法性更容易刻画&#xff0c;所以考虑反过来想&#xff0c;如何用状态二的走法删去一些边&#xff0c;使得剩下的图存在欧拉路…

【学习笔记】简单的连通性状压DP——插头DP(不学以为是天书)

文章目录哈希链表插头DP概念括号表示法 / 最小表示法例题洛谷插头dp板题CITYParkIITonys TourEfficient Tree[CQOI2015]标识设计哈希链表 众所周知&#xff0c;哈希是有冲突的可能性的&#xff0c;而且在状态数越多&#xff0c;冲突的概率就越高。目前掌握的处理方案有多哈希&…

H - Maximal submatrix HDU - 6957

H - Maximal submatrix HDU - 6957 题意&#xff1a; 给定一个n行m列的矩阵&#xff0c;求每列上面积不减的最大子矩阵 对于每个测试用例&#xff0c;打印一个表示最大子矩阵的整数 题解&#xff1a; 要求求一个最大面积的满足每列非递减的矩阵&#xff0c;这怎么想&#…