[集训]Trominoes,钩子公式运用】的更多相关文章

题意 用这四种骨牌密铺n*m的正方形矩阵,可以不选,求方案数.n*m<=1E8.多组询问. 思考 用如上的表达难以进行计算,尝试转化为一种新的组合解释. 若从右上角开始填起,我们强制要求里面的轮廓线是单调增的.例如: 这种方法既不影响合法性,又不会重复计数. 可以看见,我们只关心轮廓线的形状,不关心其他部分的细节,因此我们可以用长度为n+m的01串来表示其反向.在此处,默认01串从左下角向右上角写起,0代表上,1代表右. 每填充一个骨牌,可以发现这样的转移: 0001->1000 0011-&…
题目传送门 传送门 设 $m = \sum_{i = 1}^{n} a_i$. 总方案数显然等于 $\frac{m!}{\prod_{i = 1}^{n} a_i!}$. 考虑这样一个网格图,第 $i$ 行有 $a_i$ 个网格. 那么我们在这个网格中填 $1$ 到 $m$ ,如果保证每一行严格递增,那么第 $i$ 次移动后第 $j$ 维坐标就是第 $i$ 行中小于等于 $i$ 的数数量. 因此一条路径可以唯一对应一种填法. 路径中任意一个点都满足条件,等价于要求每一列递增. 这等价于给定杨表的…
POJ2779 线性DP 或 杨氏三角 和 钩子公式 本来就想回顾一下基础的线性DP谁知道今早碰到的都是这种大难题,QQQQ,不会 这个也没有去理解线性DP的解法,了解了杨氏三角和钩子公式,做出了POJ2779 杨氏矩阵和勾长公式 杨氏矩阵又叫杨氏图表,它是这样一个矩阵,满足条件: (1)如果格子(i,j)没有元素,则它右边和上边的相邻格子也一定没有元素. (2)如果格子(i,j)有元素a[i][j],则它右边和上边的相邻格子要么没有元素,要么有元素且比a[i][j]大. 1 ~ n所组成杨氏矩…
2483: Pku2279 Mr. Young's Picture Permutations Time Limit: 1 Sec  Memory Limit: 128 MB Description   Mr. Young wishes to take a picture of his class. The students will stand in rows with each row no longer than the row behind it and the left ends of…
描述 小Hi在玩一个游戏,他需要把1, 2, 3, ... NM填入一个N行M列的矩阵中,使得矩阵每一行从左到右.每一列从上到下都是递增的. 例如如下是3x3的一种填法: 136 247 589 给定N和M,小Hi希望知道一共有多少种不同的填法. 输入 一行包含两个整数N和M. 对于60%的数据 1 <= N <= 2, 1 <= M <= 100000 对于20%的数据 N = 3, 1 <= M <= 100 对于100%的数据 1 <= N <= 3,…
题目:http://poj.org/problem?id=2279 书上的DP做法会爆内存,尝试写了一个,过了样例. 转载: 代码如下: #include<iostream> #include<cstdio> #include<cstring> #define ll unsigned long long using namespace std; ll k,n[],f[][][][][]; void cl(ll a1,ll a2,ll a3,ll a4,ll a5) {…
题目:http://poj.org/problem?id=2279 有dp做法,但会MLE. dp的思想很好,是通过 “按身高由小到大往进放” 把 “身高小于” 的条件转化成 “放进去的先后” ,于是又变成 “当前位置的上边和左边是否已放” . “左边” 通过对每一行长度的记录:“上边” 通过与上一行长度的比较,就可以状态转移了. 正解是用公式.杨氏矩阵(虽然没用上)+钩子公式. dp代码: #include<iostream> #include<cstdio> using nam…
Description Mr. Young wishes to take a picture of his class. The students will stand in rows with each row no longer than the row behind it and the left ends of the rows aligned. For instance, 12 students could be arranged in rows (from back to front…
喵哈哈村的魔法考试 Round #7 (Div.2) 注意!后四道题来自于周日的hihocoder offer收割赛第九场. 我建了个群:欢迎加入qscoj交流群,群号码:540667432 大概作为该oj的讨论吧,未来应该会上线一个bbs的. 喵哈哈村的七十六 签到题,直接for一遍判断就好了嘛 #include<bits/stdc++.h> using namespace std; int n,a; int main(){ while(cin>>n>>a){ int…
uva 106 这题说的是 说计算 x^2 + y^2  =  z^2  xyz 互质 然后计算个数和 在 N内 不在 勾股数之内的数的个数 然后去找需要的 维基百科上 看到 另 n*m*2 =b     n*n+m*m=c  m*m-n*n = a  m>n 然后这样可以计算出 所有互质的 勾股数 然后进行枚举n和m 进行判断 还有一个问题他为什么不会遗漏 互质的勾股数呢   我自己想了一下 应该是这样的  也就是说 n^2 和 m^2  必须为整数 就是说 他们是分数已经不可能了 那现在来讨…