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相关推荐

  1. [LeetCode]849. Maximize Distance to Closest Person 解题报告(C++)

    [LeetCode]849. Maximize Distance to Closest Person 解题报告(C++) 题目描述 In a row of seats, 1 represents a ...

  2. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  3. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  4. 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...

  5. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  6. 解题报告(十三)中国剩余定理(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  7. 解题报告(四)生成函数(ACM/ OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  8. 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  9. 解题报告(一)E、(BZOJ4589)Hard Nim(博弈论 + FWT)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

最新文章

  1. PHP“Cannot use object of type stdClass as array”
  2. 终结 Python 原生字典?这个库要逆天改命了
  3. php 动态生成文件,php动态程序生成静态文件示例
  4. 【接口时序】2、Verilog实现流水灯及与C语言的对比
  5. 基因表达聚类分析之初探SOM - 自组织特征图
  6. AutoMapper使用
  7. MongoTemplate.findById查不到数据的一种情况:由写入时未指定_id造成的
  8. 服务器访问危险网站降权重,网站权重下降,原因有哪些?如何处理?
  9. WORD批量更改所有图片大小
  10. 1 熊猫烧香病毒分析
  11. 卖家如何利用关键词进行SEO优化以提高排名?
  12. Cox回归+Cox比例风险回归模型
  13. 自定义ViewGroup
  14. 【ant.design】解决Instance created by `useForm` is not connected to any Form element.
  15. 【Flink】Deployment took more than 60 seconds. Please check if the requested resources are available
  16. Qt父窗体子窗体获取绝对相对坐标全面剖析(待续)
  17. 开发手机蓝牙硬件APP如何实现蓝牙自动重连机制
  18. IDEA 设置默认的JDK
  19. 【WIN10蓝屏】win10系统蓝屏原因调查
  20. Linux2.6.33下ZC301USB摄像头使用教程

热门文章

  1. 阿尔法贝塔阀原理_图总结 - 阿尔法个贝塔 - 博客园
  2. Jenkins中切换devtoolset
  3. eclipse没有日志_强化公共DHT以抵抗eclipse攻击,ipfs官方还说了什么?
  4. Jmeter BeanShell学习(一) - BeanShell取样器(一)
  5. 《YOLO算法笔记》(草稿)
  6. 《单线程的build hash table、write rows to chunks、hash join的步骤以及流程图》
  7. 什么是Java文件?
  8. ruby 怎么抛异常_Ruby中的异常处理
  9. cd-rom门锁定什么意思_CD-ROM的完整形式是什么?
  10. spring 动态代理_分析动态代理给 Spring 事务埋下的坑