POJ 1430 Binary Stirling Numbers (第二类斯特林数、组合计数)
题目链接
http://poj.org/problem?id=1430
题解
qaq写了道水题……
在模\(2\)意义下重写一下第二类Stirling数的递推式: $$S(n,m)=S(n-1,m-1)+(S(n-1,m)\ \text{and}\ m)$$
令\(S'(n,m)=S(n+m,m)\), 那么递推式变成了\(S'(n,m)=S'(n,m-1)+(S'(n-1,m)\ \text{and}\ m)\)
也就相当于从\((0,0)\)走到\((n,m)\)的NE Lattice Path数目,且当纵坐标为偶数时只能往上走不能往右走
那这个只能往上走不能往右走就相当于把这一行删掉了(因为对方案没有任何影响),于是保留下来的行只有\([\frac{m-1}{2}]\)个
那么就是从\((0,0)\)走到\((n,[\frac{m-1}{2}])\)的NE Lattice Path条数,直接Lucas定理组合数计算即可
\(m=0\)要特判
时间复杂度\(O(T(\log n+\log m))\).
代码
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cassert>
#include<iostream>
#define llong long long
using namespace std;
inline int read()
{
int x=0; bool f=1; char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=0;
for(; isdigit(c);c=getchar()) x=(x<<3)+(x<<1)+(c^'0');
if(f) return x;
return -x;
}
int comb0(int x,int y) {return x<y?0:1;}
int comb(int x,int y)
{
if(x<2&&y<2) {return comb0(x,y);}
return comb((x>>1),(y>>1))*comb0((x&1),(y&1));
}
int main()
{
int T; scanf("%d",&T);
while(T--)
{
int n,m; scanf("%d%d",&n,&m);
if(m==0) {printf("0\n"); continue;}
n -= m; m = (m-1)>>1;
printf("%d\n",comb(n+m,m));
}
return 0;
}
POJ 1430 Binary Stirling Numbers (第二类斯特林数、组合计数)的更多相关文章
- poj 1430 Binary Stirling Numbers
Binary Stirling Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1761 Accepted ...
- HDU2643(SummerTrainingDay05-P 第二类斯特林数)
Rank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 8-机器分配(hud4045-组合+第二类斯特林数)
http://acm.hdu.edu.cn/showproblem.php?pid=4045 Machine schedulingTime Limit: 5000/2000 MS (Java/Othe ...
- 新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘
题目链接:http://acm.xju.edu.cn/JudgeOnline/problem.php?id=1006 第二类斯特林数: 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的 ...
- 【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT)
[BZOJ5093]图的价值(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 单独考虑每一个点的贡献: 因为不知道它连了几条边,所以枚举一下 \[\sum_{i=0}^{n-1}C_{n-1 ...
- 【BZOJ4555】求和(第二类斯特林数,组合数学,NTT)
[BZOJ4555]求和(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 推推柿子 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)·j!·2^j\] \[=\sum_{i= ...
- CF932E Team Work(第二类斯特林数)
传送门:CF原网 洛谷 题意:给定 $n,k$,求 $\sum\limits^n_{i=1}\dbinom{n}{i}i^k\bmod(10^9+7)$. $1\le n\le 10^9,1\le k ...
- HDU - 4625 JZPTREE(第二类斯特林数+树DP)
https://vjudge.net/problem/HDU-4625 题意 给出一颗树,边权为1,对于每个结点u,求sigma(dist(u,v)^k). 分析 贴个官方题解 n^k并不好转移,于是 ...
- 【CF961G】Partitions 第二类斯特林数
[CF961G]Partitions 题意:给出n个物品,每个物品有一个权值$w_i$,定义一个集合$S$的权值为$W(S)=|S|\sum\limits_{x\in S} w_x$,定义一个划分的权 ...
随机推荐
- 从入门到自闭之Python while如何使用
while 循环 while 条件: 循环体 终止循环的两种办法: 改变条件 break break和continue的用法: break 用法:打破当前循环,(终止当前循环),所处位置在循环 ...
- vue-router实现原理
vue-router实现原理 近期面试,遇到关于vue-router实现原理的问题,在查阅了相关资料后,根据自己理解,来记录下.我们知道vue-router是vue的核心插件,而当前vue项目一般都是 ...
- 使用 flask-restful 编写 自己的 ai web service
本项目在 win 平台采用 pycharm 编写, 技能与环境要求: python 基础, web 基础知识, python.exe = 3.6+ 算法>第四版,操作系统推荐<现代操作系统 ...
- java在遍历列表的时候删除列表中某个元素
在遍历list的时候需要删除其中的某些元素,不要用foreach遍历,需要用Iterator. List<String> list = new ArrayList<String> ...
- Nginx的快速安装
1. 准备工作 1. CenterOS7.x.vmware虚拟机,安装过程参考 https://jingyan.baidu.com/article/eae0782787b4c01fec548535.h ...
- deployment控制pod进行滚动更新以及回滚
更新pod镜像两种方式: 方式一:kubectl set image deployment/${deployment name} ${container name}=${image} 例: kubec ...
- Practical Lessons from Predicting Clicks on Ads at Facebook (2014)论文阅读
文章链接: https://quinonero.net/Publications/predicting-clicks-facebook.pdf abstract Facebook日活跃度7.5亿,活跃 ...
- 树形DP Choosing Capital for Treeland
给你一棵有向树,需要选定一个点为capital,满足翻转边数最小 思路:先求出1为capital 的答案,然后向下更新孩子节点 dp[i]=dp[i-1]+judge(i); #include< ...
- 【HDU6709】Fishing
题目大意:有 N 条鱼,每条鱼都有钓鱼和烤鱼的时间,钓鱼的时间均相同,每条鱼都有自己的烤鱼时间,一次只能烤一条鱼,且不能间断.现要求通过某种顺序将所有的鱼钓上来并烤完,求最小的时间是多少. 题解: 对 ...
- electron仿制qq(2) 主界面制作
制作从头开始 最后会将写好的组件放到一起的!之前写了好几天的纯css 有点累 本章中将使用sass 如果代码太长 会分两个或多个章节写代码中会有详细的注释 以便于大家阅读and理解界面可能会有部分偏差 ...