[CTSC2017]吉夫特(Lucas定理,DP)】的更多相关文章

送70分,预处理组合数是否为偶数即可. 剩下的数据,根据Lucas定理的推论可得当且仅当n&m=n的时候,C(n,m)为奇数.这样就可以直接DP了,对于每个数,考虑它对后面的数的影响即可,直接枚举子集即可. #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=l; i<=r; i++) using namespace std; ,mod=; int n,ans,a[N],f[N],pos…
题意 满足$b_1 < b_2 < \dots < b_k$且$a_{b_1} \geqslant a_{b_2} \geqslant \dots \geqslant a_{b_k}$ Sol 组合数取模? 肯定考虑Lucas定理 考虑Lucas定理在最后一步肯定会化为$C(1, 1), C(1, 0), C(0, 0), C(0, 1)$. 很显然$C(0,1)$不存在,而其他的都等于$1$,因此当最后分解为$C(0, 1)$的时候不满足条件. 具体怎么判断呢?观察上式可以得到一个普遍…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4903 https://loj.ac/problem/2264 http://uoj.ac/problem/300 题解 真 - 签到题. 对于一个组合数,直接进行 Luca 定理. \[ \binom nm = \binom {\frac n2}{\frac m2} \binom {n \bmod 2}{m\bmod 2} \] 可以发现,对于每一个二进制位,如果出现 \((0, 1)\)…
题目链接 首先\(C(n,m)\)为奇数当且仅当\(n\&m=m\). 简要证明: 因为是\(mod\ 2\),考虑Lucas定理. 在\(mod\ 2\)的情况下\(C(n,m)\)最后只会化成4种情况:\(C(0,1),C(0,0),C(1,0),C(1,1)\). 后三种情况都是1,\(C(0,1)\)不存在(=0).所以如果\(C(n,m)mod\ 2\)为偶数,那么在Lucas的过程中一定出现了\(C(0,1)\). \(mod\ 2\)的过程容易想到位运算. 由\(C(n,m)mod…
3782: 上学路线 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 192  Solved: 75[Submit][Status][Discuss] Description 小C所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M).小C家住在西南角,学校在东北角.现在有T个路口进行施工,小C不能通过这些路口.小C喜欢走最短的路径到达目的地,因此他每天上学时都只会向东或北行走:而小C又喜欢走不同的路径,因此他问你按照他走最…
题目传送门 戳此处转移 题目大意 给定一个长为$n$的序列,问它有多少个长度大于等于2的子序列$b_{1}, b_{2}, \cdots, b_{k}$满足$\prod_{i = 2}^{k}C_{b_{i - 1}}^{b_{i}} \equiv 1 \pmod{2}$.答案模$10^{9} + 7$ 考虑限制条件,即前后两个数$b_{i - 1}, b_{i}$,它们要满足$C_{b_{i - 1}}^{b_{i}} \equiv 1\pmod{2}$. 这样不好处理,考虑使用Lucas定理…
题目描述 给你一个长度为\(n\)的数列\(a\),求有多少个长度\(\geq 2\)的不上升子序列\(a_{b_1},a_{b_2},\ldots,a_{b_k}\)满足 \[ \prod_{i=2}^k\binom{a_{b_{i-1}}}{a_{b_i}}\mod 2>0 \] 答案对\({10}^9+7\)取模. \(n\leq211985,a_i\leq 233333\) \(\forall i\neq j,a_i\neq a_j\) 题解 水题. 先忽略长度\(\geq 2\)这个条…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5794 题意概述: 给出一个N*M的网格.网格上有一些点是障碍,不能经过.行走的方式是向右下角跳马步.求有多少种方案可以从(1,1)走到(N,M). 多组数据,组数不超过25.N,M<=1e18. 分析: 还是水题...(我写这个的原因只是因为我第一次用lucas)分析一下可以发现横跳和纵跳各自的步数是确定的,所以变成了一个组合数问题. 当有障碍的时候按照第一次碰到的障碍分类,先把棋盘当成完全没有障碍…
题面 传送门 思路 一句话题意: 给出一个长度为 n 的序列,求所有长度大于等于2的子序列个数,满足:对于子序列中任意两个相邻的数 a和 b (b 在 a 前面),$C_a^b mod 2=1$,答案对1e9+7取模 显然膜2余1是个非常特殊的性质,应当好好加以利用 和组合数取模有关的东西,有Lucas定理,因此我们来试着推一推 $C_n^m%2=C_{n%2}^{m%2}\ast C_{n/2}^{m/2}$ 这个玩意的意义,显然就是把n和m转成二进制,那么只要没有某一位上n是0m是1(此时$…
题目链接 loj300 题解 orz litble 膜完题解后,突然有一个简单的想法: 考虑到\(2\)是质数,考虑Lucas定理: \[{n \choose m} = \prod_{i = 1} {\lfloor \frac{n}{2^{i - 1}} \rfloor \mod 2^i \choose \lfloor \frac{m}{2^{i - 1}} \rfloor \mod 2^i} \pmod 2\] 即 \[{n \choose m} = \prod_{each.bit.of.n.…
BZOJ4903 UOJ300 CTSC2017 吉夫特 弱弱地放上题目链接 Lucas定理可以推一推,发现C(n,m)是奇数的条件是n" role="presentation">nn&m==m" role="presentation">m==mm==m,也就是说n是m的子集,这不就显然了吗 非常友好的枚举子集DP f[i]表示以i结尾的不下降序列的方案数什么的 #include<bits/stdc++.h> us…
DP? Problem Description Figure 1 shows the Yang Hui Triangle. We number the row from top to bottom 0,1,2,…and the column from left to right 0,1,2,….If using C(n,k) represents the number of row n, column k. The Yang Hui Triangle has a regular pattern…
1902: Zju2116 Christopher Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 172  Solved: 67[Submit][Status][Discuss] Description 给定n个元素,要从中间选择m个元素有多少种方案呢?答案很简单,就是C(n,m).如果一个整数m(0≤m≤n),C(n,m)是某一个质数p的倍数,那么这个m就是讨厌的数字,现在给定了p和n,求有多少个讨厌的数字. Input 第一行是一个正整数n,(1…
题目分析: 我记得很久以前有人跟我说NOIP2016的题目出了加强版在清华集训中,但这似乎是一道无关的题目? 由于$k$为素数,那么$lucas$定理就可以搬上台面了. 注意到$\binom{i}{j} \equiv 0 {\mod k}$当且仅当将$i$和$j$用$k$进制表示的时候,有一位上的$i<j$. 位数上的计算用数位DP就没错了. 代码: #include<bits/stdc++.h> using namespace std; ; int t,k; long long n,m…
题目描述 给出一个长度为 $n$ 的序列,求所有长度大于等于2的子序列个数,满足:对于子序列中任意两个相邻的数 $a$ 和 $b$ ($a$ 在 $b$ 前面),${a\choose b}\mod 2\neq 0$.答案对 $10^9+7$取模. 输入 第一行一个整数 $n$ . 接下来 $n$ 行,每行一个整数,这 $n$ 行中的第 $i$ 行,表示 $a_i$ . $1\le n\le 211985,1\le a_i\le 233333$ 输出 一行一个整数表示答案. 样例输入 415731…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2111 题意: 给定n,p,问你有多少个1到n的排列P,对于任意整数i∈[2,n]满足P[i]>P[i/2]. 保证p为质数,输出答案 mod p的值.(n <= 10^6, p <= 10^9) 题解: 对于每个i,分别向i*2和i*2+1连一条边. 可以发现,最终形成的是一棵以1为根节点的二叉树. 题目中P[i]>P[i/2]的条件,就变成了:P[fa]<P[son…
题目 组合数C(n,m)表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3)三个物品中选择两个物品可以有( 1,2),(1,3),(2,3)这三种选择方法.根据组合数的定义,我们可以给出计算组合数C(n,m)的一般公式: C(n,m)=n!/m!*(n?m)! 其中n!=1×2×?×n.(额外的,当n=0时,n!=1) 小葱想知道如果给定n,m和k,对于所有的0≤i≤n,0≤j≤min(i,m)有多少对(i,j)满足C(i,j)是k的倍数. 输入格式 第一行有两个整数t,k,其中…
题目描述 称一个1,2,...,N的排列P1,P2...,Pn是Mogic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Mogic的,答案可能很大,只能输出模P以后的值 输入 输入文件的第一行包含两个整数 n和p,含义如上所述. 输出 输出文件中仅包含一个整数,表示计算1,2,⋯, n的排列中, Mogic排列的个数模 p的值. 样例输入 20 23 样例输出 16 题解 dp+Lucas定理 题目显然小根堆,考虑怎么求以一个节点为根的方案数.根肯定…
题目描述 小C所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M).小C家住在西南角,学校在东北角.现在有T个路口进行施工,小C不能通过这些路口.小C喜欢走最短的路径到达目的地,因此他每天上学时都只会向东或北行走:而小C又喜欢走不同的路径,因此他问你按照他走最短路径的规则,他可以选择的不同的上学路线有多少条.由于答案可能很大,所以小C只需要让你求出路径数mod P的值. 输入 第一行,四个整数N.M.T.P. 接下来的T行,每行两个整数,表示施工的路口的坐标. 输出 一…
Description: p<=10且p是质数,n<=7,l,r<=1e18 题解: Lucas定理: \(C_{n}^m=C_{n~mod~p}^{m~mod~p}*C_{n/p}^{m/p}\) 若把\(n,m\)在p进制下分解,那么就是\(\prod C_{n[i]}^{m[i]}\). 对于\(∈[l,r]\)的限制先容斥为\(<=r\). 考虑从低位到高位的数位dp,设\(f[i][S][j]\)表示做了前i位,S[i]第i个数选的数是<=还是>,进了j位,的…
题面 传送门:UOJ Solution 这题的数位DP好蛋疼啊qwq 好吧,我们说回正题. 首先,我们先回忆一下LUCAS定理: \(C_n^m \equiv C_{n/p}^{m/p} \times C_{n\%p}^{m\%p} (\%p)\) 我们仔细观察这个定理,就可以发现一个事实:LUCAS定理本质上是在对n,m两个数做K进制下的数位分离 所以说,LUCAS定理我们可以这样表示: \(C_n^m \equiv \prod C_{a_i}^{b_i}\) (ai与bi为K进制拆分后的两个…
uoj86 mx的组合数 (lucas定理+数位dp+原根与指标+NTT) uoj 题目描述自己看去吧( 题解时间 首先看到 $ p $ 这么小还是质数,第一时间想到 $ lucas $ 定理. 注意 $ lucas $ 定理的另外一种写法是将数转换为 $ p $ 进制后计算$ C_{n}^{m} = \Pi C_{a_i}^{b_i} $ 所以考虑对于 $ l-1 $ 和 $ r $ 各进行一次数位 $ dp $ . $ dp[i][j] $表示从低位起算到 $ i $ 位计算结果取模后为 $…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2111 [题意] 给定n,问1..n的排列中有多少个可以构成小根堆. [思路] 设f[i]为i个数的方案,设l为左子树大小r为右子树大小,则有: f[i]=C(i-1,l)*f[l]*f[r] 因为是个堆,所以子树大小都是确定的,可以直接递推得到. 其中C(n,m) nm比较大,可以用lucas定理求. 模型建立的重要性可知一二... [代码] #include<cstdio> #i…
思路很巧妙的一道题 ~ 这个应该不完全是正解,复杂度约为 $O(3\times 10^8)$,有时间再研究研究正解. 首先,最裸的暴力是按照权值从小到大枚举每一个数,然后枚举后面的数来更新方案数,是 $O(n^2)$ 的. 然后,我们可以用lucas定理来模拟那个组合数,会发现只需满足大数&小数=小数即可. 这个的话可以枚举子集,复杂度就是 $O(3^{18})$ 左右的,大概能过 ~ code: #include <bits/stdc++.h> #define ll long lon…
题目链接:http://acm.swust.edu.cn/problem/0247/ Time limit(ms): 1000 Memory limit(kb): 65535   Description 在很久很久以前,有个臭美国王.一天,他得到了一件新衣,于是决定巡城看看老百姓的反应(囧).于是他命令可怜的宰相数一下他有多少种巡城方案. 城市是一个N*M的矩形,(N+1)*(M+1)条街把城市分成了N*M块.国王从左下角出发,每次只能向右或向上走,右上角是终点. 请你帮帮可怜的宰相.   In…
题解: 当奇数 发现答案就是C(n,1)^2+C(n,3)^2+...C(n,n)^2 倒序相加,发现就是C(2n,n) 所以答案就是C(2n,n)/2 当偶数 好像并不会证 打表出来可以得到 2.当n为偶数且为4的倍数时,答案为C(2n,n)+C(n,n/2)/2 3.当n为偶数且不为4的倍数时,答案为C(2n,n)-C(n,n/2)/2 另外Claris告诉我在p较小时可以数位dp来求 先用lucas定理 C(n,m)=C(n%p,m%p)*C(n/p,m/p) 然后我们就可以把n表示成p进…
Description: 给定一个序列\(a_1,a_2,a_3...a_n\) 求有多少个不上升子序列: \(a_{b1},a_{b_2}...\) 满足 \(C_{a_{b1}}^{a_{b2}}*C_{a_{b2}}^{a_{b3}}*.....mod\ 2 >0\) 输出对\(10^9+7\)取模的结果 Hint: $ 1 ≤ n ≤ 211985, 1 ≤ ai ≤ 233333​\(.所有的\) a_i ​$互不相同 Solution: 由\(Lucas\)定理: $ C_n^m=C…
uoj bzoj luogu sol 根据\(Lucas\)定理,\(\binom nm \mod 2=\binom{n\%2}{m\%2}\times\binom{n/2}{m/2}\mod 2\). 由于\(\binom{n\%2}{m\%2}\)的取值只可能是\(0\)或\(1\),以为我们希望\(\binom nm=1\mod 2\),所以\(\binom{n\%2}{m\%2}\)应该始终取值为\(1\).因为\(\binom 00=\binom 10=\binom 11=1,\bin…
http://acm.hdu.edu.cn/showproblem.php?pid=6129 [题意] 对于一个长度为n的序列a,我们可以计算b[i]=a1^a2^......^ai,这样得到序列b 重复这样的操作m次,每次都是从上次求出的序列a得到一个新序列b 给定初始的序列,求重复m次操作后得到的序列 [方法一] 假定n=5,我们模拟一次可以发现,经过m次操作后a1在b1......bn中出现的次数为: m=0: 1 0 0 0 0 m=2: 1 2 3 4 5 m=3: 1 3 6 10…
引入: 组合数C(m,n)表示在m个不同的元素中取出n个元素(不要求有序),产生的方案数.定义式:C(m,n)=m!/(n!*(m-n)!)(并不会使用LaTex QAQ). 根据题目中对组合数的需要,有不同的计算方法. (1)在模k的意义下求出C(i,j)(1≤j≤i≤n)共n2 (数量级)个组合数: 运用一个数学上的组合恒等式(OI中称之为杨辉三角):C(m,n)=C(m-1,n-1)+C(m-1,n). 证明: 1.直接将组合数化为定义式暴力通分再合并.过程略. 2.运用组合数的含义:设m…