bzoj#4555. [Tjoi2016Heoi2016]求和

bzoj#4555. [Tjoi2016&Heoi2016]求和

题目描述

Solution

有一个关于第二类斯特林数的公式:
{nm}=1m!∑i(mk)(m−k)n(−1)k\left\{ \begin{aligned} n \\ m \end{aligned} \right\}= \frac{1}{m!}\sum_i \left ( \begin{aligned} m \\ k \end{aligned} \right )(m-k)^n(-1)^k {nm}=m!1i(mk)(mk)n(1)k
因此:
Ans=∑i=0n∑j=0i∑k=0j(jk)(j−k)i(−1)k2jAns=\sum_{i=0}^n\sum_{j=0}^i\sum_{k=0}^j\tbinom{j}{k}(j-k)^i(-1)^k2^j Ans=i=0nj=0ik=0j(kj)(jk)i(1)k2j
进一步的:
Ans=∑j2jj!∑k∑i(−1)kk!(j−k)i(j−k)!Ans=\sum_{j}2^jj!\sum_{k}\sum_{i}\frac{(-1)^k}{k!}\frac{(j-k)^i}{(j-k)!} Ans=j2jj!kik!(1)k(jk)!(jk)i
发现后面就是一个卷积形式。
直接NumberTheoreticTransformNumber\;\;Theoretic\;\;TransformNumberTheoreticTransform计算即可。

时间复杂度O(nlgn)O(nlgn)O(nlgn)

Code

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <cassert>
#include <string.h>
//#include <unordered_set>
//#include <unordered_map>
//#include <bits/stdc++.h>#define MP(A,B) make_pair(A,B)
#define PB(A) push_back(A)
#define SIZE(A) ((int)A.size())
#define LEN(A) ((int)A.length())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define fi first
#define se secondusing namespace std;template<typename T>inline bool upmin(T &x,T y) { return y<x?x=y,1:0; }
template<typename T>inline bool upmax(T &x,T y) { return x<y?x=y,1:0; }typedef long long ll;
typedef unsigned long long ull;
typedef long double lod;
typedef pair<int,int> PR;
typedef vector<int> VI;const lod eps=1e-11;
const lod pi=acos(-1);
const int oo=1<<30;
const ll loo=1ll<<62;
const int mods=998244353;
const int G=3;
const int Gi=(mods+1)/G;
const int MAXN=600005;
const int INF=0x3f3f3f3f;//1061109567
/*--------------------------------------------------------------------*/
inline int read()
{int f=1,x=0; char c=getchar();while (c<'0'||c>'9') { if (c=='-') f=-1; c=getchar(); }while (c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); }return x*f;
}
int f[MAXN],g[MAXN],rev[MAXN],fac[MAXN],Limit,L;
int upd(int x,int y) { return x+y>=mods?x+y-mods:x+y; }
int quick_pow(int x,int y)
{int ret=1;for (;y;y>>=1){if (y&1) ret=1ll*ret*x%mods;x=1ll*x*x%mods;}return ret;
}
void Number_Theoretic_Transform(int *A,int type)
{for (int i=0;i<Limit;i++) if (i<rev[i]) swap(A[i],A[rev[i]]);for (int mid=1;mid<Limit;mid<<=1){int Wn=quick_pow(type==1?G:Gi,(mods-1)/(mid<<1));for (int j=0;j<Limit;j+=(mid<<1))for (int k=j,w=1;k<j+mid;w=1ll*w*Wn%mods,k++){int x=A[k],y=1ll*w*A[k+mid]%mods;A[k]=upd(x,y),A[k+mid]=upd(x,mods-y);}}if (type==-1)for (int inv=quick_pow(Limit,mods-2),i=0;i<Limit;i++) A[i]=1ll*A[i]*inv%mods;			
}
int main()
{int n=read();fac[0]=1;for (int i=1;i<=n;i++) fac[i]=1ll*fac[i-1]*i%mods;f[n]=quick_pow(fac[n],mods-2);for (int i=n-1;i>=0;i--) f[i]=1ll*f[i+1]*(i+1)%mods;f[0]=g[0]=1,f[1]=n+1,g[1]=mods-1;for (int i=2;i<=n;i++) {g[i]=(i&1)?mods-f[i]:f[i]; f[i]=1ll*upd(quick_pow(i,n+1),mods-1)*quick_pow(i-1,mods-2)%mods*f[i]%mods;}Limit=1,L=0;while (Limit<=n<<1) Limit<<=1,L++;for (int i=0;i<Limit;i++) rev[i]=(rev[i>>1]>>1)|((i&1)<<(L-1));Number_Theoretic_Transform(f,1);Number_Theoretic_Transform(g,1);for (int i=0;i<Limit;i++) f[i]=1ll*f[i]*g[i]%mods;Number_Theoretic_Transform(f,-1);//	for (int i=0;i<=n;i++) cout<<i<<" "<<f[i]<<endl;int ans=0;for (int i=0,t=1;i<=n;i++,t=upd(t,t)) ans=upd(ans,1ll*fac[i]*t%mods*f[i]%mods);printf("%d\n",ans);return 0;
}

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

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

相关文章

记一次ORM的权衡和取舍

面对ORM的选型&#xff0c;有些人是根据自己熟悉程度来评判&#xff0c;有些人是根据他人的推荐来抉择&#xff0c;有些人觉得都差不多&#xff0c;随便了。当自己要真正做选择的时候&#xff0c;以上的这些依据都无法真正说服自己&#xff0c;因为不同的业务需求&#xff0c;不…

P5395 【模板】第二类斯特林数·行

P5395 【模板】第二类斯特林数行 题目描述 Solution 这题是[Tjoi2016&Heoi2016]求和的前置技能啊…… 我似乎直接跳过这题&#xff0c;去做应用了QAQQAQQAQ。 Code #include <vector> #include <list> #include <map> #include <set> #inclu…

出让执行权:Task.Yield, Dispatcher.Yield

一个耗时的任务&#xff0c;可以通过 Task.Yield 或者 Dispatcher.Yield 来中断以便分割成多个小的任务片段执行。Yield 这个词很有意思&#xff0c;叫做“屈服”“放弃”“让步”&#xff0c;字面意义上是让出当前任务的执行权&#xff0c;转而让其他任务可以插入执行。Task、…

HDU4372 Count the Buildings

HDU4372 Count the Buildings 题目描述 Solution 思路很妙。 考虑从最高的一个楼房将序列分开&#xff0c;左边可以看到FFF个&#xff0c;右边可以看到BBB个&#xff0c;一个楼房可以被看到&#xff0c;则一定是其之前没有比它高的楼房&#xff0c;其之后有若干个比它矮的楼…

VS Code 即将迎来再一次的 logo 更新!已可在 Insiders 版本尝鲜

为什么要说“再一次”&#xff1f; 相信 VS Code 的老用户都还记得两年前的 logo 更新风波吧。当时 VS Code 改了新 logo 之后&#xff0c;VS Code 的用户们一片哀嚎&#xff0c;纷纷觉得新 logo 太丑&#xff0c;在 GitHub 和各种社交媒体上各种吐槽&#xff01;不过幸运的是&…

CF961G Partitions

CF961G Partitions 题目描述 Solution 推式子&#xff1a; AnsAnsAns ∑wi∑s0n(n−1s−1){n−sk−1}\sum w_i\sum_{s0}^n\left ( \begin{aligned} n-1 \\ s-1 \end{aligned} \right ) \left\{ \begin{aligned} n-s \\ k-1 \end{aligned} \right\}∑wi​∑s0n​(n−1s−1​)…

从零开始在 Windows 上部署 .NET Core 到 Kubernetes

本章节所有代码已上传至&#xff1a;https://github.com/Seanwong933/.NET-Core-on-Kubernetes文末附有本人遇到过的 Docker 和 k8s 的故障排除。本文目标&#xff1a;带领大家在 Kubernetes 上部署一个 .NET Core Api 的单节点集群。后续文章会帮助大家继续深入。安装 Kuberne…

bzoj5093: [Lydsy1711月赛]图的价值

bzoj5093: [Lydsy1711月赛]图的价值 题目描述 Solution 考虑每一个点的贡献&#xff0c;枚举它的度数。 Ansn∗2(n−12)∑i1n−1(n−1i)∗ikAnsn*2^{\tbinom{n-1}{2}}\sum_{i1}^{n-1} \left( \begin{aligned} n-1 \\ i\;\;\; \end{aligned} \right)*i^kAnsn∗2(2n−1​)i1∑…

.NET Core微服务 权限系统+工作流(一)权限系统

一、前言实际上权限系统老早之前我就在一直开发&#xff0c;大概在刚毕业没多久就想一个人写一个系统&#xff0c;断断续续一直坚持到现在&#xff0c;毕竟自己亲动手自写的系统才有收获&#xff0c;本篇仅介绍权限。小小系统上不了台面&#xff0c;望各位大神勿喷。二、系统介…

bzoj#3456. 城市规划

bzoj#3456. 城市规划 题目描述 Solution 用组合意义推很简单。 iii个点的简单无向图个数为2(i2)2^{\tbinom{i}{2}}2(2i​)个。 则其EGFEGFEGF为 G(x)∑i>02(n2)i!xiG(x)\sum_{i>0}\frac{2^{\tbinom{n}{2}}}{i!}x^i G(x)i>0∑​i!2(2n​)​xi 令iii个点的简单无向连…

iNeuOS云操作系统,.NET Core全系打造

一.演示地址演示地址&#xff1a; 进入iNeuOS系统。&#xff08;建议使用chrome浏览器&#xff09;http://192.144.173.38:8081/login.html测试名称&#xff1a;admin测试密码&#xff1a;admin下载《iNeuOS云操作系统演示应用手册》 链接&#xff1a;https://pan.baidu.co…

译 | 你到底有多精通 C# ?

点击上方蓝字关注“汪宇杰博客”文&#xff1a;Damir Arh译&#xff1a;Edi Wang即使是具有良好 C# 技能的开发人员有时候也会编写可能会出现意外行为的代码。本文介绍了属于该类别的几个 C# 代码片段&#xff0c;并解释了令人惊讶的行为背后的原因。Null 值我们都知道&#xf…

uoj#422. 【集训队作业2018】小Z的礼物

uoj#422. 【集训队作业2018】小Z的礼物 题目描述 Solution 所有礼物全部取到的方案数并不好求&#xff0c;因此我们考虑min−maxmin-maxmin−max容斥&#xff0c;转化为第一次取到集合中某一个的期望时间。 令pn∗(m−1)m∗(n−1)pn*(m-1)m*(n-1)pn∗(m−1)m∗(n−1)表示有…

[开源] FreeSql AOP 功能模块 - FreeSql

FreeSql 是一个功能强大的 .NETStandard 库&#xff0c;用于对象关系映射程序(O/RM)&#xff0c;支持 .NETCore 2.1 或 .NETFramework 4.6.1&#xff08;QQ群&#xff1a;4336577&#xff09;。据了解&#xff0c;用户使用很少问问题&#xff0c;编码过程中&#xff0c;因业务阻…

Atcoder ARC062F - AtCoDeerくんとグラフ色塗り / Painting Graphs with AtCoDeer

Atcoder ARC062F - AtCoDeerくんとグラフ色塗り / Painting Graphs with AtCoDeer 题目描述 简要题意&#xff1a;给定一个有标号的无向图&#xff0c;你可以给每条边染上KKK种颜色之一&#xff0c;求本质不同的图的染色方案&#xff08;两个图本质不同定义为不能通过若干次环…

各大主流K8S服务全方位能力比对

大家好&#xff0c;趁打开流量主的东风&#xff0c;特此贡献一篇长文&#xff0c;分析一下目前国内国外几大著名云厂商的kubernetes服务&#xff0c;以飨诸君。文起之前&#xff0c;先聊态度。 我本人是十分看好k8s的发展的&#xff0c;为何&#xff1f; 理因古往今来&#xff…

CF868F Yet Another Minimization Problem

CF868F Yet Another Minimization Problem 题目描述 Solution 一开始可以很容易地写出一个dpdpdp式子&#xff1a; 设fi,jf_{i,j}fi,j​表示前iii个数分成jjj段的最小代价&#xff0c;有&#xff1a; fi,jmin⁡k1i−1fk,j−1Ck1,if_{i,j}\min_{k1}^{i-1}f_{k,j-1}C_{k1,i} f…

.NET Core 的Generic Host 之Generic Host Builder

通用Host(Generic Host) 与 web Host 不同的地方就是通用Host解耦了Http请求管道&#xff0c;使得通用Host拥有更广的应用场景。比如&#xff1a;消息收发、后台任务以及其他非http的工作负载。这些场景都可以通过使用通用Host拥有横切&#xff08;Cross-cutting&#xff09;的…

loj#2143. 「SHOI2017」组合数问题

loj#2143. 「SHOI2017」组合数问题 题目描述 Solution 考虑转化一下我们要求的东西。 ∑i0n(nkikr)∑i0n(nki)[i≡r(modk)]\sum_{i0}^{n}\binom{nk}{ikr}\sum_{i0}^{n}\binom{nk}{i}[i \equiv r \;\;(mod\;\;k)]∑i0n​(ikrnk​)∑i0n​(ink​)[i≡r(modk)] 这个式子是什么…

.NET Core微服务 权限系统+工作流(二)工作流系统

一、前言接上一篇 .NET Core微服务 权限系统工作流&#xff08;一&#xff09;权限系统 &#xff0c;再来一发工作流&#xff0c;我在接触这块开发的时候一直好奇它的实现方式&#xff0c;翻看各种工作流引擎代码&#xff0c;探究其实现方式&#xff0c;个人总结出来一个核心要…