首先说一下BSGS的一个坑点:

解方程A^x≡B(mod p)

需要特判一个东西=>A%p==B%p==0?

如果相等的话puts("1")反之则无解。

因为如果A%p=0,那么无法移项,导致BSGS算法的错误

进入正题:

一   卡特拉数(C(2*n,n)/(n+1))用于处理01序列里任意位置0的个数>1的情况。。

但知道定义没用,重要的是打表找规律。

善于用next_permutation,搜索等工具找出前几项。

记住卡特兰数的前几项:1 2 5 14 42 132 429。(反正也只能求出这几项)

至于求法,先化到最简,取模可以用lucas,不取模的高精。

喜欢高精除的畜生就打高精除,不喜欢的就分解质因数,数据小的也可以O(n^2)枚举。

贴一下分解质因数的代码:

 #include<cstdio>
#include<iostream>
using namespace std;
#define MAXN 4000005
int prime[MAXN],tot,n,frpr[MAXN],fenzi[MAXN],tot1;
void pre()
{
for(int i=;i<=*n;i++)
{
if(!frpr[i])
{
frpr[i]=i;
prime[++tot]=i;
}
for(int j=;j<=tot;j++)
{
if(prime[j]*i>*n)break;
frpr[prime[j]*i]=prime[j];
if(!(i%prime[j]))break;
}
}
return ;
}
void Get_pr(int x,int opt)
{
while(x!=)
{
if(opt==)fenzi[frpr[x]]++;
else fenzi[frpr[x]]--;
x/=frpr[x];
}
return ;
}
int main()
{
int p,ans=;
scanf("%d%d",&n,&p);
pre();
for(int i=n+;i<=*n;i++)Get_pr(i,);
for(int i=;i<=n;i++)Get_pr(i,);
for(int i=;i<=tot;i++)
{
while(fenzi[prime[i]]>)
{
ans=1ll*ans*prime[i]%p;
fenzi[prime[i]]--;
}
}
cout<<ans<<endl;
return ;
}

二  prufer序列

用n-2个点表示n个节点的有标号树,可以证明prufer序列和对应的树都是唯一确定的。

由此可以得到一些推论:

1. n个点构成的无根树的个数:n^(n-2)

2. 确定n个点度数分别为d1,d2…时无根树个数: (n-2)!/((d1-1)!*(d2-1)!*…)

3.  n个点的有标号有根树的个数: n*n^(n-2)=n^(n-1)

4. 所有节点的度之和为n*2-2

除了统计树的个数,别的。。。就没啥了(听说还能优化暴力枚举)

三 BSGS

模板:

 void insert(int x,int d)
{
int k=x%mod;
val[++cnt]=x;nxt[cnt]=head[k];id[cnt]=d;head[k]=cnt;
}
int find(int x)
{
int k=x%mod;
for(int i=head[k];i;i=nxt[i])
if(val[i]==x)return id[i];
return -;
}
int BSGS()
{
int m=ceil(sqrt(p*1.0)),bs=;
int now=;insert(B%p,);//insert A^j*B
if(B==)return ;
for(int i=;i<m;i++)
{
now=1ll*now*A%p;
insert(1ll*now*B%p,i);
}
now=1ll*now*A%p;
for(int i=m;;i+=m)
{
bs=1ll*bs*now%p;
int x=find(bs);
if(x!=-)return i-x;
if(i>p)break;
}
return -;
}

除了上面提到的坑点,还有就是根据题意啦

卡特兰数&&prufer序列&&BSGS水题集的更多相关文章

  1. 「刷题」卡特兰数&prufer序列

    1.网格 转换模型,翻折容斥出解. 2.有趣的数列 抽象一下模型,把奇数项当作横坐标,偶数项当作纵坐标,就是从n*n矩阵左下角走到右上角并且每一步x<=y的方案数,发现是卡特兰数,关于gcd,可 ...

  2. 洛谷 p1044 栈 【Catalan(卡特兰数)】【经典题】

    题目链接:https://www.luogu.org/problemnew/show/P1044 转载于:https://www.luogu.org/blog/QiXingZhi/solution-p ...

  3. 【省选水题集Day1】一起来AK水题吧! 题解(更新到B)

    题目:http://www.cnblogs.com/ljc20020730/p/6937936.html 水题A:[AHOI2001]质数和分解 安徽省选OI原题!简单Dp. 一看就是完全背包求方案数 ...

  4. 【省选水题集Day1】一起来AK水题吧! 题目(更新到B)

    题解:http://www.cnblogs.com/ljc20020730/p/6937954.html 水题A: [AHOI2001]质数和分解 题目网址: https://www.luogu.or ...

  5. 数的划分(NOIP2001&水题测试2017082401)

    题目链接:数的划分 这题直接搜索就行了.给代码,思路没什么好讲的,要讲的放在代码后面: #include<bits/stdc++.h> using namespace std; int d ...

  6. 咸鱼的ACM之路:DFS水题集

    DFS的核心就是从一种状态出发,转向任意的一个可行状态,直到达到结束条件为止.(个人理解) 下面全是洛谷题,毕竟能找到测试点数据的OJ我就找到这一个....在其他OJ上直接各种玄学问题... P159 ...

  7. DP入门水题集

    HDU 1087 Input contains multiple test cases. Each test case is described in a line as follow:N value ...

  8. 【题解】【合并序列(水题)P1628】

    原题链接 这道题目如果连字符串的基本操作都没学建议不要做. 学了的很简单就可以切,所以感觉没什么难度- 主要讲一下在AC基础上的优化(可能算不上剪枝) 很明显,这道题我们要找的是前缀,那么在字符串数组 ...

  9. java水题集

    POJ - 1220 进制转换 import java.io.*; import java.util.*; import java.math.*; public class Main { public ...

随机推荐

  1. 安装Office Visio 提示Office 16 Click-to-Run Extensibility Component

    今天在安装 Office Visio 2016 时,点击安装程序,出现以下错误:   出现这个问题的原因就是你的电脑以前安装过32位的office,卸载时,注册表没有清理干净. 解决方案: 在win1 ...

  2. vue父子组件钩子函数的执行顺序

    加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount-& ...

  3. Python 3.8.0 正式版发布,新特性初体验

    北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PEP 572: Assignment Expressi ...

  4. python requests-toolbelt 生成上传multipart/form-data格式数据

    需求背景 想使用requests做一个自动上传的功能,发现这里问题挺多的,就记录一下. 如上图上传功能,一般分为input标签,非input标签.我这里也不管什么标签,直接抓包看数据流. Conten ...

  5. Oracle11g入门

    数据类型 数据类型 表示 数字 number 日期时间 date 字符串 char(长度)/varchar2(长度) 约束条件 名称 约束 唯一 unique 非空约束 not null 主键约束 p ...

  6. 渗透测试=基于白名单执行payload--Ftp

    还是自己动手复现亮神课程的过程. 环境 靶机win7 攻击机 kali Ftp.exe简介: Ftp.exe是Windows本身自带的一个程序,属于微软TP工具,提供基本的FTP访问 说明:Ftp.e ...

  7. java集合之Vector向量基础

    Vector向量: vector类似动态数组,向量和数组类似,但是数组容量一旦确定不可更改,而向量的容量可变.向量只可以保存任何类型对象且容量不限制,数组对元素类型无限制但是容量有限. 适用场合:向量 ...

  8. linux下执行脚本失败的解决办法

    现象: 1的解决办法:赋予该文件可执行权限即可,chmod +x docker.sh 2的解决办法:https://blog.csdn.net/youzhouliu/article/details/7 ...

  9. MyBatis之启动分析(一)

    前言 MyBatis 作为目前最常用的持久层框架之一,分析其源码,对我们的使用过程中可更好的运用它.本系列基于mybatis-3.4.6进行分析. MyBatis 的初始化工作就是解析主配置文件,映射 ...

  10. 使用css把placeholder值渐渐消失

    复制过去就行了,不要问我为什么,就两个字爽快input:focus {outline: none; } input:focus::-webkit-input-placeholder {text-ind ...