【题解】洛谷P1350 车的放置(矩阵公式推导)
洛谷P1350:https://www.luogu.org/problemnew/show/P1350
思路
把矩阵分为上下两块N与M
放在N中的有i辆车 则放在M中有k-i辆车
N的长为a 宽为b
M的长为a+c 宽为d
在每个矩阵中的放置种类公式如下:
A(长度,车辆)*C(宽度,车辆)
给出证明:
比如对于N来说
可以在a列中找出i列放入车 所以是A(a,i)
而且有C(b,i)种选择列的方式
由此可得 枚举放在N和M的车有几辆 并计算两个矩阵种类之积即可
PS:对于矩阵M来说A为A(a+c-i,k-i) 而不是A(a+c,k-i) 因为每排只能放1辆而且有i辆已经放在N中了
代码
#include<iostream>
using namespace std;
#define mod 100003
#define ll long long
#define maxn 2005
ll a,b,c,d,k,ans;
ll fc[maxn][maxn];
ll A(ll n,ll m)
{
ll sum=;
for(ll i=;i<=m;i++)
sum=sum%mod*(n-m+i)%mod;//排列递推
return sum;
}
ll C(int n,int m)
{
if(fc[n][m]) return fc[n][m];//记忆化
if(m>n) return ;//如果放不下了
if(n==m||m==) return fc[n][m]=;
fc[n][m]=(C(n-,m-)%mod+C(n-,m)%mod)%mod;//组合递推
return fc[n][m];
}
int main()
{
cin>>a>>b>>c>>d>>k;
for(ll i=;i<=k;i++)//枚举i辆车放在N中 k-i辆车放在M中
ans=(ans+A(a,i)%mod*C(b,i)%mod*A(a+c-i,k-i)%mod*C(d,k-i)%mod)%mod;
cout<<ans;
}
【题解】洛谷P1350 车的放置(矩阵公式推导)的更多相关文章
- 洛谷 P1350 车的放置
洛谷 P1350 车的放置 题目描述 有下面这样的一个网格棋盘,a,b,c,d表示了对应边长度,也就是对应格子数. 当a=b=c=d=2时,对应下面这样一个棋盘 要在这个棋盘上放K个相互不攻击的车,也 ...
- 题解——洛谷P3390 【模板】矩阵快速幂(矩阵乘法)
模板题 留个档 #include <cstdio> #include <algorithm> #include <cstring> #define int long ...
- P1350 车的放置
P1350 车的放置 设$f[i][j]$为当前推到第$i$列,该列高度$h$,已经放了$j$个车的方案数 则$f[i][j]=f[i-1][j]+f[i-1][j-1]*(h-j+1)$ 但是我们发 ...
- 洛谷P3758/BZOJ4887 [TJOI2017] 可乐 [矩阵快速幂]
洛谷传送门,BZOJ传送门 可乐 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 299 Solved: 207 Description 加里敦星球的人 ...
- 题解 洛谷P5018【对称二叉树】(noip2018T4)
\(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...
- 题解 洛谷 P3396 【哈希冲突】(根号分治)
根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种 ...
- 题解-洛谷P5410 【模板】扩展 KMP(Z 函数)
题面 洛谷P5410 [模板]扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\).\(b\) 与 \(a\) 的每一个后缀的 L ...
- 题解-洛谷P4229 某位歌姬的故事
题面 洛谷P4229 某位歌姬的故事 \(T\) 组测试数据.有 \(n\) 个音节,每个音节 \(h_i\in[1,A]\),还有 \(m\) 个限制 \((l_i,r_i,g_i)\) 表示 \( ...
- 题解-洛谷P4724 【模板】三维凸包
洛谷P4724 [模板]三维凸包 给出空间中 \(n\) 个点 \(p_i\),求凸包表面积. 数据范围:\(1\le n\le 2000\). 这篇题解因为是世界上最逊的人写的,所以也会有求凸包体积 ...
随机推荐
- STL:set用法总结
一:介绍 set是STL的关联式容器,以红黑树(Red-Black Tree)作为底层数据结构.自动去重,保证每个元素唯一,并对数据进行排序. 命名空间为std,所属头文件为<set> 二 ...
- Android中dip, dp, px,pt, sp之间的区别:
Android中dip.dp.sp.pt和px的区别 1.概述 过去,程序员通常以像素为单位设计计算机用户界面.例如:图片大小为80×32像素.这样处理的问题在于,如果在一个每英寸点数(dpi)更 ...
- Android中改变Activity的不同icon:activity-alias
Android设置title中的Icon有几种方法,介绍如下: 一种是直接在AndroidManifest.xml文件中设置android:icon属性,这种方法简单有效,应该算是我们最常用的设置Ic ...
- 简单的 shell 脚本 切分日志
为避免日志过大,需要按天分割日志,定时计划任务脚本如下: /data/shell/backup_yesterday_nginx_log.sh declare logs_path="/data ...
- FZU 2122——又见LKity——————【字符串匹配、暴力】
Problem 2122 又见LKity Accept: 407 Submit: 1413Time Limit: 1000 mSec Memory Limit : 32768 KB Pr ...
- [转]NLog Layout Renderers ${}
https://github.com/nlog/NLog/wiki/Layout-Renderers Layout renderers are template macros that are use ...
- Java 获取当前时间距离当天凌晨的秒数
原文出自:https://blog.csdn.net/seesun2012 在前期项目中遇到一个客户端与服务器间的时间同步问题,需要获取到当前时间与当天凌晨时间距离的秒数,写这篇文章主要是为了总结一下 ...
- Android java获取凌晨的时间戳
这两天有一个需求是查询用户匹配的推荐信息,包含一个有效时间段,以天为单位,0时0分0秒这种. 通常java中有两种方案: 第一种:Calendar.这种比较简单,也最常见.代码如下: Calendar ...
- eclipse中手动设置library,选择编译工具方法
target=android-25sdk.buildtools=25.0.2 target=android-26android.library=falseandroid.library.referen ...
- 解决未安装unit测试和jest的Vue项目运行karma start时的错误
一.起因 在#单元测试#以karma+mocha+chai 为测试框架的Vue webpack项目(一)文中,说明了是对已有的Vue项目进行测试框架的搭建,并进行测试.但是此项目在利用 vue-cli ...