2019牛客多校Monotonic Matrix

Monotonic Matrix

题意:

问有多少个n * m的矩阵A满足一下情况:答案mod 1e9+7

  1. 矩阵A的所有元素∈{0,1,2}
  2. Ai,j<=Ai+1,jA_{i,j}<=A_{i+1,j}Ai,j<=Ai+1,j
  3. Ai,j<=Ai,j+1A_{i,j}<=A_{i,j+1}Ai,j<=Ai,j+1

题解:

我们先看看这个式子有啥规律?
对于每一行,每一列都是非下降序列,也就是说如果有一位是2,其后面都是2,如果有一位是1,其前面都是1
那我们考虑元素01和12的分界线
是(n,0)到(0,m)的两条不相交(可重合的路径)
第一个分界线以上的点是一种,两条分界线之间是一种,第二个分界线以下是一种(详细看图)
在这里插入图片描述
不过现在这个两个线的起终点一样,我们可以将第一个线进行偏移,变成起点为(n-1,-1)到(-1,m-1).(注意这两个线不是弧形的,而是水平竖直线)
现在问题就是起点为(n-1,-1),终点为(-1,m-1)和起点为(n,0),终点为(0,m),两个不相交路径的条数
怎么做?引入LGV定理
就有:
起点{a1,a2a_{1},a_{2}a1,a2}={(n,0),(n−1,−1)(n,0),(n-1,-1)(n,0),(n1,1)}
终点{b1,b2b_{1},b_{2}b1,b2}={(0,m),(−1,m−1)(0,m),(-1,m-1)(0,m),(1,m1)}
带入公式:
ans=∣(a1,b1)(a1,b2)(a2,b1)(a2,b2)∣ans= \begin{vmatrix} (a_{1},b_{1})&(a_{1},b_{2})\\ (a_{2},b_{1})&(a_{2},b_{2})\\ \end{vmatrix} ans=(a1,b1)(a2,b1)(a1,b2)(a2,b2)
(a1,b1)(a_{1},b_{1})(a1,b1)表示从(n,0)到(0,m)的路径数,从(n,0)到(0,m)共有n+m步,我们选择其中n步向上走,剩下的自然是向右走,共Cn+mnC_{n+m}^{n}Cn+mn种方法,其他同理
最终答案ans=Cn+mn∗Cn+mn−1−Cn+mm−1−Cn+mnC_{n+m}^{n}*C_{n+m}^{n-1}-C_{n+m}^{m-1}-C_{n+m}^{n}Cn+mnCn+mn1Cn+mm1Cn+mn

代码:

#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll= 1e18;
const int INF_int= 0x3f3f3f3f;
void read(){};
template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar)
{x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...);
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
void rd_test()
{
#ifdef ONLINE_JUDGE
#elsestartTime = clock ();freopen("data.in", "r", stdin);
#endif
}
void Time_test()
{
#ifdef ONLINE_JUDGE
#elseendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
const int maxn=3e6+9;
const int mod=1e9+7;
ll inv[maxn];
ll f[maxn];
ll f0[maxn];
void init(int N){inv[1]=inv[0]=1;f[1]=f[0]=1;f0[0]=f0[1]=1;for(int i=2;i<=N;i++){f[i]=f[i-1]*i%mod;f0[i]=(mod-mod/i)*f0[mod%i]%mod;inv[i]=inv[i-1]*f0[i]%mod;}
}
ll C(ll a,ll b){return 1ll*f[a]*inv[b]%mod*inv[a-b]%mod;
}
int main()
{//rd_test();init(10000);ll n,m;while(~scanf("%lld%lld",&n,&m)){cout<<(C(n+m,n)*C(n+m,n)%mod-C(n+m,n-1)*C(n+m,m-1)%mod+mod)%mod<<endl;}//Time_test();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF框架教程 | 从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器

之前时间一直在使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发&#xff0c;是时候总结一下了。Caliburn.Micro(https://blog.csdn.net/lzuacm/article/details/78886436)是一个轻量级的WPF框架&#xff0c;简化了WPF中的不少用法&#xff0c;推荐做WPF开发时优先使用。真…

微软全都要!Win10引入真Linux内核

继将 Bash shell、原生 OpenSSH、WSL 引入 Windows&#xff0c;以及在微软商店提供 Ubuntu、SUSE Linux 和 Fedora 等发行版&#xff0c;正在举办的 Microsoft Build 2019 大会上&#xff0c;微软又宣布了一个重大的决定 —— 将完整的 Linux 内核引入 Windows 10。按照微软的说…

牛客练习赛89--牛牛防疫情

牛牛防疫情 题意&#xff1a; 牛牛用卖烤串赚的钱买了一款游戏&#xff0c;这款游戏的地图是一个 n*n 的网格&#xff0c;其中有 m 个地区存在感染源&#xff08;红色&#xff09;&#xff0c;其余地区为安全区&#xff08;白色&#xff09;。已知一个感染源可同时将与其相邻…

Kafka基本知识整理

首先Kafka是一个分布式消息队列中间件&#xff0c;Apache顶级项目&#xff0c;https://kafka.apache.org/ 高性能、持久化、多副本备份、横向扩展。生产者Producer往队列里发送消息&#xff0c;消费者Consumer从队列里消费消息&#xff0c;然后进行业务逻辑。应用场景主要有&…

牛客练习赛89——牛牛小数点(未解决)

牛牛小数点 题意&#xff1a; 题解&#xff1a; 本题先说结论&#xff1a; 对于一个数x2a∗5b∗px2^a*5^b*px2a∗5b∗p 如果p1,也就是质因子只有2和5&#xff0c;则x是不循环小数&#xff0c;即f(x)0如果p!1,则x是循环的&#xff0c;且循环开始于小数点后第1max{p2,p5p_{2},…

针对.NET Core, Xamarin以及.NET的自动类型安全Rest库: Refit

本文大部分内容是针对Refit官网的翻译。官网地址&#xff1a; https://github.com/reactiveui/refitRefit是一个类似于Retrofit的Restful Api库&#xff0c;使用它&#xff0c;你可以将你的Restful Api定义在接口中。例如&#xff1a;public interface IGitHubApi { [Get(&quo…

2019牛客多校第一场

2019牛客多校第一场 题号题目知识点AMonotonic MatrixBSymmetric MatrixCFluorescent 2DTwo GraphsERemovalFSum of MaximumGSteiner TreeHLongest PathISubstringJDifferent Integers

用ProGet搭建本地私有NuGet仓库

搭建ProGet下载官网下载Windows版本的Inedo Hub &#xff08;https://inedo.com/proget/download&#xff09;下载下来的软件名&#xff1a; ProGetInstaller.exe安装点击ProGetInstaller.exe&#xff0c;出现如下安装界面Registration 选项选择 Free ;SQL Sever 选项选择 Spec…

CQRS架构下Equinox开源项目分析

一.DDD分层架构介绍本篇分析CQRS架构下的Equinox开源项目。该项目在github上star占有2.4k。便决定分析Equinox项目来学习下CQRS架构。再讲CQRS架构时&#xff0c;先简述下DDD风格&#xff0c;在DDD分层架构中&#xff0c;一般包含表现层、应用程序层(应用服务层)、领域层(领域服…

CF1548B Integers Have Friends

CF1548B Integers Have Friends 题意&#xff1a; 给定 n 和一个长度为 n 的数组 a&#xff0c;求一个最长的区间 [l,r]\left[l,r\right][l,r]&#xff0c;使得存在 m≥2和km\geq 2 和 km≥2和k&#xff0c;对于所有 l≤i≤rl\leq i\leq rl≤i≤r,ai≡k(modm)a_{i}≡k(\mod m…

仿B站(一) 目的分析以及创建 WebAPI + Angular7 项目

前言&#xff1a;本系列文章主要为对所学 Angular 框架的一次微小的实践&#xff0c;对 b站页面作简单的模仿。本系列文章主要参考资料&#xff1a;微软文档&#xff1a;    https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/?viewaspnetcore-2.1&tabsw…

Codeforces Round #736 (Div. 1Div2)

Codeforces Round #736 (Div2) Codeforces Round #736 (Div. 1) 题号题目难度AGregor and Cryptography签到BGregor and the Pawn Game模拟CWeb of Lies思维DIntegers Have Friends思维st表EThe Three Little PigsF1Gregor and the Odd Cows (Easy)F2Gregor and the Odd Cows …

Mac中搭建Kubernetes

Kubernetes是Google和RadHat公司共同主导的开源容器编排项目&#xff0c;功能非常强大&#xff0c;也非常的火热和流行&#xff0c;但同时里面也有很多的概念和名词需要我们去学习和理解。学习任何一个技术先需要把基础环境搭建起来&#xff0c;本篇就介绍怎样在Mac中启动单节点…

CF1458C Latin Square

CF1458C Latin Square 题意&#xff1a; T 组测试数据&#xff0c;每次给一个 nnn\times nnn 的矩阵&#xff0c;每行每列都是个 1→n1\to n1→n 的排列。有 m 次操作&#xff0c;如果是 UDLR 就是要把整个矩阵每行/每列往一个方向循环移动一格。如果是 IC&#xff0c;就是把…

树莓派也跑Docker和.NET Core

树莓派就是一个卡片大小的迷你电脑。有了电脑&#xff0c;我们当然得先安装系统。系统下载https://www.raspberrypi.org/downloads/raspbian/ &#xff0c;我选择的Raspbian Stretch Lite&#xff0c;不带界面的最小安装。下载win32diskimager&#xff08;烧录系统&#xff09;…

Codeforces Round #700 (Div. 1Div. 2)

Codeforces Round #700 (Div. 1&&Div. 2) 题号题目知识点AYet Another String Game签到BThe Great Hero贪心CSearching Local Minimum思维二分DPainting the Array I贪心EPainting the Array II贪心FContinuous City二进制构造GOdd Mineral Resource莫队分块域值HScho…

开源]OSharpNS 步步为营系列 - 1. 业务模块设计

OSharpNS全称OSharp Framework with .NetStandard2.0&#xff0c;是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架。这个框架使用最新稳定版的.NetCore SDK&#xff08;当前是.NET Core 2.2&#xff09;&#xff0c;对 AspNetCore 的配置、依赖注入、日志、缓存、实体…

CF1479A Searching Local Minimum

CF1479A Searching Local Minimum 题意&#xff1a; 题解&#xff1a; 先说结论&#xff1a; 若l&#xff0c;r满足&#xff1a; al−1>al,ar<ar1a_{l-1}>a_{l},a_{r}<a_{r1}al−1​>al​,ar​<ar1​al,al1,....,ara_{l},a_{l1},....,a_{r}al​,al1​,....…

C#8.0的两个有趣的新特性以及gRPC

最近每天忙着跑很多地方&#xff0c;回家就不想动了&#xff0c;没什么心情写东西。今天有空&#xff0c;稍微写一点。下文中&#xff1a;关于C#语法特性的部分需要Visual Studio 2019支持。关于.NET Core的部分需要安装.NET 3.0 Preview4&#xff0c;低版本或许也可以但我没实…

CF1479B Painting the Array

CF1479B1 Painting the Array I CF1479B1 Painting the Array II 题意&#xff1a; 本题与 CF1480D2 的唯一区别是本题询问最大可能解. 给定一个数组a,你将ai染为bi色,其中b是由你指定的一个01数组.将a数组中被染成0色的数字取出来并依在a中出现的顺序排列,组成数组a(0).同理…