解题报告 Valentine‘s seat
1. 题目
1.Valentine’s Seat(seat)
描述
今天是情人节的前一天,小杉还在电影院打工(惨啊…)。
老板很懂得情人节的情调,要小杉提前做好准备,那么现在给小杉的任务是对电影院的座椅上色。
电影院总共n+1行m+1列的椅子排成一个矩阵。第一行的椅子已经全部上了粉红色,第一列从第二个开始的椅子已经全部上了天蓝色。
一个可爱的上色方案应该满足除了第一行第一列以外,对任意的一个椅子,它的颜色应当和它左边的一把椅子(同行)或上面的一把椅子(同列)颜色相同。
小杉现在想知道总共有多少种可爱的上色方案。
输入格式
一行两个整数n,m(1<=n,m<=3000)
输出格式
仅有一行,一个整数,为上色方案数对19900801取模的结果
样例输入
1 1
样例输出
2
样例解释
唯一可上色的一把椅子,不是粉红就是天蓝,怎样都是可爱的
2. 题目实质
求一种特殊的 01 矩阵。
3. 算法
递推,其实这也是一个数学题。
抽象出模型,就是01矩阵的问题,问题即为求最上一行全是1,最左一列全是0的01矩阵,任意一个元素与其前趋或上继相同的情况数。而这种情况等价于任意一行的0的个数大于等于上一行的0的个数(假如比上一行少的话,上一行多出的0的下继为1,这个1不满足题意)。
接下来就很简单了,我们令f[n,k]为第n+1行有k+1个0的情况,则
f[n,k]=sum{f[n-1,j]}(j=1..k)
简单变换得
f[n,k]=f[n-1,k]+f[n,k-1]
初始状态为f[0,0]=1,结果为f[n,m] (f[n,m]=sum{f[n-1,j]}(j=1..m))
空间限制的问题,使用滚动数组可以解决。
其实仔细观察的话,会发现结果就是C(n+m,n)
注意 n=0 (第 0 行) ,或是 k=0 (这一行这有最边上那一个零) 时 ,f=1 。
4. 注意事项
话说这个题我的式子推对了,初始化打错了 XD 。
所以,注意初始化啊啊。
5. 时空复杂度
O(n,m)
6. 程序代码
LZY(std) (pascal)
const
k=19900801;
var
a:array[0..3000,0..3000]of longint;
n,m:longint;
i,j:longint;
begin
assign(input,'seat.in');reset(input);
assign(output,'seat.out');rewrite(output);
readln(n,m);
for i:=1 to n do a[i,0]:=1;
for i:=1 to m do a[0,i]:=1; //此处第一行为第 0 行
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=(a[i-1,j]+a[i,j-1])mod k;
end;
end;
if(a[n,m]<0)then writeln(a[n,m]+k) else writeln(a[n,m]); //防止 mod 过头
close(input);
close(output);
end.
转载于:https://www.cnblogs.com/SueMiller/archive/2011/08/09/2132317.html
解题报告 Valentine‘s seat相关推荐
- [LeetCode]849. Maximize Distance to Closest Person 解题报告(C++)
[LeetCode]849. Maximize Distance to Closest Person 解题报告(C++) 题目描述 In a row of seats, 1 represents a ...
- uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)
线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报 分类: ...
- 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...
- 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 解题报告(十三)中国剩余定理(ACM / OI)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 解题报告(四)生成函数(ACM/ OI)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 解题报告(一)E、(BZOJ4589)Hard Nim(博弈论 + FWT)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
最新文章
- PHP“Cannot use object of type stdClass as array”
- 终结 Python 原生字典?这个库要逆天改命了
- php 动态生成文件,php动态程序生成静态文件示例
- 【接口时序】2、Verilog实现流水灯及与C语言的对比
- 基因表达聚类分析之初探SOM - 自组织特征图
- AutoMapper使用
- MongoTemplate.findById查不到数据的一种情况:由写入时未指定_id造成的
- 服务器访问危险网站降权重,网站权重下降,原因有哪些?如何处理?
- WORD批量更改所有图片大小
- 1 熊猫烧香病毒分析
- 卖家如何利用关键词进行SEO优化以提高排名?
- Cox回归+Cox比例风险回归模型
- 自定义ViewGroup
- 【ant.design】解决Instance created by `useForm` is not connected to any Form element.
- 【Flink】Deployment took more than 60 seconds. Please check if the requested resources are available
- Qt父窗体子窗体获取绝对相对坐标全面剖析(待续)
- 开发手机蓝牙硬件APP如何实现蓝牙自动重连机制
- IDEA 设置默认的JDK
- 【WIN10蓝屏】win10系统蓝屏原因调查
- Linux2.6.33下ZC301USB摄像头使用教程
热门文章
- 阿尔法贝塔阀原理_图总结 - 阿尔法个贝塔 - 博客园
- Jenkins中切换devtoolset
- eclipse没有日志_强化公共DHT以抵抗eclipse攻击,ipfs官方还说了什么?
- Jmeter BeanShell学习(一) - BeanShell取样器(一)
- 《YOLO算法笔记》(草稿)
- 《单线程的build hash table、write rows to chunks、hash join的步骤以及流程图》
- 什么是Java文件?
- ruby 怎么抛异常_Ruby中的异常处理
- cd-rom门锁定什么意思_CD-ROM的完整形式是什么?
- spring 动态代理_分析动态代理给 Spring 事务埋下的坑