ACM课件(lecture04)递推求解
北京大学ACM国际大学生程序设计竞赛课件4

1048
输入:
Follow My Logic
输入数据包含多个输入数据块.每个输入数据块包含以 下部分:
一个电路图,以上述形式表示,用只含'*'的单独一行结束. 多行01字符串,每行对应一组数据,包含26个0或1,分别对应AZ的值.用只含'*'的单独一行结束
输出:
对每组输入数据,输出对应的电路输出值. 每个结果占一行. 不同输入数据块的输出结果之间用空行隔开.
问题求解与程序设计 第三讲 模拟问题李Βιβλιοθήκη 新 2004.2 – 2004.6
内容提要
作业总结 - 1016 作业总结 - 1048 讨论 – 1207 作业 – 1207
1016 Numbers That Count
题意 count the numbers of each digit to form the new number 123321 -〉212223 1)Self-inventory 2) enter self inventory after k steps 3) enter inventory loop of length k 4) can not determined after 15 steps
Can not be classified
源程序
1016 c0400348274.txt 1016 c0400348198.txt
1048
Follow My Logic
对于一个逻辑电路和给定的输入值,计算该电路 对于一个逻辑电路和给定的输入值, 的输出值.该逻辑电路有一个或多个输入端, 的输出值.该逻辑电路有一个或多个输入端, 零 个或多个逻辑门电路,和一个输出端. 个或多个逻辑门电路,和一个输出端.本题中用 标准ASCll字符来表示逻辑电路:横竖导线分别 字符来表示逻辑电路: 标准 字符来表示逻辑电路 表示, 表示, 用'-'和'|'表示,转折点用'+'表示,输入端用 和 表示 转折点用' 表示 大写字母' 表示, 表示, 大写字母'A'-'Z'表示,输出端用问号'?'表示, 表示 输出端用问号' 表示 小写字母' 表示取反 与门, 表示取反. 小写字母'o'表示取反.与门,或门及电路各部 分示例如下: 分示例如下:
杭电acm初学者通用课件

ACM/ICPC的意义
1 2 3
提高编程能力和算法设计能力
ACM/ICPC的题目通常涉及各种算法和数据结构 ,通过解决这些题目,可以提高编程能力和算法 设计能力。
培养团队协作和沟通能力
入/删除操作。
树形数据结构
包括二叉树、多叉树、B树 等。这些数据结构用于表 示层次关系和进行高效的
查找操作。
图数据结构
由节点和边组成的数据结 构,用于表示对象之间的 关系。常见的图数据结构 有邻接矩阵和邻接表等。
03
刷题技巧
如何选题
难度适中
选择难度适中的题目,逐步提升解题能力 。
覆盖面广
尽量选择涉及多种知识点的题目,提高知 识掌握的全面性。
对算法的原理和实现细节理解不足,导致 在解题过程中出现错误。
代码实现错误
由于编程语言和技巧不熟练,导致代码实 现出现错误。
忽视题目要求
在解题过程中忽视题目的特殊要求,导致 答案不符合题目要求。
高分选手的共性
01 良好的数学基础
高分选手通常具备扎实的数学 基础,能够快速理解和运用数 学原理。
02 高效的算法思维
详细描述
参与开源项目可以了解实 际项目中的算法和数据结 构应用,组织线上讨论可 以与其他人交流学习经验 ,拓宽视野和思路。
总结词
积极参与开源社区和线上 讨论。
详细描述
通过参与开源社区和线上 讨论,可以了解最新的技 术动态和趋势,同时也可 以结交志同道合的朋友, 共同进步。
06
结束语
不断实践和学习
高分选手在解题时能够迅速找 到合适的算法,并高效实现。
华东师大ACM算法课件第四讲-递归技术

ECNU
Yinping Liu
正整数 n 的这种表示称为正整数 n 的划分。求正整 数 n 的不同划分个数。 例如正整数6有如下11种不同的划分:
6; 5+1; 4+2,4+1+1; 3+3,3+2+1,3+1+1+1; 2+2+2,2+2+1+1,2+1+1+1+1; 1+1+1+1+1+1。
ECNU
Yinping Liu
•M=2时,A(n,2)=A(A(n-1,2),1)=2A(n-1,2),和 A(1,2)=A(A(0,2),1)=A(1,1)=2,故A(n,2)= 2^n 。
22 2 2
n
•M=3时,类似的可以推出 •M=4时,A(n,4)的增长速度非常快,以至于没有适 当的数学式子来表示这一函数。
ECNU
Yinping Liu
Ackerman函数A(n,m)定义如下:
A(1,0) 2
A(0,m) 1
A(n,0) n2
m0 n2
A(n,m)A(A(n1,m),m1) n,m1
前2例中的函数都可以找到相应的非递归方式定义:
n ! 1 2 3 ( n 1 ) n
ECNU
Yinping Liu
ECNU
Yinping Liu
•定义单变量的Ackerman函数A(n)为:A(n)=A(n,n)。
•定义其拟逆函数α(n)为:α(n)=min{k|A(k)≥n}。 即α(n)是使n≤A(k)成立的最小的k值。
ACM算法指导精品PPT课件

第一章
算法设计常用到的基本策略
程序的灵魂
数据结构+算法=程序 算法设计思想 算法分析:从时空、适用范围来分析,重点考
虑时间效率和空间开销 复杂度分析 复杂度等级:多项式算法、指数级算法 五个重要的策略:
一 对应的策略
将问题对应成另一个易于思考的问题 A问题->B问题 B有现成算法,从而求解
<算法设计与分析>课程学习方法
1. 课堂精讲,课外多练,参考题解,精做(解 题)报告,提高程序设计能力,提高程序调 试能力,提高算法分析和优化能力;
2. 基本作业: SICILY上完成指定题目,完成典 型题目的解题报告
<算法设计与分析>课程学习方法
3.考试:ACM方式,网上自动测评,诚信是IT人立足之本! CS: (04级175人:10题2人, 9题
人,8:2,7:4,6:19,5:19,4:30,3:24,2:53, 1:8,0:11; 05级99人:8题2人,7题3人,6题2人,5题2人,4 题
8人,3题15人,2题35人,1题21人,0题11人; 06级105人:7题5人,6题3人,5题9人,4 题16人,3
题33人,2题16人,1题14人,0题11人) SS:06、07级185人( 7题4人,6题3人,5题4人,4
题3人,3题21人,2题41人,1题52人,0题57人)
<算法设计与应用>课程学习方法
Cs07:178人 8题1人,7题5人,6题10人,5题24人,4 题53人,3题31人,2题28人,1题14人,0题12人;
3.作业扩展内容:中大OJ 、国内OJ,每周一赛题目; 4.主要OJ:
Poj : http://
一 对应的策略
ACM常用算法

ACM常用算法1)递推求解:首先,确认:能否容易的得到简单情况的解;然后,假设:规模为N-1的情况已经得到解决;最后,重点分析:当规模扩大到N时,如何枚举出所有的情况,并且要确保对于每一种子情况都能用已经得到的数据解决。
例题1在一个平面上有一个圆和n条直线,这些直线中每一条在圆内同其他直线相交,假设没有3条直线相交于一点,试问这些直线将圆分成多少区域。
分析F(1)=2;F(n) = F(n-1)+n;化简后为F(n) = n(n+1)/2 +1;例题2 平面上有n条折线,问这些折线最多能将平面分割成多少块?分析把折线当作两天直线相交然后再减去交集延伸部分。
F= 2n ( 2n + 1 ) / 2 + 1 - 2n;2)贪心算法:在对问题求解时,总是作出在当前看来是最好的选择。
也就是说,不从整体上加以考虑,它所作出的仅仅是在某种意义上的局部最优解(是否是全局最优,需要证明)。
贪心算法的基本步骤包括1、从问题的某个初始解出发。
2、采用循环语句,当可以向求解目标前进一步时,就根据局部最优策略,得到一个部分解,缩小问题的范围或规模。
3、将所有部分解综合起来,得到问题的最终解。
例题1已知N个事件的发生时刻和结束时刻(见下表,表中事件已按结束时刻升序排序)。
一些在时间上没有重叠的事件,可以构成一个事件序列,如事件{2,8,10}。
事件序列包含的事件数目,称为该事件序列的长度。
请编程找出一个最长的事件序列。
分析不妨用Begin[i]和End[i]表示事件i的开始时刻和结束时刻。
则原题的要求就是找一个最长的序列a1<a2<…<an,满足:Begin[a1]<End[a1]<=…<=Begin[an]<End[an];可以证明,如果在可能的事件a1<a2<…<an中选取在时间上不重叠的最长序列,那么一定存在一个包含a1(结束最早)的最长序列。
第二讲 递推公式求解

…
nlogb a
主定理法 例题 1
30
主定理法 例题 2
31
主定理法 例题 3
32
主定理法 例题 4
主方法不适用 对于任意 ε > 0,nε = ω(logn)
33
主定理法 练习
• 题目 4-1: 递归式例题 a) T(n) = 2T(n/2) + n3 T(n) = Θ(n3) Case 3 b) T(n) = T(9n/10) + n T(n) = Θ(n) Case 3 c) T(n) = 16T(n/4) + n2 T(n) = Θ(n2logn) Case 2
…
Θ(1)
17
T(n) = T(n/4) + T(n/2) + n2
n2
n2
(n/4)2
(n/2)2
(5/16)n2
(n/16)2 (n/8)2 (n/8)2 (n/4)2 (25/256)n2
… Θ(1)
…
T(n) = n2(1+5/16+(5/16)2+…) = Θ(n2)
18
代入法证明T(n) = T(n/4) + T(n/2) + n2 = Θ(n2)
9
例:T(n)=2T(√n)+logn
• 通过改变变量转化递归式,将√n转化为整 数。令m = logn,于是 T(2m) = 2T(2m/2) + m
• 再令S(m) = T(2m),于是 S(m) = 2S(m/2) + m = Θ(mlogm) T(n) = T(2m) = S(m) = Θ(mlogm) = Θ(logn loglogn)
断A中缺的数大于等于 2⌊logn-1⌋ ,还是小于之 – 继续判断包含缺失数的那部分数的下一位,可以再次
ACM递推算法、贪心算法、DP算法、母函数

递推算法----一只小蜜蜂
递推算法----不容易系列之(3)----LELE的RPG难题
递推算法----骨牌铺方格
递推算法----阿牛的EOF牛肉串
递推算法----不容易系列之(4)----考新郎
递推算法----神、上帝以及老天爷
递推算法----拆线分割平面
递推算法----不容易系列之(1)
递推算法----Children's Queue
贪心算法----今年暑假不AC
贪心算法----room
贪心算法----wooden sticks / setup time
贪心算法----赛马
贪心算法----homework
DP算法----sequence / max sum of a sub-sequence
DP算法----chess / Super Jumping ! Jumping ! Jumping !
DP算法----数塔
DP算法----n条直线(无三线共点),求交点数
DP算法----FatMouse
DP算法----find maximum-legth common subsequence
母函数----硬币、整数拆分
母函数----钱N兑换成硬币(用的是递归方法,不是母函数)
母函数----本·拉登
母函数----
母函数----Computer College。
北京大学ACM国际大学生程序设计竞赛(2)ppt课件

up
down
问题解答
▪ 对于长度为N的美丽篱笆,可以查表得到序 列:
▪ 以高度为1的木条开场的上升序列的个数n1 ▪ 以高度为2的木条开场的下降序列的个数n2 ▪ 以高度为2的木条开场的上升序列的个数n3 ▪ 以高度为3的木条开场的下降序列的个数n4 ▪ 以高度为3的木条开场的上升序列的个数n5 ▪ ……
问题解答
▪ 问题分析 ▪ 假设可以确定上述每一种序列的个数,就可
以确定数字C落在哪个区间,从而确定其第 一个木条的高度;那么此时问题简化成N-1规 模的问题,按照同样的方法可以确定第2个木 条的高度,以此类推,可以确定一切木条的 高度。
问题解答
▪ 递推公式
▪ 令 TNdo,iwn表示长度为N的美丽篱笆中以高度
问题求解与程序设计 第六讲 动态规划
内容提要
▪ 3.27-4.3一周不上课做出题作业 ▪ 动态规划 ▪ A decorative fence - 1037 ▪ 动态规划小结 ▪ 讨论 – 1014
动态规划
▪ 与递归程序相类,将对问题求解分解为对子 问题求解;不同之处在于把子问题的解存起 来,用空间换时间。
问题解答
▪ 根据递推公式可以生成两个数组up和 down数组,如下:
N=1 N=2 N=3 N=4
N=1 N=2 N=3 N=4
i=1 1 1 1 2 i=2 0 0 1 2 i=3 0 0 0 2 i=4 0 0 0 0
i=1 0 0 0 0 i=2 0 1 1 2 i=3 0 0 1 2 i=4 0 0 0 2
问题的出处
▪ 中欧信息学奥林匹克竞赛
▪ 2002年6月30日-7月6日 ▪ 第一天: fence ▪ A decorative fence ▪ 时限: 1 s ▪ 内存: 1 MB