NTU DSA HW4 How’s Problem

Slides:



Advertisements
Similar presentations
简单迭代法的概念与结论 简单迭代法又称逐次迭代法,基本思想是构造不动点 方程,以求得近似根。即由方程 f(x)=0 变换为 x=  (x), 然后建立迭代格式, 返回下一页 则称迭代格式 收敛, 否则称为发散 上一页.
Advertisements

2014 年浙江省数量资料 华图网校 刘有珍 数字推理 年份题量数字规律 三级等差 2. 和递推 3. 幂次修正 4. 倍数递推 5. 倍数递推 6. 特殊差级 7. 倍数递推 8. 倍数递推 9. 积递推 10. 分数数列
常見之視力保健錯誤觀念 林隆光醫師 主講. 正 確 觀 念 : E 字視力表是英、美國家用的 ,他們一向不流行世界其他國 共同的「公制」。雖然學校一 般採用 E 字表,但 C 字表才是所 謂「萬國式」視力表。 錯誤觀念一:測視力,祗能採用 E 字檢查表 才正確。
1.3 二项式定理. [ 题后感悟 ] 方法二较为简单,在展开二项式之前根据二项 式的结构特征进行适当变形,可使展开多项式的过程简化.记 准、记熟二项式 (a + b) n 的展开式,是解答好与二项式定理有关 问题的前提,对较复杂的二项式,有时可先化简再展开,会更 简便.
延边大学 2016年度本科专业评估指标体系解读.
第五章 企业所得税、个人所得税.
九十五年國文科命題知能 研習分享.
做 荷 包 的 主 人 第 一 桶 金 督導 張宏仁 財團法人「張老師」基金會 桃園分事務所 督導 張宏仁
兵车行 杜甫 福州十一中语文组 林嵘臻.
近期重点工作 教务处 2015年3月19日.
诚信为本、操守为重、坚持准则、不做假账 第 九 章 会 计 报 表.
第十五章 控制方法.
小猪.
专利技术交底书的撰写方法 ——公司知识产权讲座
智力測驗 答題技巧及經驗談.
第四章 组合逻辑电路 第 四 章 组 合 逻 辑 电 路.
专题二 文学类文本·小说阅读(选考) ——把握人事,洞察百态 补上一课 如何读懂小说 第1讲 情节 第2讲 人物 第3讲 环境 
成才之路 · 语文 人教版 • 中国古代诗歌散文欣赏 路漫漫其修远兮 吾将上下而求索.
医疗工伤生育保险政策解读 金坛市职工医疗保险基金管理中心.
综合实践活动 设计与实践案例 ——《感恩父母》主题班会.
§2 线性空间的定义与简单性质 主要内容 引例 线性空间的定义 线性空间的简单性质 目录 下页 返回 结束.
新课程背景下高考数学试题的研究 ---高考的变化趋势
江苏省2008年普通高校 招生录取办法 常熟理工学院学生处
山东经贸职业学院 精品课程 房地产开发经营与管理.
数列(一) 自强不息和谐发展 授课教师:喻永明.
鹽寮灣是世界最早工業區遺址.
案例分析题 主讲蔡影.
1.6 中国人口迁移.
碘缺乏病.
第23课时 现代中国的科学技术与 文化教育事业.
大数的认识 公顷和平方千米 角的度量、平行四边形和梯形 四年级上册 三位数乘两位数 除数是两位数的除法 统计.
财经法规与会计职业道德 (3) 四川财经职业学院.
2015年考研政治近代史纲要 第一讲 考研试题分析 主讲教师:李阅民.
2 分子的热运动.
<<广东省中小学生体能素质评价标准>>
命题及其关系 命题.
命题与四种命题 高二数学 选修2-1 第一章 常用逻辑用语.
四种命题 班级:C274 指导教师:钟志勤 任课教师:颜小娟.
3.1 重力 基本相互作用.
面向海洋的开放地区——珠江三角洲 山东省高青县实验中学:郑宝田.
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
发展心理学 王 荣 山.
成才之路 · 地理 人教版 · 必修3 路漫漫其修远兮 吾将上下而求索.
《做自立自强的人》单元复习.
第十课 创新意识与社会进步 1.辩证的否定观:辩证否定、形而上学的否定观
课标版 政治 第一课 美好生活的向导.
欢迎来到我们的课堂!.
第 十一 课  寻觅社会的真谛.
必备职业素养 主讲:程华.
江苏省2009年普通高校 招生录取办法 江苏省教育考试院
初中獨立專題探究(文字模式) 課程規劃與教學經驗分享
第二章 负债 1、负债的概念:是指过去的交易或事项形成的、预 期会导致经济利益流出企业的现时义务。 2、负债的分类 流动负债 短期借款
第十三章 收入和利润.
第七章 财务报告 主讲老师:王琼 上周知识回顾.
等差数列的前n项和.
概率论 ( Probability) 2016年 2019年4月15日5时31分.
组合逻辑电路 ——中规模组合逻辑集成电路.
第二节 山地的形成.
基础会计.
纠突发错误编码.
§1 关于实数集完备性的基本定理 在第一章与第二章中, 我们已经证明了实数集中的确界定理、单调有界定理并给出了柯西收敛准则. 这三个定理反映了实数的一种特性,这种特性称之为完备性. 而有理数集是不具备这种性质的. 在本章中, 将着重介绍与上述三个定理的等价性定理及其应用.这些定理是数学分析理论的基石.
直线运动习题精选(总分50分) 1、电磁打点计时器使用 流 V电源,电火花计时器使用 流 V电源。
第一节 集 合 一、集合的概念 二、集合的运算 三、区间与邻域 四、小结 思考题.
1.理解力和运动的关系,知道物体的运动不需要力来维持。
數學遊戲二 大象轉彎.
坚持,努力,机会留给有准备的人 第一章 四大金融资产总结 主讲老师:陈嫣.
中级会计实务 ——第一章 总论 主讲:孙文静
2.2.1直线与平面平行的判定 授课:余安根 教学目标:分清判定定理的条件 能运用判定定理解决问题 教学难点:定理的条件 运用定理解决问题.
平面的基本性质 江苏省泰州中学 数学组 姜莹. 平面的基本性质 江苏省泰州中学 数学组 姜莹.
2014年3月识图的基础知识和技巧 郭远方
Presentation transcript:

NTU DSA HW4 How’s Problem

題目連結 https://tioj.ck.tp.edu.tw/pmisc/ntudsa/hw4.html

Background (完全不是重點!!!) 皓皓是個喜歡讀書的天才小兒童,天底下的所有問題都難 不倒他,因此有一個廣為人知的稱號 — 「一眼秒題皓大 爺」。今天喜歡看書的他在看一本名為「DSA」的書,其中有 一題讓他看了兩秒還想不出答案,因此他便很高興的拿著這一 題和他的好朋友 — 裴裴討論,可惜的是兩個臭皮匠勝不過一 個諸葛亮(因為要三個才夠(X)),對這一題依然沒有半點頭緒, 請問你能寫個程式來幫助皓皓解決這個難題嗎?

Problem Statement 給你一個初始的字串S,及一個正整數Q。 接下來有Q個問題,每種問題有三種形式,分別如下: 1. 「1 c」 其中c是一個字元,代表要加一個字元c在字串S的前方。 2. 「2 c」 其中c是一個字元,代表加一個字元c在字串S的後方。 3. 「3 Ti」 其中Ti是一個字串,如果是這種形式的問題,要輸出字串Ti在S中出現幾次。

Example 1 如果一開始S = "cd", Q = 5,並且依序的4個問題如下: 1 'b' → 此時S = "bcd" 1 'a' → 此時S = "abcd" 2 'e' → 此時S = "abcde" 3 "cd" → 此時S = "abcde","cd"在S中出現一次,因此要輸出1 3 "aa" → 此時S = "abcde","aa"在S中出現零次,因此要輸出0

Example 2 S = “ababa” Q = 1 問題為3 “aba” → 答案應該要是2

String matching與hash的關係 - 1 (很重要!!!) 如果a是一個字串,a[i]代表字串的第i項, 考慮一個多項式 f(x) = a[0] * x^(n - 1) + a[1] * x^(n - 2) + … + a[n - 2] * x + a[n - 1] 如果b是一個字串,b[i]代表字串的第i項, 考慮一個多項式 g(x) = b[0] * x^(n - 1) + b[1] * x^(n - 2) + … + b[n - 2] * x + b[n - 1] 兩個字串相等,代表a = b,同時也會有f(x) = g(x)

String matching與hash的關係 - 2 我們考慮隨便找個數字x代入多項式。代入後如果f(x)的數值與g(x)的數值相同,我們就可以視為兩字串是一樣的!!! 但是代入後可能會有f(x)及g(x)數值overflow的問題,因此我們可以再挑個數字M, 換成觀察f(x) mod M 是否與g(x) mod M的結果是否相同,如果相同,那麼我們就可 以說有「高機率」是一樣的!!! 這種string matching的方式叫做Rolling hash,其中M的選定最好是一個質數 https://en.wikipedia.org/wiki/Rolling_hash

字串的hash具體來說該怎麼做呢? 對於一個給定的字串S[1...N],我們選定兩個數字x (29)和M (10**9 + 7) 預處理的部分如下(某種prefix sum的感覺): hash[0] = 0 hash[i] = (hash[i - 1] * x + (S[i] - ‘a’ + 1)) % M, 其中i >= 1

在預處理之後,我們可以快速知道哪些事情? 我們可以快速知道S[l...r]的hash value!!! hash_value(l, r) = (hash[r] - hash[l - 1] * x^(r - l + 1) mod M + M) mod M 因為我們有 hash[l - 1] = (S[1] * x^(l - 2) + S[2] * x^(l - 3) + … + S[l - 2] * x + S[l - 1]) mod M hash[r] = (S[1] * x^(r - 1) + S[2] * x^(r - 2) + … + S[l - 1] * x^(r - l + 1) + … + S[r]) mod M 還不知道怎麼快速的算出x^k ? 沒關係,這也可以預處理!!!

Hash的碰撞機率 最直觀的模型應該是「a, b 是兩相異物,所以他們的 hash 值有 M * M 種挑法,碰撞的有 M 種挑法,所以一次比較碰撞的機率是 M / (M * M) = 1 / M」 (by 集貴) 延伸閱讀: Hash Collision Probabilities (http://preshing.com/20110504/hash-collision- probabilities/) Birthday attack (https://en.wikipedia.org/wiki/Birthday_attack)

測資範圍 所有字元皆為英文小寫字母 1 ≤ 字串S的初始長度 ≤ 10**5 0 ≤ 所有字串Ti的長度總和 ≤ 10**5 實作時請注意演算法的時間複雜度!!!

Subtask 1 (5 pts) 1 ≤ 字串S的初始長度 ≤ 10**5 Q = 1 所有問題皆為第三種問題 可以用來測試string matching algorithm有沒有寫壞

Subtask 2 (5 pts) 1 ≤ 字串S的初始長度 ≤ 1000 1 ≤ Q ≤ 1000 0 ≤ 所有字串Ti的長度總和 ≤ 10**4 可以知道加東西在字串的前後有沒有寫壞

Subtask 3 (30 pts) 1 ≤ 字串S的初始長度 ≤ 10**5 1 ≤ Q ≤ 10**5 所有字串Ti的長度 ≥ 10**4 0 ≤ 所有字串Ti的長度總和 ≤ 10**5 想一想,這一筆subtask有什麼特殊性? (可以仔細盯著綠色字的地方看)

Subtask 4 (30 pts) 1 ≤ 字串S的初始長度 ≤ 10**5 1 ≤ Q ≤ 10**5 1 ≤ 所有字串Ti的長度 ≤ 10 0 ≤ 所有字串Ti的長度總和 ≤ 10**5

Subtask 5 (30 pts) 原題設條件

解題關鍵 (小提示) 字串的hash 分類討論(平方分割):對於不同的測資使用不同的方法(combine subtask 3 and 4 to solve subtask 5) 高中數學 - 算幾不等式

小花絮1 - 一眼秒題皓大爺 的 第一次上傳結果 00: TLE 01: AC (5 pts) 02: WA + RE + TLE 05: WA + TLE 06: WA + TLE 07: WA + TLE 08: WA + TLE 09: WA + TLE Total: 5pts !!!

小花絮2 - 裴裴 的 第一次上傳結果 00: AC (5 pts) 01: AC (5 pts) 02: AC (15 pts) 04: TLE 05: TLE 06: TLE 07: TLE 08: TLE 09: TLE Total: 40 pts!!!

希望大家會喜歡這一題~ 謝謝大家^^