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<cmath>
#include<queue>
#include<stack>
#include<map>
#include<utility>
#include<set>
#include<bitset>
#include<vector>
#include<functional>
#include<deque>
#include<cctype>
#include<climits>
#include<complex>
//#include<bits/stdc++.h>适用于CF,UOJ,但不适用于poj using namespace std; typedef long long LL;
typedef double DB;
typedef pair<int,int> PII;
typedef complex<DB> CP; #define mmst(a,v) memset(a,v,sizeof(a))
#define mmcy(a,b) memcpy(a,b,sizeof(a))
#define fill(a,l,r,v) fill(a+l,a+r+1,v)
#define re(i,a,b) for(i=(a);i<=(b);i++)
#define red(i,a,b) for(i=(a);i>=(b);i--)
#define ire(i,x) for(typedef(x.begin()) i=x.begin();i!=x.end();i++)
#define fi first
#define se second
#define m_p(a,b) make_pair(a,b)
#define p_b(a) push_back(a)
#define SF scanf
#define PF printf
#define two(k) (1<<(k)) template<class T>inline T sqr(T x){return x*x;}
template<class T>inline void upmin(T &t,T tmp){if(t>tmp)t=tmp;}
template<class T>inline void upmax(T &t,T tmp){if(t<tmp)t=tmp;} const DB EPS=1e-;
inline int sgn(DB x){if(abs(x)<EPS)return ;return(x>)?:-;}
const DB Pi=acos(-1.0); inline int gint()
{
int res=;bool neg=;char z;
for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());
if(z==EOF)return ;
if(z=='-'){neg=;z=getchar();}
for(;z!=EOF && isdigit(z);res=res*+z-'',z=getchar());
return (neg)?-res:res;
}
inline LL gll()
{
LL res=;bool neg=;char z;
for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());
if(z==EOF)return ;
if(z=='-'){neg=;z=getchar();}
for(;z!=EOF && isdigit(z);res=res*+z-'',z=getchar());
return (neg)?-res:res;
} const LL Mod=; LL N,M;
LL ans; inline LL power(LL a,LL k)
{
LL x=;
while(k){if(k&)x=x*a%Mod;a=a*a%Mod;k>>=;}
return x;
} LL S[]; inline LL C(LL N,LL M)
{
if(M< || M>N)return ;
LL x=S[N],y=S[N-M]*S[M]%Mod,res;
res=x*power(y,Mod-)%Mod;
res=(res%Mod+Mod)%Mod;
return res;
} //y=x+1
//y=x-M-2
inline void change(LL &x,LL &y,int f)
{
LL dx,dy;
if(f==)
{
dx=x;dy=y-;
x=dy;y=dx;
y++;
}
else
{
dx=x;dy=y+M+;
x=dy;y=dx;
y-=M+;
}
} int main()
{
freopen("bzoj4005.in","r",stdin);
freopen("bzoj4005.out","w",stdout);
LL i;
S[]=;re(i,,)S[i]=S[i-]*i%Mod;
N=gll(),M=gll();
ans=C(N+N+M+,N);LL x,y;int f;
x=N+M+;y=N;f=;
while()
{
change(x,y,f);
if(!(x>= && y>=))break;
if(f==) ans=(ans-C(x+y,x))%Mod; else ans=(ans+C(x+y,x))%Mod;
f^=;
}
x=N+M+;y=N;f=;
while()
{
change(x,y,f);
if(!(x>= && y>=))break;
if(f==) ans=(ans-C(x+y,x))%Mod; else ans=(ans+C(x+y,x))%Mod;
f^=;
}
ans=(ans%Mod+Mod)%Mod;
cout<<ans<<endl;
return ;
}

bzoj4005[JLOI2015]骗我呢的更多相关文章

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

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

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

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

  3. [JLOI2015]骗我呢

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

  4. 【BZOJ4005】[JLOI2015]骗我呢

    题意: Alice和Bob在经过了数学的洗礼之后,不再喜欢玩对抗游戏了,他们喜欢玩合作游戏.现在他们有一个n×m的网格,Alice和Bob要在一定规则下往网 格里填数字,Alice和Bob都是聪明绝顶 ...

  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. 认识v$fixed_view_definition

    认识v$fixed_view_definition v$fixed_view_definition 这个视图功能很强,可以将一些视图的数据来源(视图的定义)给找出来.直接举例:   1.v$sessi ...

  2. jQuery的基本语法

    index.html代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  3. 分布式内存对象缓存 memcached

    分布式内存对象缓存 许多Web 应用程序都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示.但随着数据量的增大,访问的集中,就会出现REBMS的负担加重,数据库响应恶化,网站显示延迟等 ...

  4. DB2 错误编码 查询(二)(转)

    DB2 SQLSTATE 讯息 类代码 42 语法错误或访问规则违例表 32. 类代码 42:语法错误或访问规则违例 SQLSTATE 值   含义 42501 授权标识不具有对标识对象执行指定操作的 ...

  5. Windows下Hadoop的环境安装[转]

    1.下载并安装Cygwin,记得cygwin安装中要把SSH选择上,因为后面Hadoop会用到,不详述cygwin的安装过程.我是安装在D:\cygwin下 2.配置系统环境变量 在windows命令 ...

  6. 局域网指定 IP 地址后无法上网的问题

    子网掩码.默认网关.DNS 与局域网设置有关,建议指定前先 运行 cmd -> ipconfig /all 查看一下自动获取的信息. 另外留意指定IP 后需打开高级设置 -> WINS,勾 ...

  7. swift和oc混编

    请参考这篇博客:点击查看

  8. python模块基础之OS模块

    OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作. 可以查看OS模块的帮助文档: >>> import os #导入os模块 ...

  9. DataGrid( 数据表格) 组件[7]

    本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...

  10. F# 可以把几个函数组合成新函数

    C#能做的,F#基本都能做,但F#能做的,C#未必能做. F#中的函数可以把几个函数组合起来使用.下面的例子是把由 function1 和 function2 这两个函数通过运算符“>>” ...