SHTSC记 13.9.21

首先是上次课的答案

Fib数列 的两道题显然都是Fib啊


组合数 求路径条数 当然可以递推,而一个绝妙的方法是 将一条路径看成是两种箭头的组合,答案直接C(m+n,n)结束,而这个方法的适用性不强


3.1 经典的结论了,设答案为f(n),则f(n)=f(n-1)+1+f(n-1) f(1)=1  通项式显然是2^n -1

3.2 也不难, 先把上面n-2个盘子移开,然后移动底层2个盘子,再移回上面的盘子。

3,3 难题,具体数学里有

3.4 设两个变量 顺时针为c逆时针为a c(n)=2*a(n-1) +1 a(n)=a(n-1)+1+c(n-1)+1+a(n-1)


4.1 设f(n,k)为最大数不超过k的答案,则答案为f(n,n) f(n,k)=f(n-k,k)+f(n,k-1) 上课时完全没有提到边界,首先n-k必须>=0 f(0,k)=1 另外k也要>0

4.2 设f(n,k)为答案 递推比较奇葩,如果有1,转移到f(n-1,k-1)如果没有1转移到f(n-k,k)  f(0,k)=1

 

卡特兰数的前几项:1 1 2 5 14

5.1 考虑根节点,左子树有k个节点,则右子树有n-k-1个节点 构成了卡特兰数

5.2 考虑和第一个(匹配的右括号的位置,左边有k个括号则右边有n-k-1个括号 搞定

5.3 把进栈看成(出栈看成) 变成了5.2

5.4 5.2中任何时候(的个数>=)的个数所以。。

5.5 任何时候↓的个数>=→的个数 所以

//别怪我啊,马融就是这么讲的

 

6.1 若n为偶数,显然第1轮把偶数号的全部干掉了(设第一个人是1号) 转化为f(n/2) 而调用之后要将返回的值乘以2再减1

奇数的话,一轮下来还是干掉了所有偶数 转化为f(n/2+1)  然后乘以2加1(因为这次是从3开始数)

这个递推式可以在对数时间内完成,而马融给出了一种更牛的办法,把n写成二进制,把首个1扔到末尾就行了

6.2 把n转换成n-1,然后进行对应,1对应k+1 2对应k+2 答案是   ( f(n)+k -1) % n +1

6.3 前n轮 每个约瑟夫数都大于n即可 poj上的一道题,打表过的

6.4 计算出约瑟夫数,平移即可


答案部分结束 

 

这次课人多了几个,马融还是迟到,不过发了份好东西给我们,他整理的USACO经典题库,分了类,NOIP非常适用。

 

内容是区间DP

 

例1 一个字符串最少删几个字符变成回文

经典水题,老师还很认真地手算了一遍作为演示

 

例2 T37 拿金币 也是经典题

 

例3 石子合并,Wiki的天梯里有,还是我不看键盘写代码的第一题

有一个变种 改成圆环怎么做

 

例4 T39

 

然后号称NOIP今年必考**和***

 

然后介绍了下数论,假如初赛要你计算 32^100000 mod 71怎么办

 

然后就结束了

插曲:

二战为什么日本的飞机一开始很强后来被美国灭了呢,因为他们的飞行员的培训方式不对。看关于飞行的电影,然后就上战场,当然会坠机啊。

以此来告诉我们自己写代码的重要性

我们编的时候老师对我说:你们学校Greatwall1995很厉害啊,顺便说我的代码写的至少很有框架(因为旁边同学写搜索没记忆化,我按照《入门经典》的方式写了标准的记忆化)

 


 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值