当前位置: 首页 > news >正文

架设网站的目的网页游戏网站556pk游戏福利平台

架设网站的目的,网页游戏网站556pk游戏福利平台,下载了字体怎么安装到wordpress,asp.net做三个网站CF1784D Wooden Spoon 题目大意 有2n2^n2n个人,进行nnn轮比赛。比赛的图是一棵完全二叉树。编号小的人一定能赢编号大的人,如果一个人满足: 第一次比赛被打败打败这个人的人在第二次比赛中被打败打败上一个人的人在第三次比赛中被打败…\d…

CF1784D Wooden Spoon

题目大意

2n2^n2n个人,进行nnn轮比赛。比赛的图是一棵完全二叉树。编号小的人一定能赢编号大的人,如果一个人满足:

  • 第一次比赛被打败
  • 打败这个人的人在第二次比赛中被打败
  • 打败上一个人的人在第三次比赛中被打败
  • …\dots
  • 打败上一个人的人在最后一次比赛中被打败

那么这个人就能得到安慰奖。

求对于每个人,有多少种编号的排列来比赛(叶子的排列),使得他能得安慰奖。输出答案模998244353998244353998244353


题解

我们按照题意来构建这棵二叉树,叶子节点就是这个序列,而非叶子节点的权值就是其子树中权值最大的点的权值。假如编号为kkk的点能拿安慰奖,那么这个点到根的路径上的点的权值一定是单调递减的。

假设这个点到根的权值组成的序列为a0,a1…,ana_0,a_1\dots,a_na0,a1,an,我们依次来看每个点的贡献。

aia_iai的贡献为C(2n−ai−2i−1,2i−1−1)×(2i−1)!C(2^n-a_i-2^{i-1},2^{i-1}-1)\times (2^{i-1})!C(2nai2i1,2i11)×(2i1)!。也就是说,这个点在没有kkk的那棵子树中还要放小于他的2i−1−12^{i-1}-12i11个点。因为要小于aia_iai,而且自己是一定要选的,所以要减aia_iai。又因为有kkk的那一边的点不能选,所以要减2i−12^{i-1}2i1。这棵子树内的点的顺序可以任意排列,所以要乘上(2i−1)!(2^{i-1})!(2i1)!

fi,sf_{i,s}fi,s表示第iii个数为sss时第iii个数到第nnn个数的贡献,gi,sg_{i,s}gi,s表示第iii个数小于等于sss时第iii个数到第nnn个数的贡献和。那么转移式为

fi,s=gi+1,s−1×C(2n−s−2i−1,2i−1−1)×(2i−1)!f_{i,s}=g_{i+1,s-1}\times C(2^n-s-2^{i-1},2^{i-1}-1)\times (2^{i-1})!fi,s=gi+1,s1×C(2ns2i1,2i11)×(2i1)!

gi,s=gi,s−1+fi,sg_{i,s}=g_{i,s-1}+f_{i,s}gi,s=gi,s1+fi,s

因为kkk的位置任意,所以最后还要乘上2n2^n2n。那么编号为kkk的点的答案就是g1,k−1×2ng_{1,k-1}\times 2^ng1,k1×2n

时间复杂度为O(n×2n)O(n\times 2^n)O(n×2n)

code

#include<bits/stdc++.h>
using namespace std;
const int N=1<<20;
int n;
long long jc[N+5],ny[N+5];
long long f[25][N+5],g[25][N+5];
long long mod=998244353;
long long mi(long long t,long long v){if(!v) return 1;long long re=mi(t,v/2);re=re*re%mod;if(v&1) re=re*t%mod;return re;
}
void init(){jc[0]=1;for(int i=1;i<=N;i++) jc[i]=jc[i-1]*i%mod;ny[N]=mi(jc[N],mod-2);for(int i=N-1;i>=0;i--) ny[i]=ny[i+1]*(i+1)%mod;
}
long long C(int x,int y){if(x<y) return 0;return jc[x]*ny[y]%mod*ny[x-y]%mod; 
}
int main()
{init();scanf("%d",&n);for(int s=1;s<=(1<<n);s++){f[n][s]=C((1<<n)-s-(1<<n-1),(1<<n-1)-1)*jc[1<<n-1]%mod;g[n][s]=(g[n][s-1]+f[n][s])%mod;}for(int i=n-1;i>=1;i--){for(int s=1;s<=(1<<n);s++){f[i][s]=g[i+1][s-1]*C((1<<n)-s-(1<<i-1),(1<<i-1)-1)%mod*jc[1<<i-1]%mod;g[i][s]=(g[i][s-1]+f[i][s])%mod;}}for(int s=1;s<=(1<<n);s++){printf("%lld\n",g[1][s-1]*(1<<n)%mod);}return 0;
}
http://www.yayakq.cn/news/777936/

相关文章:

  • 网站建设logo尺寸开平做网站
  • 网站建设企业官网体验版是什么wordpress优缺点
  • 小说网站怎么推广东莞专业做外贸网站
  • 南通网站优建设莱芜吧贴吧
  • 个人网站想添加支付功能怎么做html5 微网站布局
  • 青岛低价网站建设海南高端建设网站
  • 虚拟主机网站后台wordpress4 sqlite
  • 网站自己怎么做优化优化关键词的方法
  • 大连龙采做网站行不行豪禾创意海报设计理念
  • 龙岩做网站开发大概价格泰州seo推广
  • 企业网站源码 企业网站管理系统广州购物网站设计
  • 广东建设信息网站首页6河南建筑公司实力排名
  • 商城型企业网站的功能做签到的网站
  • 世界网站流量排名给新公司建网站
  • 南京培训网站建设wordpress登录去不了后台
  • 温州哪家做网站国外网站设计模板
  • 网站建设与管理实训心得体会城口自助建站
  • 网站切图怎么切wordpress主题 tao
  • 网站名称需要用注册吗深圳宝安网站建设工
  • 网站建设制作哪家好电子商务网站开发基本流程图
  • 网站关键词突然搜不到dplayer wordpress
  • 安平丝网网站建设建设网站杭州
  • 营销网站与企业网站的区别网站是用什么技术做的
  • 长沙河西做网站东莞网站设计与制作公司
  • 个人做的好的淘宝客网站wordpress安装php5.4
  • 两学一做知识竞答网站视频网站视频预览怎么做的
  • 做视频网站需要哪些技术指标合肥公司建设网站首页
  • 男女直接做网站宁波网站建设多少钱一个
  • 网站建设活动方案如何让WordPress上传媒体
  • 网站动画用什么做的wordpress discuz 整合