CF1096G Lucky Tickets
https://www.luogu.org/problemnew/show/CF1096G
显然dp出用\(\frac{n}{2}\)个数能拼出来的每个数的方案数,平方相加就行了,dp显然ntt+快速幂乱搞就做完了
#include<bits/stdc++.h>
#define il inline
#define vd void
#define mod 998244353
typedef long long ll;
il int gi(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=getchar();
}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
il int pow(int x,int y){
int ret=1;
while(y){
if(y&1)ret=1ll*ret*x%mod;
x=1ll*x*x%mod;y>>=1;
}
return ret;
}
const int G=3,iG=pow(G,mod-2);
int rev[1048583],P[1048583],iP[1048583],Ans[1048583],X[1048583];
il vd ntt(int*A,int n,int t){
for(int i=0;i<n;++i)if(rev[i]>i)std::swap(A[i],A[rev[i]]);
for(int o=1;o<n;o<<=1){
int w=t?P[o]:iP[o];
for(int*p=A;p!=A+n;p+=o<<1)
for(int i=0,W=1;i<o;++i,W=1ll*W*w%mod){
int t=1ll*W*p[i+o]%mod;
p[i+o]=(p[i]-t+mod)%mod,p[i]=(p[i]+t)%mod;
}
}
if(!t){
int inv=pow(n,mod-2);
for(int i=0;i<n;++i)A[i]=1ll*A[i]*inv%mod;
}
}
int main(){
#ifndef ONLINE_JUDGE
freopen("in.in","r",stdin);
freopen("out.out","w",stdout);
#endif
int n=gi()>>1,k=gi();
for(int i=1;i<1048583;i<<=1)P[i]=pow(G,(mod-1)/(i<<1)),iP[i]=pow(iG,(mod-1)/(i<<1));
Ans[0]=1;while(k--)++X[gi()];
int N=1,M=10,NN,lg;
while(n){
if(n&1){
NN=1,lg=0;while(NN<(N+M))NN<<=1,++lg;
for(int i=0;i<NN;++i)rev[i]=(rev[i>>1]>>1)|((i&1)<<lg-1);
ntt(Ans,NN,1),ntt(X,NN,1);
for(int i=0;i<NN;++i)Ans[i]=1ll*Ans[i]*X[i]%mod;
ntt(Ans,NN,0),ntt(X,NN,0);
N=N+M;
}
n>>=1;
if(n){
NN=1,lg=0;while(NN<M<<1)NN<<=1,++lg;
for(int i=0;i<NN;++i)rev[i]=(rev[i>>1]>>1)|((i&1)<<lg-1);
ntt(X,NN,1);
for(int i=0;i<NN;++i)X[i]=1ll*X[i]*X[i]%mod;
ntt(X,NN,0);
M<<=1;
}
}
int ans=0;
for(int i=0;i<N;++i)ans=(ans+1ll*Ans[i]*Ans[i])%mod;
printf("%d\n",ans);
return 0;
}
CF1096G Lucky Tickets的更多相关文章
- CF1096G Lucky Tickets 快速幂套FFT
\(\color{#0066ff}{ 题目描述 }\) 一个\(n\)位数,每位可以是给出的\(k\)个数码中的一个数,可以有前导\(0\),输出前\(n/2\)位之和与后\(n/2\)位之和相等的方 ...
- Codeforces Gym 100418J Lucky tickets 数位DP
Lucky ticketsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...
- POJ-2346 Lucky tickets(线性DP)
Lucky tickets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3298 Accepted: 2174 Descrip ...
- CF1096. G. Lucky Tickets(快速幂NTT)
All bus tickets in Berland have their numbers. A number consists of n digits (n is even). Only k dec ...
- DP+高精度 URAL 1036 Lucky Tickets
题目传送门 /* 题意:转换就是求n位数字,总和为s/2的方案数 DP+高精度:状态转移方程:dp[cur^1][k+j] = dp[cur^1][k+j] + dp[cur][k]; 高精度直接拿J ...
- Ural 1036 Lucky Tickets
Lucky Tickets Time Limit: 2000ms Memory Limit: 16384KB This problem will be judged on Ural. Original ...
- POJ 2346:Lucky tickets
Lucky tickets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3247 Accepted: 2136 Des ...
- URAL1036. Lucky Tickets
链接 dp[i][j] += dp[i-1][j-g];背包吧 数据太大了 还是JAVA好用 import java.io.*; import java.math.*; import java.tex ...
- poj 2346 Lucky tickets(区间dp)
题目链接:http://poj.org/problem?id=2346 思路分析:使用动态规划解法:设函数 d( n, x )代表长度为n且满足左边n/2位的和减去右边n/2位的和为x的数的数目. 将 ...
随机推荐
- Jboss7.1 local EJB lookup problem
We are trying to lookup for an Local EJB in JBoss7.1, but we get an ClassCast Exception. This local ...
- 转:SQL中 patindex函数的用法
语法格式:PATINDEX ( '%pattern%' , expression ) 返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算. pattern字符串在 ...
- [cb]NGUI事件及复杂UI管理
事件管理 看了有些文章关于NGUI的事件管理,许多人的做法的是封装一个事件处理层,避免在每个UI控件上都绑定事件处理脚本.本文说说我们项目中的UI事件管理吧. UIEventListener 我们项目 ...
- python Anaconda
转载自 https://blog.csdn.net/program_developer/article/details/79677557 目录: Anaconda是什么? 如何安装? 如何管理包? ...
- Linux之添加交换分区
Linux下的交换分区我们可以随意改变大小,如果说日常生活中分区不够用,今天我们来举个例子如何添加. 1.首先是使用dd命令创建一个空文件,这个空文件的大小就是你要继续添加的swap的大小,比如我这里 ...
- 一次SQLServer数据库宕机问题
数据库采用SQL Server 2005版本, 数据库文件约为6G,而LDF日志文件已经高达36G. 服务器开始变的不太稳定 .数据没有成功保存. 打开事件查看器发现很多信息日志 数据库 '' 中的文 ...
- c++向量
https://blog.csdn.net/suxiao_shaoer/article/details/52180087 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个 ...
- vultr vps(ubuntu)忘记密码
参考官方解决方案:https://www.vultr.com/docs/boot-into-single-user-mode-reset-root-password 在此仅给出ubuntu下的解决 D ...
- 【jquery】 在异步加载的元素上绑定事件
最近因为工作关系又重新回归到了jquery的怀抱,发现很多jquery的一些细节处理的部分都忘记了.这里记录一下最近在做项目时频繁遇到的一个问题:给异步加载的元素添加事件绑定. 问题发生的前提是项目前 ...
- Vue.js实现前段评论展示
本来想着给这个博客弄个回复系统(类似知乎的回复),最初的实现思路是这样的:主评论后台渲染,前台新增的评论,回复用jquery操作dom放到页面上.实现的时候感觉好复杂,大量的dom操作,目前前段框架不 ...