不言而喻

news/2024/9/28 17:20:25

涛哥说你打代码原来有注释吗?

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<vector>
#include<string.h>
#define int long long
#define ll long long
using namespace std;
const int N=45,mod=998244353;
ll n,K,p,F[N][N][N],G[N][N][N][N],S[N],I[N];
inline void A(ll &x,ll y){x+=y;if(x>=mod) x-=mod;}
inline ll ksm(ll a,int b=mod-2)
{ll ans=1;for(;b;b>>=1,a=a*a%mod)if(b&1) ans=ans*a%mod;return ans;
}
signed main()
{freopen("dia.in","r",stdin);freopen("dia.out","w",stdout);cin>>n>>K>>p,F[1][1][1]=1;for(int i=1;i<=n;++i) I[i]=ksm(i);for(int d=2;d<=K/2+1;++d)//枚举深度{ll f[N][N][N];memset(f,0,sizeof(f));f[0][1][0]=1;for(int k=1;k<n;++k)//枚举转移大小 (限制最大深度 d-2){for(int c=1;c<=min(n/k,S[k]);++c)//枚举同一大小选几种{for(int x=1;x<=n/k;++x)//枚举这一种选几个{for(int s=n;s>=x*k;--s)//枚举现在大小{A(f[c][s][0],f[c-1][s-x*k][0]*(S[k]-c+1)%mod*I[c]%mod);}} }for(int c=1;c<=min(n/k,S[k]);++c) for(int s=1;s<=n;++s)A(f[0][s][0],f[c][s][0]),f[c][s][0]=0;}if(d==K/2+1&&(K&1^1)){for(int s=0;s<=n;++s) G[0][s][0][0]=f[0][s][0];break;}for(int k=d-1;k<n;++k)//枚举转移大小(限制深度为 d-1){for(int y=1;y<=k;++y)//枚举关键叶子个数{for(int c=1;c<=min(n/k,F[d-1][k][y]);++c)//枚举同一大小同一关键叶子个数选几种{for(int x=1;x<=n/k;++x)//枚举这一种选几个{for(int s=n;s>=x*k;--s)//枚举现在大小{for(int z=s;z>=x*y;--z)//枚举现在关键叶子个数{A(f[c][s][z],f[c-1][s-x*k][z-x*y]*(F[d-1][k][y]-c+1)%mod*I[c]%mod);}}}}for(int c=1;c<=min(n/k,F[d-1][k][y]);++c) for(int s=1;s<=n;++s) for(int z=1;z<=s;++z)A(f[0][s][z],f[c][s][z]),f[c][s][z]=0;}}for(int s=1;s<=n;++s) for(int z=1;z<=s;++z) F[d][s][z]=f[0][s][z];for(int s=1;s<=n;++s) for(int z=1;z<=s;++z) A(S[s],F[d-1][s][z]);}int d=K/2+1;if(K&1){ll ans=0;for(int k1=1;k1<=n;++k1){for(int y1=1;y1<=k1;++y1){if(p%y1) continue;int k2=n-k1,y2=p/y1;if(k2<k1||(k2==k1&&y2<y1)) continue;ans+=F[d][k1][y1]*F[d][k2][y2]%mod*I[1+(k1==k2&&y1==y2)]%mod;}}cout<<ans%mod<<'\n';return 0;}for(int k=d-1;k<n;++k)//枚举转移大小(限制深度为 d-1){for(int y=1;y<=k;++y)//枚举关键叶子个数{for(int c=1;c<=min(n/k,F[d-1][k][y]);++c)//枚举同一大小同一关键叶子个数选几种{for(int x=1;x<=n/k;++x)//枚举这一种选几个{for(int s=n;s>=x*k;--s)//枚举现在大小{for(int z=s-x*y;z>=0;--z)//枚举转移前关键叶子个数{for(int a=p-(z*x*y+(y*y*x*(x-1)/2));a>=0;--a)//枚举转移前直径个数{A(G[c][s][z+x*y][a+z*x*y+(y*y*x*(x-1)/2)],G[c-1][s-x*k][z][a]*(F[d-1][k][y]-c+1)%mod*I[c]%mod);}}}}}for(int c=1;c<=min(n/k,F[d-1][k][y]);++c) for(int s=1;s<=n;++s) for(int z=1;z<=s;++z) for(int a=0;a<=p;++a)A(G[0][s][z][a],G[c][s][z][a]),G[c][s][z][a]=0;}}ll ans=0;for(int i=1;i<=n;++i) ans+=G[0][n][i][p];cout<<ans%mod<<'\n';return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

昆明理工大学计算机考研专业课答题卡

--昆工昆明理工大学、计算机技术、人工智能、软件工程、网络空间安全、891计算机专业核心综合、计算机系统结构、计算机软件与理论、网络与信息安全、计算机应用技术、综合程序设计

BUUCTF(PWN)- rip

BUUCTF(PWN)- rip 打开题目得到靶机信息: node5.buuoj.cn:29045 和附件 pwn1查看文件信息为 64-bit ,用 ida 打开附件 首先 shift+f12 查找字符串,能看见 system、/bin/sh 字样,点击 please input 或者 ok,bye!!! 跳转直接进入 main 函数查看gets 并没有限制输入,gets 函…

Springboot实战——黑马点评之秒杀优化

Springboot实战——黑马点评之 秒杀优化 1 秒杀优化 先来复习以下,秒杀优惠券业务的现有实现逻辑:以上流程图中的操作串行执行,效率极低。 其中 判断秒杀库存 以及 校验一人一单 属于对数据库的读取,耗时较少;扣减库存 以及 创建订单 属于对数据库的写操作,耗时相对较久。…

PARTVI-Oracle数据库管理与开发-数据库管理员的概念

18. 数据库管理员的概念 18.1. 数据库管理员的职责 数据库管理员(DBA)的主要责任是使企业数据对其用户可用。DBA必须与开发人员紧密合作,确保他们的应用程序有效地使用数据库,并与系统管理员合作,确保物理资源充足且使用高效。Oracle DBA负责了解Oracle数据库架构以及数据…

实验作业1

实验一 任务一 源代码#include<stdio.h> int main() {printf(" o \n");printf("<H>\n");printf("I I\n");printf(" o \n");printf("<H>\n");printf("I I\n");return 0; }效果 源代码#incl…

01. 感知层环境安装

1. 软件以及驱动的安装安装ZigBee无线网络节点开发平台 IAR Embedded Workbench(简称EW) 安装串口驱动(CH340芯片)。点击安装64位的。后续就可以使用串口对开发板进行调试。 仿真器驱动程序(用来烧录代码)的安装。 安装串口工具(XCOM)。2. IAR创建工程打开安装的IAR软件,点击…

黑马PM-内容项目-需求分析

需求分析的定义需求分析的时机需求分析的步骤

带笔TP gt9xx调试

一.添加驱动把供应商提供的驱动替换掉sdk里面默认的驱动drivers/input/touchscreen/gt9xx 二.dts配置:&i2c3 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&i2c3m0_xfer>;gt9xx: gt9xx@5d {compatible = "goodix,gt9xx&q…