【BZOJ4005】[JLOI2015]骗我呢】的更多相关文章

http://www.lydsy.com/JudgeOnline/problem.php?id=4005 神题~远距离orz 膜拜PoPoQQQ大神 #include<cstdio> #include<cstdlib> #include<iostream> #include<fstream> #include<algorithm> #include<cstring> #include<string> #include<…
Description 传送门 Solution 如果单独考虑一行i,则左边位置的数严格比右边位置的数小.而一行有m个位置,它们可以填[0,m]这m+1个数,则必然有一个数不存在. 定义第i行的第j位突变需要满足$x[i][j+1]-x[i][j]>1$,此时不存在的数为j. 通过分析可以得到,假如在i-1行的突变位置为j+1,则第i行突变位置的合法范围为[j,m].* 设f[i][j]为在第i行,突变位置为j的情况数. 则递推式为:$f[i][j]=f[i-1][j+1]+f[i][j-1]$…
[BZOJ4005][JLOI2015] 骗我呢(容斥,组合计数) 题面 BZOJ 洛谷 题解 lalaxu #include<iostream> using namespace std; #define MOD 1000000007 #define MAX 3000300 void add(int &x,int y){x+=y;if(x>=MOD)x-=MOD;} int n,m,inv[MAX],jc[MAX],jv[MAX],N,ans; int Calc(int x,in…
[JLOI2015]骗我呢 Tags:题解 作业部落 评论地址 TAG:数学,DP 题意 骗你呢 求满足以下条件的\(n*m\)的矩阵的个数对\(10^9+7\)取模 对于矩阵中的第\(i\)行第\(j\)列的元素\(x_{i,j}\)都有 \(x_{i,j}<x_{i,j+1}\) \(x_{i,j}<x_{i-1,j+1}\) \(0\le x_{i,j}\le m\) 题解 Part 0 前言 不会做啊!(杠了四五个小时!) 谢两位dalao:blog1.blog2 以下图片均来自于此篇…
题意: Alice和Bob在经过了数学的洗礼之后,不再喜欢玩对抗游戏了,他们喜欢玩合作游戏.现在他们有一个n×m的网格,Alice和Bob要在一定规则下往网 格里填数字,Alice和Bob都是聪明绝顶的,所以他们想计算有多少种方式能填满网格,但数字过于庞大,而他们又没有学过取模.因此,他们找到了 你,请你给出方案数$\mod 10^9+7$.规则如下:对于$1≤i≤n,1≤j<m$满足$a_{i,j}<a_{i,j}+1$对于$1<i≤n,1≤j<m$满足$a_{i,j}<a…
题面传送门 神仙题. 首先乍一看此题非常棘手,不过注意到有一个条件 \(0\le x_{i,j}\le m\),而整个矩阵恰好有 \(m\) 列,这就启发我们考虑将每个元素的上下界求出来,如果我们第一列全填 \(0\),其余每个数都恰好等于它左边的数加 \(1\),那么 \(x_{i,j}\) 刚好取到下界 \(j-1\):如果我们最后一列全填 \(m\),其余每个数都恰好等于它右边的数减 \(1\),那么 \(x_{i,j}\) 刚好取到上界 \(j\),因此对于任意一个第 \(j\) 列的元…
「JLOI2015」骗我呢 这什么神仙题 \[\color{purple}{Link}\] 可以学到的东西 对越过直线的东西翻折进行容斥 之类的..吧? Code: #include <cstdio> const int mod=1e9+7; const int N=3e6+10; inline int add(int a,int b){return a+b>=mod?a+b-mod:a+b;} #define mul(a,b) (1ll*(a)*(b)%mod) int qp(int…
题解 我深思熟虑许久才算是明白个大概的计数问题吧 先是转化成一个矩形,列一条直线y = x,y = x - (m + 1)我们从(0,0)走到(n + m + 1,m + 1)就是答案 因为我们起始相当于第一行缺一个0,然后有m+1种转移的方案,每次在距左边界j的地方某个点向上走表示转移到缺j - 1,向右走一步走到了缺j,再走一步走到缺j + 1.... 我们把向上走当做-1,向右走当做+1,我们可以建立一个新的模型 就是起点为\((0,0)\)终点为\((2 * n + m + 1,m +…
首先,我们可以得到:每一行的数都是互不相同的,所以每一行都会有且仅有一个在 $[0, m]$ 的数没有出现. 我们可以考虑设 $Dp[i][j]$ 为处理完倒数 $i$ 行,倒数第 $i$ 行缺的数字是 $j$ 的方案数. 那么就有: $$Dp[i][j] = \sum_{k=max(0,j-1)}^{m}Dp[i - 1][k]$$ 自己画一画图就可以明白了,在这里就不解释了.毕竟 Gromah 太懒($ru\grave{o}$) 然后我们考虑把这个转移图画出来: 然后就是求这个图中从右上到左…
传送门 Description 求给\(n*m\)的矩阵填数的方案数 满足: \[ 1\leq x_{i,j}\leq m \] \[ x_{i,j}<x_{i,j+1} \] \[ x_{i,j}<x_{i-1,j+1} \] Solution  \(f[i][j]\)表示当前第\(i\)行少的数字是\(j\)的方案数 \[ f[i][j]=\sum_{k=1}^{j+1}f[i-1][k]=f[i][j-1]+f[i-1][j+1] \] 观察dp的转移方程 发现它和路径计数的过程很类似…