博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dtoj#4138. 染色(ranse)
阅读量:6947 次
发布时间:2019-06-27

本文共 1118 字,大约阅读时间需要 3 分钟。

 

题目描述:

算法标签:斯特林树,分治ntt

思路:

对于固定一个点,讨论他有几个叶子的情况,观察规律发现他的系数斯特林数。于是我们可以求出对于每一个节点建成多少个联通快的方案树,再把每一个节点的方案书卷积起来,用分治ntt维护。

对于求斯特林数,可以先求出小的一部分,对于大的一部分,再用斯特林数的通式求法。

以下代码:

#include
#define il inline#define LL long long#define vet vector
#define _(d) while(d(isdigit(ch=getchar())))using namespace std;const int N=3e5+5,p=998244353;int G[2],jc[N],ny[N],in[N];int n,c,k,sz,s[318][318],a[N],b[N],num,sum[N];il int read(){ int x,f=1;char ch; _(!)ch=='-'?f=-1:f;x=ch^48; _()x=(x<<1)+(x<<3)+(ch^48); return f*x;}il int ksm(LL a,int y){ LL b=1; while(y){ if(y&1)b=b*a%p; a=a*a%p;y>>=1; } return b;}il int mu(int x,int y){ if(x+y>=p)return x+y-p; return x+y;}class ntt{ int v[N],t,l; il void init(int x){ t=1;l=0; while(t<=x)t<<=1,l++; for(int i=0;i
>1]>>1)|((i&1)<
>1))-sum-1; vet res1=Solve(l,mid),res2=Solve(mid+1,r),res; int s1=res1.size(),s2=res2.size(),s=s1+s2-1; res.resize(s); for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/Jessie-/p/10416244.html

你可能感兴趣的文章
站长常用的200个js代码 站长常用js代码大全 站长常用js代码集合
查看>>
HBase eclipse开发环境搭建
查看>>
SQL Server - 把星期一(周一)当作每个星期的开始在一年中求取周数
查看>>
【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化
查看>>
jquery-alert对话框
查看>>
WIN8系统安装软件时提示"扩展属性不一致"的解决方法
查看>>
sqlite3.exe 使用
查看>>
微软职位内部推荐-Senior Software Engineer
查看>>
CAD中批量打印
查看>>
蛋疼的Apple IOS Push通知协议
查看>>
MyEclipse10.0 安装 jbpm4.4
查看>>
批处理复制文件(文件夹)排除某目录,某些类型(草稿)
查看>>
【转】shell 编程:冒号 后面跟 等号,加号,减号,问号的意义
查看>>
C#编写COM组件
查看>>
C#属性(Attribute)用法实例解析
查看>>
Android 自定义控件 优雅实现元素间的分割线 (支持3.0以下)
查看>>
Java中间件:淘宝网系统高性能利器
查看>>
ng-bind-html 的使用
查看>>
[OpenSource]浅谈.Net和Java互相调用的三种方式
查看>>
C语言指针的初始化和赋值
查看>>