HDU 5322 Hope ——NTT 分治 递推
发现可以推出递推式。(并不会)
然后化简一下,稍有常识的人都能看出这是一个NTT+分治的情况。
然而还有更巧妙的方法,直接化简一下递推就可以了。
太过巧妙,此处不表,建议大家找到那篇博客。
自行抄写
#include <map>
#include <cmath>
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define ll long long
#define mp make_pair
#define md 998244353
#define maxn 100005 int dp[maxn],fac[maxn],inv[maxn]; int ksm(int a,int b)
{
int ret=1;
for (;b;b>>=1,a=(ll)a*a%md) if (b&1) ret=(ll)ret*a%md;
return ret;
} int main()
{
fac[0]=1;F(i,1,maxn-1)fac[i]=(ll)fac[i-1]*i%md;
inv[maxn-1]=ksm(fac[maxn-1],md-2);
D(i,maxn-2,0) inv[i]=(ll)inv[i+1]*(i+1)%md;
int sum1=0,sum2=0,sum3=0,n;
F(i,0,maxn-1)
{
if (!i) dp[i]=1;
else dp[i]=(ll)fac[i-1]*(((ll)i*i%md*sum1%md+(ll)sum3-2LL*i*sum2%md)%md+md)%md;
sum1=(sum1+1LL*dp[i]*inv[i])%md;
sum2=(sum2+1LL*i*dp[i]%md*inv[i])%md;
sum3=(sum3+1LL*i*i%md*dp[i]%md*inv[i])%md;
}
while (scanf("%d",&n)!=EOF) printf("%d\n",dp[n]);
}
HDU 5322 Hope ——NTT 分治 递推的更多相关文章
- HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)
Recursive sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- 题解报告:hdu 2084 数塔(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...
- HDU 5965 三维dp 或 递推
题意:= =中文题 思路一:比赛时队友想的...然后我赛后想了一下想了个2维dp,但是在转移的时候,貌似出了点小问题...吧?然后就按照队友的思路又写了一遍. 定义dp[i][j][k],表示第i列, ...
- HDU 2569(简单的递推)
彼岸 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- hdu 2050 折线分割平面 (递推)
折线分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- hdu 1284 钱币兑换问题 (递推 || DP || 母函数)
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- hdu 5171(矩阵快速幂,递推)
GTY's birthday gift Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- ACM学习历程—HDU 5326 Work(树形递推)
Problem Description It’s an interesting experience to move from ICPC to work, end my college life an ...
- HDU 5459 Jesus Is Here (递推,组合数学)
有点麻烦的递推,递推的原则:向小的问题方向分解,注意边界. 字符串的递推式为 定义f为Si中的总方案数 首先可以得到 fi=fi-1+fi-2+组合(si-2,si-1) 然后考虑Si-2和Si-1之 ...
随机推荐
- 自建ssr(谷歌云免费试用一年)
近期我一个朋友的VPN到期了,他也不想再去续费,同时发现谷歌云第一年申请时是免费的,所以他就自己搭建了一个自己专属的VPN 以下是他的搭建教程: 本教程难点在于申请免费试用资格 谷歌云+ssr搭建免 ...
- 使用Vue CLI 3快速创建项目
首先 vue create ant-design-vue-pro 执行命令会显示两个选项,1默认,2自定义 我么选择自定义 选择好自定义的插件回车就等待下安装成功然后进入项目文件夹 cd ant-de ...
- django-redis缓存记录
对于站点缓存,我们使用redis这款key-value数据库.Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径.Redis的数据类型都是基于基本数据结构的 ...
- MSBuild常用方法
打包后把nuget包复制到指定的目录 <Target Name="CopyPackage" AfterTargets="Pack"> <Cop ...
- SourceTree 跳过登录注册,直接使用
SourceTree下载安装后,运行程序会要求你登录或注册账号才能使用, 然而登录或注册基本都收不到服务器的响应 (在国外嘛,安全起见),于是卡在此处无法使用了. 下面就来介绍一下跳过这尴尬环节的方法 ...
- Ueditor百度编辑器插件的安装
目录 插件下载地址: 1. 引入 2. 编辑器显示处 id="content" 3.底部 4.ueditor编辑器按钮配置方法 定制工具栏图标 修改配置项的方法: 插件下载地址: ...
- 科学计算库Numpy——数组生成
等差数组 使用np.arange()或np.linspace()生成元素是等差数列的数组. 以10为底的数组 使用np.logspace()生成元素是以10为底的数组. 数组扩展 使用np.meshg ...
- 动态规划:HDU3496-Watch The Movie(二维费用的背包问题)
Watch The Movie Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- Linux文件属性之文件权限介绍
1)用ls -li 查看文件列表字段 红色代表的是inode 黄色代表的是文件权限 黄色里面的第一个 - 表示文件的类型(普通类型文件) d 表示目录(directory) l 表示链接文件(link ...
- Kubernetes master服务定制编译docker镜像
前言 之前部署了Kubernetes 1.13.0,发现master服务的启动方式与1.10.4版本有所区别,kube-apiserver.kube-controller-manager和kube-s ...