题意:

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_{i−1,j+1}$
对于$1≤i≤n,1≤j≤m$满足$0≤a_{i,j}≤m$

$1\leq n,m\leq 10^6$

题解:

这题在骗我。

これ or これ

QAQ~~

代码:

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define mod 1000000007
using namespace std;
typedef long long ll;
int n,m,x,y,ans,jc[],inv[];
void dec(int &a,int b){
if(a-b<)a=a-b+mod;
else a=a-b;
}
void inc(int &a,int b){
if(a+b>=mod)a=a-mod+b;
else a=a+b;
}
int pw(int x,int y){
int ret=;
for(;y;y>>=,x=(ll)x*x%mod){
if(y&)ret=(ll)ret*x%mod;
}
return ret;
}
int C(int n,int m){
if(n<||m<||n<m)return ;
return (ll)jc[n]*inv[m]%mod*inv[n-m]%mod;
}
int main(){
jc[]=;
for(int i=;i<=;i++)jc[i]=(ll)jc[i-]*i%mod;
inv[]=pw(jc[],mod-);
for(int i=;i;i--){
inv[i]=(ll)inv[i+]*(i+)%mod;
}
scanf("%d%d",&n,&m);
if(n==||m==)ans++;
if(n==||n==)ans--;
n=n+m+;
m=n-m-;
x=n,y=m;
while(x>=&&y>=){
swap(x,y);
x--,y++;
dec(ans,C(x+y,y));
swap(x,y);
x+=n-m+;
y-=n-m+;
inc(ans,C(x+y,y));
}
x=n,y=m;
while(x>=&&y>=){
swap(x,y);
x+=n-m+;
y-=n-m+;
dec(ans,C(x+y,y));
swap(x,y);
x--,y++;
inc(ans,C(x+y,y));
}
ans+=C(n+m,n);
if(ans>=mod)ans-=mod;
printf("%d",ans);
return ;
}

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

  1. bzoj4005[JLOI2015]骗我呢

    http://www.lydsy.com/JudgeOnline/problem.php?id=4005 神题~远距离orz 膜拜PoPoQQQ大神 #include<cstdio> #i ...

  2. [BZOJ4005][JLOI2015]骗我呢-[dp+容斥]

    Description 传送门 Solution 如果单独考虑一行i,则左边位置的数严格比右边位置的数小.而一行有m个位置,它们可以填[0,m]这m+1个数,则必然有一个数不存在. 定义第i行的第j位 ...

  3. 【BZOJ4005】[JLOI2015] 骗我呢(容斥,组合计数)

    [BZOJ4005][JLOI2015] 骗我呢(容斥,组合计数) 题面 BZOJ 洛谷 题解 lalaxu #include<iostream> using namespace std; ...

  4. [JLOI2015]骗我呢

    [JLOI2015]骗我呢 Tags:题解 作业部落 评论地址 TAG:数学,DP 题意 骗你呢 求满足以下条件的\(n*m\)的矩阵的个数对\(10^9+7\)取模 对于矩阵中的第\(i\)行第\( ...

  5. 洛谷 P3266 - [JLOI2015]骗我呢(容斥原理+组合数学)

    题面传送门 神仙题. 首先乍一看此题非常棘手,不过注意到有一个条件 \(0\le x_{i,j}\le m\),而整个矩阵恰好有 \(m\) 列,这就启发我们考虑将每个元素的上下界求出来,如果我们第一 ...

  6. 「JLOI2015」骗我呢 解题报告?

    「JLOI2015」骗我呢 这什么神仙题 \[\color{purple}{Link}\] 可以学到的东西 对越过直线的东西翻折进行容斥 之类的..吧? Code: #include <cstd ...

  7. 【LOJ】#2109. 「JLOI2015」骗我呢

    题解 我深思熟虑许久才算是明白个大概的计数问题吧 先是转化成一个矩形,列一条直线y = x,y = x - (m + 1)我们从(0,0)走到(n + m + 1,m + 1)就是答案 因为我们起始相 ...

  8. BZOJ 4005 [JLOI 2015] 骗我呢

    首先,我们可以得到:每一行的数都是互不相同的,所以每一行都会有且仅有一个在 $[0, m]$ 的数没有出现. 我们可以考虑设 $Dp[i][j]$ 为处理完倒数 $i$ 行,倒数第 $i$ 行缺的数字 ...

  9. [JLOI 2015]骗我呢

    传送门 Description 求给\(n*m\)的矩阵填数的方案数 满足: \[ 1\leq x_{i,j}\leq m \] \[ x_{i,j}<x_{i,j+1} \] \[ x_{i, ...

随机推荐

  1. servletconfig和servletcontext学习

    servletconfig java.lang.String getInitParameter(java.lang.String name)  //根据参数名获取参数值 java.util.Enume ...

  2. 使用Eclipse将项目上传至远程GitLab

    一.先将项目提交至本地仓库 1.  右击项目——Team——Share Project… 2.在弹出框中,选择Git——Next 3.在弹出框中进行如下步骤操作 4.至此,我们已经成功创建了本地GIT ...

  3. CF1038D Slime 构造

    题目大意: 有nnn只史莱姆qwq,每只史莱姆有一个分数,每次一只史莱姆可以吞掉左边的或者右边的史莱姆(要是有的话),然后ta的分数会减去被吞的史莱姆的分数,问最后剩下的史莱姆分数最大为多少 输入格式 ...

  4. P3376 【模板】网络最大流(luogu)

    P3376 [模板]网络最大流(luogu) 最大流的dinic算法模板(采取了多种优化) 优化 时间 inline+当前弧+炸点+多路增广 174ms no 当前弧 175ms no 炸点 249 ...

  5. nefu 84 ( 拓展欧几里德模板题 )

    链接:传送门 思路:拓展欧几里德模板题,设大圣至少翻转 t 次,大圣起始位置为 x ,大圣目标位置为 y + n * s ( 大圣到达目标位置 y 可能需要多圈,所以用 s 来表示圈数 ),因为只能逆 ...

  6. UVA272-TEX Quotes(紫书例题3.1)

    TeX is a typesetting language developed by Donald Knuth. It takes source text together with a few ty ...

  7. java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap

    最近在使用java PiO导入导出Excle在windos本机上运行没有问题: 但是!!问题来了!放到Linux服务器上部署后出现异常 java.lang.NoClassDefFoundError: ...

  8. Git 合并流程

    首先把自己的代码提交到自己的分支 再把master[主分支]的代码拉下来更新 解决冲突 推送至自己的分支 请求合并到master[主分支]

  9. URAL 1517 Freedom of Choice

    Freedom of Choice Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on Ural. Orig ...

  10. luogu 1865 数论 线性素数筛法

    洛谷 1865 数论 线性素数筛法 最基本的线性素数筛法,当做复习欧拉筛法了,没有尝试过使用更暴力的筛法... WA了一次,手抖没打\n 传送门 (https://www.luogu.org/prob ...