playhome属性攻略怎么增加淫呀,我其他属性都满了,就差淫了

下面粗略地给出一些&b&我读过&/b&的一些书中觉得还不错的。这个书单中的书保证都是良心推荐,没参考任何网上的所谓书单。涵盖的科目均是物理基础课,因为需要阅读有深度的专著的人并不需要参考这个书单。难度&i&大体上&/i&递增,加粗的是我们系上课用过的书。&br&&br&&ul&&li&首先是(适合物理系学生的)科普性书籍(实在不想吐槽霍金的一系列书)&/li&&ul&&li&《定性与半定量物理学》赵凯华&/li&&li&《边缘奇迹:相变和临界现象》于渌&/li&&li&《QED: A Strange Theory about Light and Matter》Feynman&/li&&li&《大宇之形》丘成桐&/li&&li&《Gauge Fields, Knots and Gravity》Baez&/li&&li&《Fearful Symmetry》Zee&/li&&/ul&&/ul&&br&然后是专业教科书:&br&提一下《The Feynman Lectures on Physics》。我认为这三本书不适合初学者。(若是读作消遣的话自然无所谓……)原因是有些简略、不甚严格、没有习题。不过如果有扎实的普物基础的话再回头读收获是非常大的。我觉得所有物理学家在学习完普物之后都应该读一读 Feynman 的讲义。&br&&ul&&li&微积分:&/li&&ul&&li&&b&《数学分析教程》常庚哲&/b&&/li&&li&&b&《数学分析》卓里奇&/b&&/li&&/ul&&li&线性代数&/li&&ul&&li&《高等代数简明教程》蓝以中&/li&&li&《Linear Algebra》Hoffman & Kunze&/li&&/ul&&li&数理方程(没什么特别好的书。但我觉得较好的一种学习方法是:看《数学物理方法教程》潘忠诚,做《数学物理方法习题指导》周治宁&吴崇试/《数学物理方法习题集》武仁)&/li&&li&普物力学&/li&&ul&&li&有一本小书:《趣味刚体力学》刘延柱 挺有意思&/li&&li&&b&《An Introduction To Mechanics》Kleppner & Kolenkow&/b&&/li&&/ul&&li&狭义相对论&/li&&ul&&li&《狭义相对论》刘辽&/li&&li&《The Principle of Relativity》Einstein&/li&&/ul&&li&普物电磁学&/li&&ul&&li&(数学基础:&b&《Vector Calculus》Matthews&/b&)&/li&&li&&b&《Electricity and Magnetism》Purcell&/b&&/li&&/ul&&li&普物光学&/li&&ul&&li&《光学》赵凯华 & 钟锡华&/li&&li&&b&《Optics》Hecht&/b&&/li&&/ul&&li&普物热学&/li&&ul&&li&《Heat and Thermodynamics》Zemansky&/li&&li&&b&《Thermodynamics and An Introduction To Thermostatistics》Callen&/b&&/li&&/ul&&li&分析力学&/li&&ul&&li&《Analytical Mechanics》Hand & Finch&/li&&li&《The Variation Principles of Mechanics》Lanczos&/li&&li&《力学》朗道&/li&&/ul&&li&电动力学&/li&&ul&&li&《Introduction to Electrodynamics》Griffiths&/li&&li&《经典场论》朗道&/li&&/ul&&li&量子力学&/li&&ul&&li&&b&《Introduction to Quantum Mechanics》Griffiths&/b&&/li&&li&&b&《Modern Quantum Mechanics》Sakurai&/b&&br&&/li&&li&《高等量子力学》喀兴林&/li&&/ul&&li&统计力学&/li&&ul&&li&《热力学与统计物理学》林宗涵&/li&&li&《李振道讲义: 统计力学》李振道&/li&&li&《Statistical Mechanics: A Set of Lectures》Feynman&/li&&/ul&&li&固体物理&/li&&ul&&li&《固体物理学》胡安&/li&&li&《Solid State Physics》Ashcroft&/li&&/ul&&/ul&&br&相关问题: &br&&a href=&/question//answer/& class=&internal&&热力学有哪些思路清晰的参考书?&/a&&br&&a href=&/question//answer/& class=&internal&&关于固体理论,有哪些书可以推荐?&/a&&br&&a href=&/question//answer/& class=&internal&&请推荐一本能系统透彻了解向量分析的书?&/a&&br&&a href=&/question//answer/& class=&internal&&如何评价《伯克利物理学教程》?&/a&&br&&a href=&/question//answer/& class=&internal&&如何评价 Griffiths、Shankar、Cohen 和 Sakurai 的量子力学教材? &/a&
下面粗略地给出一些我读过的一些书中觉得还不错的。这个书单中的书保证都是良心推荐,没参考任何网上的所谓书单。涵盖的科目均是物理基础课,因为需要阅读有深度的专著的人并不需要参考这个书单。难度大体上递增,加粗的是我们系上课用过的书。 首先是(适…
建议不要一个人刷题,因为一个人刷题很多时候会遇到困难而停滞不前。一人太容易放弃了。&br&1.组织一个group,一起学习交流,同龄同水准的人最好,大家可以分享资料,相互学习,而且需要彼此有竞争压力,也要有目标,比如做好了比赛可以出去免费旅游神马的。&br&2.找到一些网上的大牛或者资料的集合,很多大牛喜欢贴解题报告,你在Google或者百度之类的搜索引擎上可以搜到,而网上题目国内的以HDU,POJ为多,ZOJ有月赛,题目很好,适合提升自己;国外的题目比较有趣难度跨度非常大,推荐SGU,SPOJ,URAL。或者你可以试试USACO,这是一个OI选手提升自己的在线一步步过关类型的题库,虽然旧了,但是对于新手来说不错。顺序:USACO,POJ/HDU,SGU,SPOJ&br&3.参加一些在线比赛,Topcoder,Codeforces,用Google都能搜到,每年还有一些机构会办年度比赛,大部分人的目标就是前X名得到的T-shirt,TopCoder Open,Google Code Jam,百度之星,编程之美[今年微软办的],还有一些不定期的会得到衣服的比赛。对于ACMer之间的认可度来说,TCO&GCJ&其他。&br&4.ACM组队赛还有很多经验和讲究,最好找一些有经验的学校尤其是地理位置上比较近的强校问问,一定要厚脸皮问清楚。一般我们学校有参加省赛和四省赛,然后这期间可以认识或者线下接触一些网上认识的大牛,增进了解的同时可以学习一下。&br&5.过程很重要,结果一般重要,一般Regional能拿到前6就可以去WorldFinal了,而Regional可以拿到铜牌就勉强算是小有所成。Regional是检验一个队伍的好地方。&br&&br&用好搜索引擎和人脉,希望你能享受这个过程。
建议不要一个人刷题,因为一个人刷题很多时候会遇到困难而停滞不前。一人太容易放弃了。 1.组织一个group,一起学习交流,同龄同水准的人最好,大家可以分享资料,相互学习,而且需要彼此有竞争压力,也要有目标,比如做好了比赛可以出去免费旅游神马的。 2…
要深入 LaTeX 不可避免地会需要了解一些 TeX 的知识。若不然,在看 LaTeX 的相关资料的时候,总会有「不知所以然」的感觉,使用起来总是「这样不知道行不行呢」这样心虚的感觉。话虽如此,一个 LaTeX 用户为了学习 LaTeX 的一些编程,直接上手看 The TeXbook 可能也有点为难人(毕竟 The TeXbook 讲解的都是普通 LaTeX 不会希望知道的东西,落差有点大)。而且 The TeXbook 介绍的内容有一些是与 LaTeX 风格相悖的,这些内容在 LaTeX 里可以勉强使用,但是会留下隐患。(比如 \bf 等字体命令)&br&&br&另一方面,LaTeX 当前的版本是 2e (2 epsilon),下一个版本是 LaTeX 3。虽然 ltx3 看起来有些遥遥无期,但比前几年还是有了不少进展。另一个现实情况是,现在有不少宏包已经开始使用 ltx3 风格的语法来撰写;但同时也有不少宏包作者在观望,依旧使用 ltx2e 的语法在维护宏包。&br&&br&因此,给希望入门 ltx programming 的人提建议就必须要权衡 TeX 和 LaTeX 的知识,以及要权衡 ltx2e 和 ltx3 的内容。就我自己而言,我没有办法给出一个让自己满意的方案,所以我觉得这个问题其实我是没什么资格来回答的。中文 TeX/LaTeX 界有不少混知乎的前辈,比如 jjgod, LeoLiu, Qingkuan, m6n,他们来回答这个问题更合适些。&br&&br&总之,这样看起来, &a data-hash=&2ae8b3af01d40abc77ebeda7ecc350a9& href=&///people/2ae8b3af01d40abc77ebeda7ecc350a9& class=&member_mention& data-tip=&p$b$2ae8b3af01d40abc77ebeda7ecc350a9& data-hovercard=&p$b$2ae8b3af01d40abc77ebeda7ecc350a9&&@李阿玲&/a& 所说的「掉坑里」是完全没错就是了。&br&&br&我只能给出一些我读过的文档供参考(大致是按照我读过的顺序)。因为我学习 ltx programming 的经历,实际上就是读文档 - 写代码 - 编译 - 测试 - 排错的过程,遇到有不懂的,再上网搜索请教前辈而已。&br&&br&&ul&&li&texdoc latex2e: 这个是面向 ltx 用户的文档,介绍了 ltx 使用的方方面面。&/li&&li&texdoc clsguide: 这个是面向宏包和文档类作者的,介绍了 ltx2e 的宏包和文档类的写作规范。&/li&&li&texdoc doc, texdoc docstrip: 这个是「文学编程」的相关资料,看完它基本就能理解 .dtx 和 .ins 文件是怎么一回事了。&/li&&li&texdoc texbytopic: 这个是我看不下去 The TeXbook 读的,二者结合起来读,能够相对轻松地了解 plainTeX 和 TeX primitive 的内容。(这两本读完之后,诸如 \expandafter 之类的命令就不会觉得晕了)&/li&&li&texdoc source2e: 这个是 ltx2e 的具体实现,以及相关讲解。&/li&&li&texdoc macros2e: 这个集中介绍了 ltx2e 里使用的一些内部宏,至此基本上就能写出 ltx2e 的宏包和文档类了。&/li&&li&texdoc expl3: expl3 这个宏包是在 ltx2e 上实现 ltx3 的功能的一个接口,引入这个宏包就可以使用 ltx3 风格的语法。因此写 ltx3 的宏包肯定是要读它的。&/li&&li&texdoc interface3: 这个是关于 ltx3 的接口的文档,我觉得像一个字典一样的东西,可以和 expl3 结合起来读。&/li&&/ul&&br&再者还有一些宏包提供了好的工具。比如给宏包和文档类实现 key-value 的参数(比如 geometry 宏包可以这样用:\usepackage[margin = 1in]{geometry}),又比如 etoolbox 提供了对付 ltx2e 里面命令、环境的一些补丁,并给数值的大小比较提供了 ltx 风格的接口。这些可以按需使用,需要的时候再翻相应的宏包文档就可以了。&br&&br&大致如此,肯定还有不少不合适的,仅供参考。&br&&br&感谢邀请,以及,知乎的编辑器真是渣到不行。
要深入 LaTeX 不可避免地会需要了解一些 TeX 的知识。若不然,在看 LaTeX 的相关资料的时候,总会有「不知所以然」的感觉,使用起来总是「这样不知道行不行呢」这样心虚的感觉。话虽如此,一个 LaTeX 用户为了学习 LaTeX 的一些编程,直接上手看 The TeXboo…
&p&突然发现被开发者点赞了Σ(°Д°; &/p&&p&如果这个软件对大家有所帮助,就点个赞吧(*?▽?*),让更多人知道这个优秀的软件。&/p&&p&&b&回答不定时更新最新功能,分享使用心得,欢迎大家收藏答案。&/b&&/p&&p&&b&更新放在后面了,方便大家阅读。&/b&&/p&&p&-----一以下为原答案-----&/p&&p&知乎首答。&/p&&p&推荐 &b&MarginNote (以下简称MN)&/b&&/p&&p&iPhone、iPad、Mac版本都有。个人觉得在iPad Pro 12.9+ Apple Pencil使用效果最好。&/p&&p&首先给出主要界面:&/p&&img src=&/v2-17d82ca78c61e493efada_b.png& data-rawwidth=&1708& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&1708& data-original=&/v2-17d82ca78c61e493efada_r.png&&&p&从左到右依次是:mindmap部分,pdf部分,notes部分。当然这是马力(界面)全开的情况。如果你的iPad屏幕较小,或者并不需要显示全部部分,你可以选择隐藏notes部分或mindmap部分,也可以只显示mindmap。&/p&&p&看到这样的App界面大家可能会很惊讶。这东西是用来干啥的?实际上,&/p&&p&&b&MN是一个全方位的学习App:看PDF/ePub+做笔记+建思维导图+知识点复习&/b&&/p&&p&下面我来逐一介绍这款软件的4的运作部分:&b&pdf阅读+pdf批注+mindmap制作+cards复习&/b&,以及它们是如何很好的整合在一起的。&/p&&p&——————————功能介绍——————————&/p&&p&&b&一、pdf阅读:&/b&&/p&&p&这一部分并不是重点,因为和众多的pdf阅读app差不多。不过阅读体验是非常好的。功能很齐全。&/p&&p&如&b&浏览模式&/b&(水平翻页/滚动浏览)和&b&主题颜色&/b&(5种)随意切换,只需点击右上角的TT。夜间主题很适合晚上寝室熄灯了继续学习(好像暴露了年龄。。)&/p&&img src=&/bfc497c6cd5f9d60c1d6_b.png& data-rawwidth=&1708& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&1708& data-original=&/bfc497c6cd5f9d60c1d6_r.png&&&br&&p&&b&二、pdf批注:&/b&&/p&&p&有三种批注(notes)可以做:划线,方框,涂鸦。&/p&&p&(1)&i&&b&&u&划线&/u&&/b&:&/i&即选中pdf中的文本做上标记,效果如图:(有三种划线形式,颜色可选)&/p&&img src=&/6d4cab5ff344_b.jpg& data-rawwidth=&1513& data-rawheight=&338& class=&origin_image zh-lightbox-thumb& width=&1513& data-original=&/6d4cab5ff344_r.jpg&&&p&(2)&i&&b&&u&方框&/u&&/b&:&/i&即在pdf的任何位置做上方框型标注,效果如图:(同样有三种标注形式,颜色可选)&/p&&img src=&/ca4fdad292a313e7e948_b.jpg& data-rawwidth=&1580& data-rawheight=&690& class=&origin_image zh-lightbox-thumb& width=&1580& data-original=&/ca4fdad292a313e7e948_r.jpg&&&p&(3)&i&&b&&u&涂鸦&/u&&/b&:&/i&即在pdf的任何位置涂鸦,效果如图:(钢笔,记号笔,颜色可选)&/p&&img src=&/f7ade33fbffb9aa58b7572c03dba5e3b_b.jpg& data-rawwidth=&2312& data-rawheight=&498& class=&origin_image zh-lightbox-thumb& width=&2312& data-original=&/f7ade33fbffb9aa58b7572c03dba5e3b_r.jpg&&&p&个人认为在批注操作上,MN是在众多的pdf阅读批注app中用起来体验最好的(批注效率最高)。但MN的最大的与众不同之处在于:它将批注整合入了mindmap!&/p&&p&&b&三、Mindmap部分:&/b&&/p&&p&这个部分有两种显示方法:outline与mindmap,可以单独显示一种,也可以都显示,如图&/p&&img src=&/eb56da620_b.png& data-rawwidth=&1708& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&1708& data-original=&/eb56da620_r.png&&&br&&p&关键是,mindmap是如何和pdf批注联系起来的呢?&/p&&p&答案是:&i&&b&&u&每一个批注都会自动在mindmap里产生一个card&/u&&/b&&/i&&br&如果你做&i&&b&&u&划线&/u&&/b&&/i&标注,它会自动读取你标注的文本,并在mindmap里生成一个card&br&如果你做&i&&b&&u&方框&/u&&/b&&/i&标注,它会自动截取你框住的图片,并在mindmap里生成一个card&br&如果你做&i&&b&&u&涂鸦&/u&&/b&&/i&标注,它会自动截图你涂鸦的地方,并在mindmap里生成一个card&/p&&p&何为card?就是mindmap里的一个单元(节点)。你在手动安你的需求整理这些cards将其变为mindmap就可以了。&/p&&p&所有的笔记(批注)都会对应一个card,所有的cards都能够参与mindmap的制作。但每个card又如何运作呢?这自然来到了第四个部分。&/p&&br&&p&&b&四、cards部分&/b&&/p&&p&card可以称作学习卡片。它相当于知识点。别小瞧每个card,你可以点开card再编辑,加入任意你想加入的东西,然后这些东西会变成这个card的辅助信息,称其为&u&&i&内容框&/i&&/u&好啦,如&/p&&img src=&/de7a776ba4222eaeba3772_b.png& data-rawwidth=&1708& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&1708& data-original=&/de7a776ba4222eaeba3772_r.png&&&p&这是一个由&i&&u&方框标注&/u&&/i&生成card,我另外给这个card加入了4个&i&内容框,&/i&分别是:涂鸦,文本,其他card的超链接,其他card的超链接。&br&当然能加入的不止这几种,还有&i&音频,图片,标签......&/i&&/p&&p&加入了自己的理解后,卡片还能够有什么用呢?对,用来&b&复习&/b&。&/p&&p&MN除了学习界面,还有一个&u&卡片界面&/u&(入口页面有一个Notes&Tags的选项),如下&/p&&img src=&/v2-1baf17cae8ea6832fbac_b.png& data-rawwidth=&600& data-rawheight=&449& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-1baf17cae8ea6832fbac_r.png&&&p&这里会显示出你的所有的笔记。可以按各种方式排序与检索:笔记内容、标签、颜色、时间,来选择性的显示你的笔记。然后你可以进入&u&复习界面&/u&对这些笔记进行回顾。你也可以将笔记加入repetition queue,MN会帮你&b&自动周期性地组织复习内容&/b&,十分方便。&/p&&br&&p&&b&所以,整个app的运作方式就是:&/b& &b&(1)阅读pdf&/b& &b&(2)在pdf上做批注&/b& &b&(3)整理card形成mindmap&/b& &b&(4)在card里加入自己的思考理解&/b& &b&(5)用cards进行复习&/b&&/p&&br&&p&&b&—————————扯点别的—————————&/b& &/p&&p&&b&&u&1.关于云端存储与同步:&/u&&/b&&br&应用中的书会存到iCloud Drive中的。而笔记本则可以会通过iCloud同步。另外也可以用Dropbox或Evernote同步。&/p&&br&&p&&b&&u&2.Import与Export&/u&&/b&&/p&&p&&b&Import:&/b&你可以从各种地方导入你想学习的材料:其他app,Dropbox,iCloud,iTunes,甚至是一般的网页中。实际上,你&i&&u&可以在Safari里打开一个网页然后分享到MarginNote里&/u&&/i&,这时MarginNote会根据网页内容生成一个ePub文件,供你线下学习,十分方便。&/p&&p&&b&Export:&/b&有很多种导出方式:Anki,OmniOutliner, iThoughts,Evernote等等,也可以将带批注的pdf作为整体导出。&/p&&p&有人可能会问第一个Export选项的&b&Anki&/b&是什么,其实它是一个辅助复习记忆软件,大概就是能够将你在MarginNote中生成的cards导入到Anki这个软件中,然后可以进行周期性的复习。不过我觉Anki得这个软件受众估计不多,所以就不在此多介绍了,大家可以自行百度。&/p&&p&这里我就提一下Export到iThoughts里的感受吧。效果是非常好,信息一点都没丢失,包括card里面的批注,card之间的超链接都在iThoughts里用连接线表现了出来!甚至你能够点击iThoughts里对应的card跳转回MarginNote应用中。&/p&&br&&p&&b&&u&3.关于开发者&/u&&/b&&/p&&p&(1)开发者会十分用心地听取用户的建议(app中有内置feedback forum,邮件会耐心回复)。&/p&&p&(2)这个app的开发者是中国人。据说此软件在国外受到了广泛好评,甚至别人主动帮忙做app的翻译。&/p&&p&(3)更新勤快,往往更新都有新功能,不单单是bug fix。&/p&&br&&p&———————————————若干使用心得—————————————————&/p&&p&(硬件:iPad Pro 12.9 + Apple Pencil)&br&&b&1、学习时,一般横屏,界面常用mindmap+pdf。&/b&&/p&&p&&b&2、右手在pdf上做标记,左手随手整理card形成mindmap的。&/b&原因:一口气做太多标记后再回去看mindmap时,cards已经堆成堆,这时候再想将cards整理成mindmap就会比较困难了。&/p&&p&&b&3、做笔记时,常用划线和方框标记。&/b&原因:用涂鸦标记会让pdf显得凌乱,失去笔记的美感。确实需要用到涂鸦标注的时候,&b&涂鸦笔记可以写在方框标记内&/b&。这样的涂鸦笔记整合到了方框笔记内,不会再导图中产生冗余的card。另外也可以借助card里面的内容框添加涂鸦,那样效果会好很多。&/p&&p&&b&4、做笔记的三种highlight styles可以用来表现标记内容的重要程度。&/b& &/p&&p&&b&5、笔记的颜色可以用来表现内容的种类。&/b&比如对我学数学来说,我一般会用黄色表示定义或注释(Defination/Remark),蓝色表示性质(Property),绿色表示具体例子(Example),红色表示重要的定理(Theorem)。&u&&i&建议常用的颜色不要超过4种&/i&&/u&,因为笔记工具栏恰有4种颜色快捷按钮。且颜色多了增加了选择复杂性,没必要。&/p&&p&&b&6、当同时有好几个标记表现同一个内容,而又不想有那么多的cards时,灵活运用merge这个功能。&/b&这样可以让mindmap更佳清晰。(两种merge方法:1. 点击mindmap里父节点上会弹出merge按钮。2. 在mindmap同时选中多个节点后出现merge选项。)&br&&/p&&p&&b&7、关联卡片:&/b&打开某个card之后,点击card界面右下角的三个点图标,可以复制card的超链接。可以粘贴到其他的card中,让两个card关联起来。(现在点击mindmap的节点弹出的工具栏有关联按钮更加方便了,见Ver2.4更新)&/p&&p&&b&8、&/b&有时候选中文本后(注意不是在文本上做标记),会出现As Title的选项,这个选项可以用来快速给cards加上标题&br&&/p&&p&&b&9、Note Always是一个&u&打草稿&/u&的好app(有极佳的书写体验)。这两个app可以结合使用。&/b&(Note Always:所以我只用来打草稿-_-#)&br&在Note Always中打完草稿可以将草稿导入MarginNote的card中作为内容框。(两种导入方法写在评论中了)&/p&&p&当然,以上只是我个人的使用习惯。每个人有每个人的习惯。最终标准当然是自己怎么用着舒服就怎么用啦。&/p&&p&——————————————关于我对做笔记的看法——————————————&br&做笔记可能会有几个误区:&b&一是太拘泥于笔记形式,将记笔记的过程变得过于繁琐,反而冲淡了做笔记对于学习知识的加深作用。二是什么都想涂涂画画,整段整段地用记号笔全部做上标记,结果回过头来看笔记的时候,发现全部都是重点,实际效果等于没重点。&/b&&br&其实做笔记,无非两种作用:&b&1、建立笔记来加深首次学习的印象。2、查阅笔记来巩固以前学习的知识。&/b&&br&记住这两条笔记的核心用途,你便知道在看书时,&b&该如何去做笔记,哪些需要做笔记。&/b&&/p&&br&&p&——————————Version 2.3 更新——————————&/p&&p&作为重度用户第一时间来更新了。MarginNote 从Version 2.3 开始支持iCloud笔记同步了!!!终于不用每次翻墙用dropbox同步了。&/p&&p&另外,对于只想简简单单做highligt标记、不想在mindmap里生成多余繁杂的card的用户也有福了:现在支持在mindmap里隐藏只有highligt的notes.&/p&&p&对iOS10用户,现在可以和朋友合作,共同学习,分享笔记。(具体怎么操作并不知,个人觉得iOS10槽点太多,目前所有设备都维持在iOS9)&/p&&br&&br&&p&————————Version 2.4&2.5 更新 ——————&/p&&p&这个版本又有好多新功能了!太多了以至于我说不过来。说主要的:&/p&&p&&b&1. 支持在导图中关联笔记了&/b&:具体方法是在导图中点击这个链接 按钮,然后会出现一个气泡,将气泡拖动到想关联的另一个笔记上即可。关联的笔记会复制上彼此的超链接,同时在导图中与虚线显示出来,效果如图:&/p&&img src=&/v2-86bb6aeae02ebb8acb7c19b319d10023_b.png& data-rawwidth=&2732& data-rawheight=&2048& class=&origin_image zh-lightbox-thumb& width=&2732& data-original=&/v2-86bb6aeae02ebb8acb7c19b319d10023_r.png&&&br&&br&&p&&b&2.新增套索/多边形笔记工具&/b&&/p&&img src=&/v2-657864fec6fe5fa9bec2fcdcf6ef0b22_b.jpg& data-rawwidth=&468& data-rawheight=&91& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&/v2-657864fec6fe5fa9bec2fcdcf6ef0b22_r.jpg&&&p&用此工具在PDF上&b&点按&/b&或&b&勾画&/b&形成一个闭路,可以实现各种形状的截图。本质上和拉方框相同,但弥补了图形上的单一缺陷。&/p&&p&&b&3. 支持APP内照相和扫描&/b&。虽然扫描界面比较丑,但效果不错,功能齐全。&/p&&p&&b&4. 支持模糊化笔记,方便复习回顾知识点&/b&。(不过作为一个学数学的不怎么用此功能)&/p&&p&PS:功能1和3都是答主向开发者反馈的意见,如今都实现了。可见开发者的用心!!(看到这样的开发者还不去支持支持!)&/p&&br&&p&———————Version 2.6&2.7 更新 ——————&/p&&br&&p&新增两个重量级功能:&/p&&p&&b&1. 多PDF视图&/b&&/p&&p&&b&可以同时打开至多3个PDF,独立滚动浏览。每个PDF可以相同可以不同,可以在每个PDF上分别做笔记。(下图为同时打开了3个PDF的效果)&/b&&/p&&img src=&/v2-fd1ccf5affeddabc3ab24fb9_b.png& data-rawwidth=&1708& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&1708& data-original=&/v2-fd1ccf5affeddabc3ab24fb9_r.png&&&br&&br&&p&&b&2. 快速划出重点词(emphasis)&/b&&/p&&p&操作方法:首先你要highlight一段文字或图片,然后选中里面的文本,就会出现emphasis按钮了。&/p&&img src=&/v2-ca5be9acbc4c42_b.jpg& data-rawwidth=&2048& data-rawheight=&674& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/v2-ca5be9acbc4c42_r.jpg&&&br&&p&另外,现在&b&双指双击&/b&可以快速&u&进入/退出&/u& PDF中的&u&涂鸦模式&/u&或导图中的&u&多项编辑模式&/u&&br&这个功能是答主向开发者建议的,开发者又很友好地采纳了(?▽`)&/p&&br&&p&—————————————写在最后—————————————&/p&&p&MN&b&的功能之强大&/b&远不止这篇答案所述。不同的人有不同的需求会有不同的用法:制作记忆卡片(Anki)、阅读ePub电子书、做读书摘录、学法律、背医学……各种使用方式任你开发。总之,MarginNote绝对是个学习利器。&/p&&p&MarginNote iOS端有免费版,不过有笔记数量的限制。想体验软件功能的朋友可以先试用免费版。&/p&&p&附上Pro版传送门:&/p&&p&iOS版:&a href=&///?target=https%3A///cn/app/marginnote-pro-efficient-study/idFl%3Den%26mt%3D8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MarginNote Pro - 一款会重塑学习方式的阅读笔记工具:在 App Store 上的内容&i class=&icon-external&&&/i&&/a&&/p&&p&Mac版:&a href=&///?target=https%3A///cn/app/marginnote-pro-efficient-study/id%3Fl%3Den%26mt%3D12& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MarginNote Pro - 一款会重塑学习方式的阅读笔记工具:在 Mac App Store 上的内容&i class=&icon-external&&&/i&&/a&&/p&
突然发现被开发者点赞了Σ(°Д°; 如果这个软件对大家有所帮助,就点个赞吧(*?▽?*),让更多人知道这个优秀的软件。回答不定时更新最新功能,分享使用心得,欢迎大家收藏答案。更新放在后面了,方便大家阅读。-----一以下为原答案-----知…
&p&基础知识(工具包)靠上课,在名校争取多上课,在弱校就多看名校的课的视频或者课件。我们学校大多数课件网上都有,没事当刷知乎吧。&/p&&br&&p&不管本科生也好,研究生也好,探究前沿问题的方式是一样的,就是靠导师。自学太缓慢,一个是看不懂,另一个是你觉得你懂了其实你不懂,因为学术论文假设你懂他cite的所有的paper里面的内容,在你不具备的情况下,根本是不可能看懂学术论文的,因为你理解的通常和作者想说的以90%的概率不同,而对于初学者这本来就是悖论(也就是题主加粗的部分,说的很对)。所以起步是,你需要导师告诉你看哪些书,哪些论文,然后你看的一知半解的时候和他讨论得到反馈,然后继续无限迭代。第一阶段争取先在一个具体的研究问题上突破,掌握了这个小问题的知识,以及学术论文阅读的能力,然后在第二阶段不断拓宽自己的知识集,从点到线再到面。在这个过程(第二阶段)中,多和同事(同学,其它老师)交流,把你知道的教给别人,让人家把知道的教给你,尽快拓宽自己的知识面。懂的越多(哪怕是皮毛),学新的就越快。同时知识不是金钱,你给别人一份别人给你一份就是两份。经过了5-6年这样的过程,你就发现,啊原来自己还是什么都不懂……开个玩笑了,你就发现你懂了很多东西了,虽然和不懂的东西比还是冰山一角,但是至少可以自由的了解这个世界上任何自己想知道的内容了。&/p&&br&&p&题目问的是本科生,本科生和导师做暑期实习之类的大概是3个月左右吧,大概第一阶段有走完的有走一半的。本科生嘛,就是导师看下你有没有做研究的天份,如果有帮你推荐一下,99.99%的人不会在本科期间到达第二阶段的,不用太心急。整个走下来就拿到了博士学位,这个过程的速度主要取决于导师的水平和视野,这也是为什么找个好的导师总是最重要的。&/p&
基础知识(工具包)靠上课,在名校争取多上课,在弱校就多看名校的课的视频或者课件。我们学校大多数课件网上都有,没事当刷知乎吧。 不管本科生也好,研究生也好,探究前沿问题的方式是一样的,就是靠导师。自学太缓慢,一个是看不懂,另一个是你觉得你懂…
&figure&&img src=&/50/v2-ff1b34c8df2cf35a1948482_b.jpg& data-rawwidth=&1384& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1384& data-original=&/50/v2-ff1b34c8df2cf35a1948482_r.jpg&&&/figure&我司打杂的小伙是个果粉,熬夜看完 WWDC17 了激动万分,发觉 iPad Pro 秒变机器学习平台,忍不住下手了一台 iPad Pro。然后,就有了下边这一通折腾。&p&Apple 新出的 CoreMachineLearning 是设计运行在终端设备上的机器学习框架,试图让 iOS 开发者能够便捷地将机器学习训练成果运用到 App 中。需要的一切,苹果都已经准备放 &a href=&/?target=https%3A///machine-learning/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Machine Learning - Apple Developer&i class=&icon-external&&&/i&&/a& 了,当然有时间瞅一眼新鲜热辣的 WWDC Session ( &a href=&/?target=https%3A///videos/play/wwdc/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Introducing Core ML&i class=&icon-external&&&/i&&/a& 和 &a href=&/?target=https%3A///videos/play/wwdc/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Core ML in depth&i class=&icon-external&&&/i&&/a& 和 &a href=&/?target=https%3A///videos/play/wwdc/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Vision Framework: Building on Core ML&i class=&icon-external&&&/i&&/a& 和 &a href=&/?target=https%3A///videos/play/wwdc/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Natural Language Processing and your Apps&i class=&icon-external&&&/i&&/a& ) 就更好了。 &/p&&p&CoreML 应用就是最普通的 iOS 应用,用 Single View App 模板生成一个就好了,由于 Swift 那可怕的编译速度和迟迟不肯冻结的 ABI ,还是使 Objective-C 写比较有耐久度。iOS 界面相关的就跳过了。&/p&&p&接下来去找练好的模型,苹果已经转好了几个,在 &a href=&/?target=https%3A///machine-learning/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Machine Learning - Apple Developer&i class=&icon-external&&&/i&&/a& 往下翻就会看到,同时提供了转换模型的工具,并且公开了模型规格,方便给其它平台写转换工具。其中的 GoogLeNetPlaces 这个比较小,就拿它来练手了。&/p&&p&顺便说一下,如果这时候觉得官方的文档太简略,去网上找教程的话,多半会找到 &a href=&/?target=https%3A///164213/coreml-and-vision-machine-learning-in-ios-11-tutorial& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Core ML and Vision: Machine Learning in iOS 11 Tutorial&i class=&icon-external&&&/i&&/a&,其实直接操作 Core ML 模型并没那么可怕,实际上还要简单。&/p&&p&1、把下载好的模型拖进 Project Navigator 里&/p&&p&&figure&&img src=&/v2-dc4e606c96aa_b.png& data-rawwidth=&1484& data-rawheight=&670& class=&origin_image zh-lightbox-thumb& width=&1484& data-original=&/v2-dc4e606c96aa_r.png&&&/figure&确认后,模型就加到应用里了。&/p&&p&2、点开来看看。&/p&&p&&figure&&img src=&/v2-2e496d0fa75ad8c9cff7_b.png& data-rawwidth=&1936& data-rawheight=&1028& class=&origin_image zh-lightbox-thumb& width=&1936& data-original=&/v2-2e496d0fa75ad8c9cff7_r.png&&&/figure&这里看到的信息非常重要,怎么使用全在这里边了。&/p&&p&3、认识 Model Class&/p&&p&&figure&&img src=&/v2-1cf0b9fbc38f59307c93bc_b.png& data-rawwidth=&854& data-rawheight=&114& class=&origin_image zh-lightbox-thumb& width=&854& data-original=&/v2-1cf0b9fbc38f59307c93bc_r.png&&&/figure&这个是 Xcode 根据模型编译生成的接口类,应用程序需要 #import &GoogLeNetPlaces.h&。占最右边那个箭头,就会打开这个头文件。找出有哪些 -init 方法就靠翻,所以还是去浏览一遍为好。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&- (nullable instancetype)initWithContentsOfURL:(NSURL *)url error:(NSError * _Nullable * _Nullable)
&/code&&/pre&&/div&&p&这下知道怎么初始化了。&/p&&p&4、认识输入输出&/p&&p&CoreML 接的机器学习模型是一个黑箱,我们只管从进料孔放原料进去,过一会儿,加工好的结果就会从输出口送出来了。每个模型解决的问题、处理的方法不同,需要的输入和产生的输出也各不相同,Model Evaluation Parameters 就是描述这个的。&/p&&p&&figure&&img src=&/v2-eb8fb008bbf2b33f447e5f_b.png& data-rawwidth=&1242& data-rawheight=&352& class=&origin_image zh-lightbox-thumb& width=&1242& data-original=&/v2-eb8fb008bbf2b33f447e5f_r.png&&&/figure&GoogLeNetPlaces 这个模型接受一个名为 sceneImage 输入,处理后输出两个结果,一个是 sceneLabel 表示图片中最有可能是什么场合,另一个是 sceneLabelProbs 是所有场景分别的可能性。特别要注意的 Type 部分的信息,Image&RGB,224,224& 表示接收一个图片,格式得是 RGB 的,大小得是 224x224 像素的。&/p&&p&光看这个,新手还是不知道怎么用嘛。还是得去看 Model Class 的头文件:&/p&&div class=&highlight&&&pre&&code class=&language-objective-c&&&span&&/span&&span class=&p&&-&/span& &span class=&p&&(&/span&&span class=&n&&nullable&/span& &span class=&n&&GoogLeNetPlacesOutput&/span& &span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nf&&predictionFromFeatures:&/span&&span class=&p&&(&/span&&span class=&n&&GoogLeNetPlacesInput&/span& &span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nv&&input&/span& &span class=&nf&&error:&/span&&span class=&p&&(&/span&&span class=&bp&&NSError&/span& &span class=&o&&*&/span& &span class=&n&&_Nullable&/span& &span class=&o&&*&/span& &span class=&n&&_Nullable&/span&&span class=&p&&)&/span&&span class=&nv&&error&/span&&span class=&p&&;&/span&
&span class=&p&&-&/span& &span class=&p&&(&/span&&span class=&n&&nullable&/span& &span class=&n&&GoogLeNetPlacesOutput&/span& &span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nf&&predictionFromSceneImage:&/span&&span class=&p&&(&/span&&span class=&n&&CVPixelBufferRef&/span&&span class=&p&&)&/span&&span class=&nv&&sceneImage&/span& &span class=&nf&&error:&/span&&span class=&p&&(&/span&&span class=&bp&&NSError&/span& &span class=&o&&*&/span& &span class=&n&&_Nullable&/span& &span class=&o&&*&/span& &span class=&n&&_Nullable&/span&&span class=&p&&)&/span&&span class=&nv&&error&/span&&span class=&p&&;&/span&
&/code&&/pre&&/div&&p&可见有2调用接口,-predictionFromFeatures:error: 是标准接口,需要自己构造一个 GoogLeNetPlacesInput 传进去,-predictionFromSceneImage:error: 是易用接口,直接传图片就行了,因为这部分经常要跟 Video、GPU 打交道,所以参数不是 UIImage/CGImage 这类,而是一个 CVPixelBuffer 的引用。好在用 CoreImage 可以方便的将 UIImage 之类的放到一个 CVPixelBuffer 里。&/p&&div class=&highlight&&&pre&&code class=&language-objective-c&&&span&&/span&
&span class=&n&&CVReturn&/span& &span class=&n&&status&/span& &span class=&o&&=&/span& &span class=&n&&CVPixelBufferCreate&/span&&span class=&p&&(&/span&&span class=&n&&kCFAllocatorDefault&/span&&span class=&p&&,&/span&
&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&width&/span&&span class=&p&&,&/span&
&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&height&/span&&span class=&p&&,&/span&
&span class=&n&&kCVPixelFormatType_32ARGB&/span&&span class=&p&&,&/span&
&span class=&p&&(&/span&&span class=&k&&__bridge&/span& &span class=&n&&CFDictionaryRef&/span&&span class=&p&&)&/span& &span class=&l&&@{&/span&&span class=&p&&(&/span&&span class=&k&&__bridge&/span& &span class=&bp&&NSString&/span& &span class=&o&&*&/span&&span class=&p&&)&/span& &span class=&nl&&kCVPixelBufferIOSurfacePropertiesKey&/span&&span class=&p&&:&/span& &span class=&l&&@{}}&/span&&span class=&p&&,&/span&
&span class=&o&&&&/span&&span class=&n&&imgBuf&/span&&span class=&p&&);&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span& &span class=&n&&status&/span& &span class=&o&&==&/span& &span class=&n&&kCVReturnSuccess&/span& &span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&bp&&CIImage&/span& &span class=&o&&*&/span&&span class=&n&&ciImg&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&bp&&CIImage&/span& &span class=&nl&&imageWithCGImage&/span&&span class=&p&&:&/span&&span class=&n&&img&/span&&span class=&p&&.&/span&&span class=&bp&&CGImage&/span&&span class=&p&&];&/span&
&span class=&bp&&NSError&/span& &span class=&o&&*&/span& &span class=&n&&err&/span&&span class=&p&&;&/span&
&span class=&bp&&CIContext&/span& &span class=&o&&*&/span&&span class=&n&&ciContext&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&bp&&CIContext&/span& &span class=&nl&&contextWithCGContext&/span&&span class=&p&&:&/span&&span class=&n&&UIGraphicsGetCurrentContext&/span&&span class=&p&&()&/span& &span class=&nl&&options&/span&&span class=&p&&:&/span&&span class=&nb&&nil&/span&&span class=&p&&];&/span&
&span class=&p&&[&/span&&span class=&n&&ciContext&/span& &span class=&nl&&render&/span&&span class=&p&&:&/span&&span class=&n&&ciImg&/span& &span class=&nl&&toCVPixelBuffer&/span&&span class=&p&&:&/span&&span class=&n&&imgBuf&/span&&span class=&p&&];&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&5、需要知道的都知道了,可以干活了&/p&&p&//
SceneImageAnalyzer.h&/p&&div class=&highlight&&&pre&&code class=&language-objective-c&&&span&&/span&&span class=&cp&&#import &Foundation/Foundation.h&&/span&
&span class=&cp&&#import &UIKit/UIImage.h&&/span&
&span class=&k&&@interface&/span& &span class=&nc&&SceneImageAnalyzer&/span& : &span class=&bp&&NSObject&/span&
&span class=&p&&-&/span& &span class=&nf&&initWithUrl:&/span&&span class=&p&&(&/span&&span class=&bp&&NSURL&/span&&span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nv&&url&/span&&span class=&p&&;&/span&
&span class=&p&&-&/span& &span class=&p&&(&/span&&span class=&bp&&NSString&/span&&span class=&o&&*&/span&&span class=&p&&)&/span& &span class=&nf&&analyzeImage:&/span&&span class=&p&&(&/span&&span class=&bp&&UIImage&/span&&span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nv&&origImg&/span& &span class=&nf&&allPossible:&/span&&span class=&p&&(&/span&&span class=&bp&&NSMutableDictionary&/span&&span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nv&&all&/span&&span class=&p&&;&/span&
&span class=&k&&@end&/span&
&/code&&/pre&&/div&&p&// SceneImageAnalyzer.m&/p&
&div class=&highlight&&&pre&&code class=&language-objective-c&&&span&&/span&&span class=&cp&&#import &SceneImageAnalyzer.h&&/span&
&span class=&cp&&#import &GoogLeNetPlaces.h&&/span&
&span class=&p&&@&/span&&span class=&n&&import&/span& &span class=&n&&UIKit&/span&&span class=&p&&;&/span&
&span class=&k&&@interface&/span& &span class=&nc&&SceneImageAnalyzer&/span&&span class=&p&&()&/span&
&span class=&k&&@property&/span& &span class=&p&&(&/span&&span class=&k&&nonatomic&/span&&span class=&p&&,&/span&&span class=&k&&strong&/span&&span class=&p&&)&/span& &span class=&n&&GoogLeNetPlaces&/span& &span class=&o&&*&/span& &span class=&n&&model&/span&&span class=&p&&;&/span&
&span class=&k&&@end&/span&
&span class=&k&&@implementation&/span& &span class=&nc&&SceneImageAnalyzer&/span&
&span class=&p&&-&/span& &span class=&p&&(&/span&&span class=&n&&SceneImageAnalyzer&/span&&span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nf&&initWithUrl:&/span&&span class=&p&&(&/span&&span class=&bp&&NSURL&/span&&span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nv&&url&/span& &span class=&p&&{&/span&
&span class=&nb&&self&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&nb&&super&/span& &span class=&n&&init&/span&&span class=&p&&];&/span&
&span class=&nb&&self&/span&&span class=&p&&.&/span&&span class=&n&&model&/span& &span class=&o&&=&/span& &span class=&p&&[[&/span&&span class=&n&&GoogLeNetPlaces&/span& &span class=&n&&alloc&/span&&span class=&p&&]&/span& &span class=&nl&&initWithContentsOfURL&/span&&span class=&p&&:&/span&&span class=&n&&url&/span& &span class=&nl&&error&/span&&span class=&p&&:&/span&&span class=&nb&&nil&/span&&span class=&p&&];&/span&
&span class=&k&&return&/span& &span class=&nb&&self&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&-&/span& &span class=&p&&(&/span&&span class=&bp&&NSString&/span&&span class=&o&&*&/span&&span class=&p&&)&/span& &span class=&nf&&analyzeImage:&/span&&span class=&p&&(&/span&&span class=&bp&&UIImage&/span&&span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nv&&origImg&/span& &span class=&nf&&allPossible:&/span&&span class=&p&&(&/span&&span class=&bp&&NSMutableDictionary&/span&&span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nv&&all&/span& &span class=&p&&{&/span&
&span class=&bp&&CGSize&/span& &span class=&n&&size&/span& &span class=&o&&=&/span&&span class=&n&&CGSizeMake&/span&&span class=&p&&(&/span&&span class=&mi&&224&/span&&span class=&p&&,&/span& &span class=&mi&&224&/span&&span class=&p&&);&/span&
&span class=&bp&&UIImage&/span& &span class=&o&&*&/span& &span class=&n&&img&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&nb&&self&/span& &span class=&nl&&fitImage&/span&&span class=&p&&:&/span&&span class=&n&&origImg&/span& &span class=&nl&&toSize&/span&&span class=&p&&:&/span&&span class=&n&&size&/span&&span class=&p&&];&/span&
&span class=&n&&CVPixelBufferRef&/span& &span class=&n&&imgBuf&/span& &span class=&o&&=&/span& &span class=&nb&&NULL&/span&&span class=&p&&;&/span&
&span class=&n&&CVReturn&/span& &span class=&n&&status&/span& &span class=&o&&=&/span& &span class=&n&&CVPixelBufferCreate&/span&&span class=&p&&(&/span&&span class=&n&&kCFAllocatorDefault&/span&&span class=&p&&,&/span&
&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&width&/span&&span class=&p&&,&/span&
&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&height&/span&&span class=&p&&,&/span&
&span class=&n&&kCVPixelFormatType_32ARGB&/span&&span class=&p&&,&/span&
&span class=&p&&(&/span&&span class=&k&&__bridge&/span& &span class=&n&&CFDictionaryRef&/span&&span class=&p&&)&/span& &span class=&l&&@{&/span&&span class=&p&&(&/span&&span class=&k&&__bridge&/span& &span class=&bp&&NSString&/span& &span class=&o&&*&/span&&span class=&p&&)&/span& &span class=&nl&&kCVPixelBufferIOSurfacePropertiesKey&/span&&span class=&p&&:&/span& &span class=&l&&@{}}&/span&&span class=&p&&,&/span&
&span class=&o&&&&/span&&span class=&n&&imgBuf&/span&&span class=&p&&);&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span& &span class=&n&&status&/span& &span class=&o&&==&/span& &span class=&n&&kCVReturnSuccess&/span& &span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&bp&&CIImage&/span& &span class=&o&&*&/span&&span class=&n&&ciImg&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&bp&&CIImage&/span& &span class=&nl&&imageWithCGImage&/span&&span class=&p&&:&/span&&span class=&n&&img&/span&&span class=&p&&.&/span&&span class=&bp&&CGImage&/span&&span class=&p&&];&/span&
&span class=&bp&&NSError&/span& &span class=&o&&*&/span& &span class=&n&&err&/span&&span class=&p&&;&/span&
&span class=&bp&&CIContext&/span& &span class=&o&&*&/span&&span class=&n&&ciContext&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&bp&&CIContext&/span& &span class=&nl&&contextWithCGContext&/span&&span class=&p&&:&/span&&span class=&n&&UIGraphicsGetCurrentContext&/span&&span class=&p&&()&/span& &span class=&nl&&options&/span&&span class=&p&&:&/span&&span class=&nb&&nil&/span&&span class=&p&&];&/span&
&span class=&p&&[&/span&&span class=&n&&ciContext&/span& &span class=&nl&&render&/span&&span class=&p&&:&/span&&span class=&n&&ciImg&/span& &span class=&nl&&toCVPixelBuffer&/span&&span class=&p&&:&/span&&span class=&n&&imgBuf&/span&&span class=&p&&];&/span&
&span class=&n&&GoogLeNetPlacesOutput&/span& &span class=&o&&*&/span& &span class=&n&&result&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&nb&&self&/span&&span class=&p&&.&/span&&span class=&n&&model&/span& &span class=&nl&&predictionFromSceneImage&/span&&span class=&p&&:&/span&&span class=&n&&imgBuf&/span& &span class=&nl&&error&/span&&span class=&p&&:&/span&&span class=&o&&&&/span&&span class=&n&&err&/span&&span class=&p&&];&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span& &span class=&n&&err&/span& &span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&k&&return&/span& &span class=&p&&[&/span&&span class=&n&&err&/span& &span class=&n&&description&/span&&span class=&p&&];&/span&
&span class=&p&&}&/span& &span class=&k&&else&/span& &span class=&p&&{&/span&
&span class=&p&&[&/span&&span class=&n&&all&/span& &span class=&nl&&addEntriesFromDictionary&/span&&span class=&p&&:&/span&&span class=&n&&result&/span&&span class=&p&&.&/span&&span class=&n&&sceneLabelProbs&/span&&span class=&p&&];&/span&
&span class=&k&&return&/span& &span class=&n&&result&/span&&span class=&p&&.&/span&&span class=&n&&sceneLabel&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&k&&return&/span& &span class=&s&&@&I need more training.&&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&-&/span& &span class=&p&&(&/span&&span class=&bp&&UIImage&/span& &span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nf&&fitImage:&/span&&span class=&p&&(&/span&&span class=&bp&&UIImage&/span& &span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&nv&&image&/span& &span class=&nf&&toSize:&/span&&span class=&p&&(&/span&&span class=&bp&&CGSize&/span&&span class=&p&&)&/span&&span class=&nv&&size&/span& &span class=&p&&{&/span&
&span class=&n&&CGFloat&/span& &span class=&n&&wfactor&/span& &span class=&o&&=&/span& &span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&width&/span& &span class=&o&&/&/span& &span class=&n&&image&/span&&span class=&p&&.&/span&&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&width&/span&&span class=&p&&;&/span&
&span class=&n&&CGFloat&/span& &span class=&n&&hfactor&/span& &span class=&o&&=&/span& &span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&height&/span& &span class=&o&&/&/span& &span class=&n&&image&/span&&span class=&p&&.&/span&&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&height&/span&&span class=&p&&;&/span&
&span class=&n&&CGFloat&/span& &span class=&n&&scaleFactor&/span& &span class=&o&&=&/span& &span class=&n&&wfactor&/span&&span class=&o&&&&/span&&span class=&n&&hfactor&/span& &span class=&o&&?&/span& &span class=&nl&&wfactor&/span& &span class=&p&&:&/span& &span class=&n&&hfactor&/span&&span class=&p&&;&/span&
&span class=&n&&UIGraphicsBeginImageContext&/span&&span class=&p&&(&/span&&span class=&n&&size&/span&&span class=&p&&);&/span&
&span class=&bp&&CGRect&/span& &span class=&n&&rect&/span& &span class=&o&&=&/span& &span class=&n&&CGRectMake&/span&&span class=&p&&((&/span&&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&width&/span& &span class=&o&&-&/span& &span class=&n&&image&/span&&span class=&p&&.&/span&&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&width&/span& &span class=&o&&*&/span& &span class=&n&&scaleFactor&/span&&span class=&p&&)&/span& &span class=&o&&/&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span&
&span class=&p&&(&/span&&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&height&/span& &span class=&o&&-&/span&
&span class=&n&&image&/span&&span class=&p&&.&/span&&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&height&/span& &span class=&o&&*&/span& &span class=&n&&scaleFactor&/span&&span class=&p&&)&/span& &span class=&o&&/&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span&
&span class=&n&&image&/span&&span class=&p&&.&/span&&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&width&/span& &span class=&o&&*&/span& &span class=&n&&scaleFactor&/span&&span class=&p&&,&/span& &span class=&n&&image&/span&&span class=&p&&.&/span&&span class=&n&&size&/span&&span class=&p&&.&/span&&span class=&n&&height&/span& &span class=&o&&*&/span& &span class=&n&&scaleFactor&/span&&span class=&p&&);&/span&
&span class=&p&&[&/span&&span class=&n&&image&/span& &span class=&nl&&drawInRect&/span&&span class=&p&&:&/span&&span class=&n&&rect&/span&&span class=&p&&];&/span&
&span class=&bp&&UIImage&/span& &span class=&o&&*&/span&&span class=&n&&scaledImage&/span& &span class=&o&&=&/span& &span class=&n&&UIGraphicsGetImageFromCurrentImageContext&/span&&span class=&p&&();&/span&
&span class=&n&&UIGraphicsEndImageContext&/span&&span class=&p&&();&/span&
&span class=&k&&return&/span& &span class=&n&&scaledImage&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&@end&/span&
&/code&&/pre&&/div&&p&6、用起来&/p&&p&主程序里,要加载模型,练手程序就简单点儿,放到 ViewController 的 viewDidLoad 里了。产品的最好是在 app delegate 里 dispatch_once 之。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&
NSURL * modelUrl = [[NSBundle mainBundle] URLForResource:@&GoogLeNetPlaces& withExtension:@&mlmodelc&];
self.analyzer = [[SceneImageAnalyzer alloc] initWithUrl:modelUrl];
&/code&&/pre&&/div&&p&要注意的是,文件扩展名不是在 Xcode 里看到的 .mlmodel,而是编译后的 .mlmodelc 。&/p&&p&7、模拟器运行&/p&&p&如果 Xcode9 Beta
和 Xcode 8 发行版本都装了,注意给 Xcode 改个名字,不然 Xcode9 Beta 可能会连不上模拟器。&/p&&figure&&img src=&/v2-829cfb8c25e_b.png& data-rawwidth=&1172& data-rawheight=&1530& class=&origin_image zh-lightbox-thumb& width=&1172& data-original=&/v2-829cfb8c25e_r.png&&&/figure&&br&&p&8、真机运行&/p&&p&Oh yeah,终于到了 iPad Pro 闪亮的时刻了。很不幸,一开 UIImagePickerController 就崩了。这是因为了隐私安全设置没加上,到 Info.plist 里加上下边这些 Privacy 开头的:&/p&&p&&figure&&img src=&/v2-b3fc47fe5be7f99cdde4d53_b.png& data-rawwidth=&1692& data-rawheight=&828& class=&origin_image zh-lightbox-thumb& width=&1692& data-original=&/v2-b3fc47fe5be7f99cdde4d53_r.png&&&/figure&然后就可以拿着去玩耍啦:&/p&&p&&figure&&img src=&/v2-bd887bdd9ee72dd52d6b81d_b.jpg& data-rawwidth=&1280& data-rawheight=&960& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-bd887bdd9ee72dd52d6b81d_r.jpg&&&/figure&* 对了,得先升到 iOS 11 呀,在 iPad Pro 上访问开发者网站下载 Profile,就可以打开 beta 升级了。如果 iPad Pro 检测到升级,但 install 按钮是灰的,一直提示“you can install this update when your iPad is finished restoring from the iCloud backup”。在 settings 里用户头像,进 iCloud 设置,再进 iCloud Backup,底下有一个 stop iCloud restoring 按钮。&/p&&p&------------------------------------------&br&完整代码见:&a href=&/?target=https%3A///pinxue/TryCML.git& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Github - TryCML&i class=&icon-external&&&/i&&/a&&/p&&br&&p&-- 来一起玩机器学习不?&a href=&/?target=http%3A///jobs.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&脸云(上海)互联网科技有限公司&i class=&icon-external&&&/i&&/a& 正在招聘&/p&
我司打杂的小伙是个果粉,熬夜看完 WWDC17 了激动万分,发觉 iPad Pro 秒变机器学习平台,忍不住下手了一台 iPad Pro。然后,就有了下边这一通折腾。Apple 新出的 CoreMachineLearning 是设计运行在终端设备上的机器学习框架,试图让 iOS 开发者能够便捷地…
&figure&&img src=&/50/v2-cee92ace3b36a0cbf18c2afedb33344e_b.jpg& data-rawwidth=&493& data-rawheight=&234& class=&origin_image zh-lightbox-thumb& width=&493& data-original=&/50/v2-cee92ace3b36a0cbf18c2afedb33344e_r.jpg&&&/figure&与朋友探讨“学霸”与“学渣”的问题,得出的想法虽有些武断,但与我们的惯性思维有些不同:&br&&br&一、把学霸描述成书呆子,是许多同学为求心里平衡的美好想象。事实上许多学霸不单学习好,也很会玩儿。一个朋友的侄子考入人民大学附中(就是那所扬言“学习不努力,长大考隔壁”的奇葩学校),结果极为痛苦。班里的许多大拿,又踢足球又排话剧,还读点儿英文原著写点儿诗啥的,人家的学习成绩照样顶呱呱,让他怎么追都吃力。&br&&br&二、学习不好是因为不够努力,这种想法可以休矣。一些人把学与玩对立起来,认为孩子学习不好,是因为贪玩、屁股坐不住造成的,于是百般提倡头悬梁锥刺股,板凳要坐十年冷,动点儿玩心就要展开批评与自我批评。孩子也乐于摆出一副刻苦学习的样子,不动凡心不起玩心(好像这样的话就“罪不在我”了),可这种刻意追求的清心寡欲,反倒让成绩提高甚慢,甚至越来越渣。&br&&br&三、尽管有教育方式不人道、甚至反人性之处;尽管有的课程内容就是激不起学生的兴趣、学习本身就是一种浪费;尽管有那种错误的般配,让喜欢这一行的人痛苦地学了另一行——这些状况当然会造就学渣无数,但平心而论,从小学到高考的功课,其难度并不大,考入重点大学的分数要求也并不高,既不用攀比天分,也无需比拼勤奋,就可顺利完成学业,进入下一轮通关。&br&&br&那么,问题出在哪里呢?&br&&br&是我们的学生该学习的时候并没有学进去。&br&&br&教育专家对此已有结论:许多同学学习效率低下,上课的时候充耳不闻,听不进去;自习的时候熟视无睹,看不进去;阅读的时候心中波澜不惊,不能深入理解领会,举一反三触类旁通,这种情况下,摆出如何寒窗苦读的样子都没用。&br&&br&这样的小朋友,欠缺的是自我管理,静观、倾听的习惯,专注、自制的能力,以及因好奇心、想象力而激发出来的自我渴求的动力。不具备这些,不仅学不好,也不可能玩好。因为玩本身也是一种学习,一种交往能力、沟通能力和管理能力的培养。&br&&br&在一个小生命心智编码、信息解码的成长过程中,学和玩应该是相通的,充满作秀感、用于满足旁人和自己的心不在焉的学习姿态,才与学习本身是对立的。
与朋友探讨“学霸”与“学渣”的问题,得出的想法虽有些武断,但与我们的惯性思维有些不同: 一、把学霸描述成书呆子,是许多同学为求心里平衡的美好想象。事实上许多学霸不单学习好,也很会玩儿。一个朋友的侄子考入人民大学附中(就是那所扬言“学习不努…
&figure&&img src=&/50/v2-ce2ce46e4a206da5fda21_b.png& data-rawwidth=&965& data-rawheight=&797& class=&origin_image zh-lightbox-thumb& width=&965& data-original=&/50/v2-ce2ce46e4a206da5fda21_r.png&&&/figure&&p&有一天,小明给了我三个问题(其实是我自己出的啦~)&/p&&br&&p&&b&(1)&/b&有一个机器,支持两种操作,在区间[1,10000]上进行。&/p&&p&操作A:把位置x的值+k&/p&&p&操作B:询问区间[l,r]所有数字之和&/p&&p&区间的初始值全部为0&/p&&p&现在你要充当这个机器,操作A和操作B会被穿插着安排给你,&/p&&p&要求对于所有操作B,给出正确的答案。&/p&&p&怎样做才能最节省精力?&/p&&br&&br&&p&&b&(2)&/b&有一个机器,支持两种操作,在区间[1,10000]上进行。&/p&&p&操作A:把区间[l,r]的值全都+x&/p&&p&操作B:询问x位置的值。&/p&&p&区间的初始值全部为0&/p&&p&现在你要充当这个机器,操作A和操作B会被穿插着安排给你,&/p&&p&要求对于所有操作B,给出正确的答案。&/p&&p&怎样做才能最节省精力?&/p&&br&&br&&p&&b&(3)&/b&有一个机器,支持两种操作,在区间[1,10000]上进行。&/p&&p&操作A:把区间[l,r]的值全都+x&/p&&p&操作B:询问区间[l,r]所有数字之和&/p&&p&区间的初始值全部为0&/p&&p&现在你要充当这个机器,操作A和操作B会被穿插着安排给你,&/p&&p&要求对于所有操作B,给出正确的答案。&/p&&p&怎样做才能最节省精力?&/p&&br&&br&&p&三个问题中操作的数量都可以认为是10000这个数量级&/p&&p&你可以动用的工具有:无限墨水的笔,一张足够大的纸,你的大脑(没多大内存的~)。&/p&&p&注意:&/p&&p&1.举个例子,进行这种类似的操作:&/p&&p&从一行任意打乱的数字中找一个数字&/p&&p&不能认为一瞬间就可以找到,在这里所花费的精力和数字的总数具有线性关系。&/p&&p&2.我们认为将数据转换为二进制不需要任何时间。&/p&&br&&br&&p&对于问题1,如果我们每种操作都暴力进行,&/p&&p&那么显然总的时间复杂度为O(mA+n*mB),n表示区间长度,&/p&&p&mA表示操作A执行的次数,mB表示操作B执行的次数。&/p&&br&&p&那么有没有一种更加轻松的办法呢?&/p&&p&我们将引入一种数据结构,叫做&树状数组&。&/p&&br&&br&&p&在介绍树状数组之前,需要先介绍一下二进制的按位运算,这里只需要用到两种:&/p&&p&按位与运算,符号&: 两个数字都为1时,得1,否则得0.&/p&&p&那么1&1=1,0&1=0,1&0=0,0&0=0&/p&&br&&p&3&11的值是多少呢?我们把它化成二进制&/p&&p&两个数字分别为,然后对应的,每位之间进行与运算&/p&&div class=&highlight&&&pre&&code class=&language-cpp&&&span&&/span&
&span class=&mo&&0011&/span&
&span class=&o&&&&/span& &span class=&mi&&1011&/span&
&span class=&err&&——————&/span&
&span class=&mo&&0011&/span&
&/code&&/pre&&/div&&p&所以答案是0011,即十进制的3。&/p&&br&&br&&p&接下来再介绍一下按位非运算,符号~,运算方法是0变1,1变0&/p&&p&比如~9的值,就是~1001(二进制),得到0110。&/p&&p&那么按位运算就说完了。&/p&&p&最后为了方便理解后面的内容,还得介绍一个计算机的特点。&/p&&br&&p&在计算机中,我们操作的变量通常都有一个固定的位数,&/p&&p&比如c++中 int32_t 类型的变量,它用32位的二进制数来存储一个整数。&/p&&p&在这个范围下,&/p&&p&~1=~11110&/p&&br&&p&另外,n位的二进制数进行运算,一旦向第n+1位有进位,会直接舍去这个进位,&/p&&p&如四位二进制数,答案是0000而不是10000。&/p&&br&&p&有了这么多铺垫,要开始正题啦~&/p&&p&现在就要介绍一个非常神奇的函数,它叫做lowbit。&/p&&br&&p&lowbit(x)=x&((~x)+1)
(为了少引入补码的概念,我们这里稍微麻烦了一下,其实x&-x就行)&/p&&p&它的作用是什么呢?&/p&&p&它只保留&从低位向高位数,第一个数字1&作为运算结果&/p&&p&比如二进制数,结果就是,也就是4。&/p&&p&,结果就是,也就是1&/p&&p&不信的话可以验证一下。&/p&&br&&br&&p&那么这种运算对我们的算法有什么帮助呢?&/p&&p&首先我们来解决一下问题1。&/p&&p&先列举出从1~32的lowbit,&/p&&p&1 2 1 4 1 2 1 8 1 2 1 4 1 2 1 16 1 2 1 4 1 2 1 8 1 2 1 4 1 2 1 32&/p&&br&&p&我们让第i个位置管理[i-lowbit(i)+1,i]这一段区间,示意图如下:&/p&&p&怎么看每个数字管理多少?&/p&&p&只要顺着数字往下画竖线,碰到的第一根横线所覆盖的范围就是它能管理的范围。&/p&&figure&&img src=&/v2-5a6c72658bbab4eae68e_b.png& data-rawwidth=&538& data-rawheight=&242& class=&origin_image zh-lightbox-thumb& width=&538& data-original=&/v2-5a6c72658bbab4eae68e_r.png&&&/figure&&br&&br&&p&我们每次执行操作A(把位置x的值+k),只需要把&能管理到x的所有位置&都+k就行&/p&&p&那么怎样快速找到哪些位置能管理到x呢?&/p&&p&答案还是lowbit&/p&&br&&p&我们先更新x,然后把x赋给一个新值,x+lowbit(x),那么新值依然可以管理到x,这样依次类推直到&/p&&p&x&10000即可。&/p&&p&比如x=2,那么首先把2的值+k,这不用说。&/p&&p&然后x的新值=x+lowbit(x)=2+lowbit(2)=4,对着上面的示意图看看,会发现4确实能管理到2,那么把4的位置+k&/p&&p&然后再来一遍,x=4+lowbit(4)=8,发现8还是能管理到2,继续给8这个位置+k,就这样依次类推下去&/p&&p&直到x=16384时,超过10000了,操作完成。&/p&&p&这样操作之后,树状数组里每一位当前存的值可能并不是该位置的实际值,为了方便区分,在下文中我们把实际值叫做&原数组的值&,当前值就叫做&树状数组的值&。&/p&&br&&p&可以证明,对于任意一个x属于[1,10000]我们最多进行log(2,10000)次操作,就可以完成操作A&/p&&br&&br&&p&那么把操作A变复杂(从O(1)变到O(logn))能换来什么好处?&/p&&p&答案就是,可以把操作B的时间复杂度降低成log级别的&/p&&br&&br&&p&询问区间[L,R]的和sum(L,R)。我们只需要求出sum(1,R)和sum(1,L-1),&/p&&p&然后sum(1,R)-sum(1,L-1)就是sum(L,R)了&/p&&p&那么对于任意的x,sum(1,x)怎么求呢?&/p&&p&我们把最终得到的答案存在ans变量中,执行下面的操作:&/p&&p&(1)ans初始化为0&/p&&p&(2)ans加上x位置的值&/p&&p&(3)给x赋予新值 x-lowbit(x)&/p&&p&(4)如果x&0则跳回操作(2),否则结束算法。&/p&&p&举个例子介绍一下:&/p&&br&&p&一开始我们还是停留在树状数组第x位置上(比如x=6吧),答案一开始为0。&/p&&p&还记得吗,我们在进行&给原数组第x位置的数增加k&这个操作时,把&能管理到x的所有位置&都增加了k。&/p&&p&那么,对于任意一个位置,树状数组里的值就是&它能管理到的所有位置上,原数组的值之和&。&/p&&p&因此我们给答案加上树状数组第x位置的值,这里就得到了sum(5,6),因为6能管理[5,6]&/p&&p&然后给x减去lowbit(x),得到4。再加上x位置的值,也就是sum(1,4),因为4能管理[1,4]&/p&&p&再让x=x-lowbit(x),得到0,由于不再大于0,算法终止,得到答案。&/p&&p&这时答案恰好是sum(1,6),哈哈~&/p&&p&依然可以证明,最多只需要进行log级别次数的查询。&/p&&p&这样我们进行操作B的时间复杂度也是log级别了。&/p&&br&&br&&p&至此,树状数组就说完了,问题1也成功得到解决,时间复杂度O((mA+mB)*logn)。&/p&&p&在10000这个数量级下明显比之前的O(mA+(mB*n))小得多。&/p&&p&而且,位运算的常数非常小,因此整个算法执行速度会很快。&/p&&br&&br&&p&问题2怎么办?用差分的方法,区间[l,r]所有值+k改成&位置l加上k,位置r+1减去k&&/p&&p&查询的时候直接查询sum(1,x)就行,不理解的话可以自己构造一组数据尝试一下。&/p&&br&&br&&p&问题3怎么办?稍微复杂一点&/p&&p&用两个树状数组,分别叫做d和s&/p&&p&进行A操作时,d维护差分,s维护x*d[x]。&/p&&p&update(d,l,x);update(d,r+1,-x);&/p&&p&update(s,l,x*l);update(s,r+1,-x*(r+1));&/p&&p&进行B操作时&/p&&p&sum(L,R)=sum(1,R)-sum(1,L-1)&/p&&p&sum(1,L-1)=L*query(d,L-1)-query(s,L-1)&/p&&p&sum(1,R)=(R+1)*query(d,R)-query(s,R)&/p&&br&此方法是从博客看到的,感谢作者,并附上链接:&p&&a href=&/?target=http%3A//blog.csdn.net/qq_/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【小结】树状数组的区间修改与区间查询 - 每天心塞一点点 - 博客频道 - CSDN.NET&i class=&icon-external&&&/i&&/a&&/p&&br&&p&最后附上我自己封装的c++树状数组模板~&/p&&p&首先是简洁版,适合比赛现场手写,非常简短&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&int tree[100010],n=100000;
void add(int x,int num)
for(;x&=n;x+=x&-x)
int sum(int x)
int answer =0;
for(;x&0;x-=x&-x)
answer+=tree[x];
&/code&&/pre&&/div&&p&然后是一个功能较全的模板类,可以在项目里使用(好像并没有项目用得到2333)&/p&&p&(模板当前版本号为V1.2)&br&&/p&&div class=&highlight&&&pre&&code class=&language-cpp&&&span&&/span&&span class=&cm&&/**&/span&
&span class=&cm&&* 树状数组模板使用说明&/span&
&span class=&cm&&* 以下将树状数组维护的区间称为原数组&/span&
&span class=&cm&&* 操作
时间复杂度
支持范围&/span&
&span class=&cm&&* size()
返回树状数组的大小
&span class=&cm&&* resize(x)
重新指定树状数组的大小为x
x&=0&/span&
&span class=&cm&&* add(i,v)
将原数组第i位增加v
0&=i&size&/span&
&span class=&cm&&* sum(i)
返回原数组下标从0到i的和
0&=i&size&/span&
&span class=&cm&&* sum(l,r)
返回原数组下标从l到r的和
0&=l&=r&size&/span&
&span class=&cm&&* a[i]
返回原数组下标从0到i的和
0&=i&size&/span&
&span class=&cm&&* a[i]+=v
将原数组第i位增加v
0&=i&size&/span&
&span class=&cm&&* a[i]-=v
将原数组第i位减去v
0&=i&size&/span&
&span class=&cm&&* 警告:超出操作支持的范围,产生的结果无法预料。&/span&
&span class=&cm&&* 版权所有,非商业用途可以无限制使用,复制。禁止作为商业用途使用。&/span&
&span class=&cm&&**/&/span&
&span class=&cp&&#include&/span&&span class=&cpf&&&vector&&/span&&span class=&cp&&&/span&
&span class=&k&&namespace&/span& &span class=&n&&OrangeOI&/span&
&span class=&p&&{&/span&
&span class=&k&&template&/span&&span class=&o&&&&/span&&span class=&k&&typename&/span& &span class=&n&&Type&/span&&span class=&o&&&&/span&
&span class=&k&&class&/span& &span class=&nc&&BinaryIndexTree&/span&
&span class=&p&&{&/span&
&span class=&k&&private&/span&&span class=&o&&:&/span&
&span class=&kt&&size_t&/span& &span class=&n&&mSize&/span&&span class=&p&&;&/span&
&span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&vector&/span&&span class=&o&&&&/span&&span class=&n&&Type&/span&&span class=&o&&&&/span& &span class=&n&&mArray&/span&&span class=&p&&;&/span&
&span class=&k&&struct&/span& &span class=&n&&BinaryIndexTree_Node&/span&
&span class=&p&&{&/span&
&span class=&n&&BinaryIndexTree_Node&/span&&span class=&p&&(&/span&&span class=&n&&BinaryIndexTree&/span&&span class=&o&&&&/span& &span class=&n&&bit&/span&&span class=&p&&,&/span& &span class=&kt&&size_t&/span& &span class=&n&&pos&/span&&span class=&p&&)&/span& &span class=&o&&:&/span&
&span class=&n&&mBIT&/span&&span class=&p&&(&/span&&span class=&n&&bit&/span&&span class=&p&&),&/span& &span class=&n&&mPos&/span&&span class=&p&&(&/span&&span class=&n&&pos&/span&&span class=&p&&)&/span& &span class=&p&&{}&/span&
&span class=&k&&const&/span& &span class=&n&&BinaryIndexTree_Node&/span& &span class=&k&&operator&/span& &span class=&o&&+=&/span&&span class=&p&&(&/span&&span class=&n&&Type&/span& &span class=&n&&value&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&mBIT&/span&&span class=&p&&.&/span&&span class=&n&&add&/span&&span class=&p&&(&/span&&span class=&n&&mPos&/span&&span class=&p&&,&/span& &span class=&n&&value&/span&&span class=&p&&);&/span&
&span class=&k&&return&/span& &span class=&o&&*&/span&&span class=&k&&this&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&const&/span& &span class=&n&&BinaryIndexTree_Node&/span& &span class=&k&&operator&/span& &span class=&o&&-=&/span&&span class=&p&&(&/span&&span class=&n&&Type&/span& &span class=&n&&value&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&mBIT&/span&&span class=&p&&.&/span&&span class=&n&&add&/span&&span class=&p&&(&/span&&span class=&n&&mPos&/span&&span class=&p&&,&/span& &span class=&o&&-&/span&&span class=&n&&value&/span&&span class=&p&&);&/span&
&span class=&k&&return&/span& &span class=&o&&*&/span&&span class=&k&&this&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&operator&/span& &span class=&n&&Type&/span&&span class=&p&&()&/span&
&span class=&p&&{&/span&
&span class=&k&&return&/span& &span class=&n&&mBIT&/span&&span class=&p&&.&/span&&span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&n&&mPos&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&k&&private&/span&&span class=&o&&:&/span&
&span class=&n&&BinaryIndexTree&/span&&span class=&o&&&&/span& &span class=&n&&mBIT&/span&&span class=&p&&;&/span&
&span class=&kt&&size_t&/span& &span class=&n&&mPos&/span&&span class=&p&&;&/span&
&span class=&p&&};&/span&
&span class=&kt&&int&/span& &span class=&nf&&lowbit&/span&&span class=&p&&(&/span&&span class=&kt&&int&/span& &span class=&n&&num&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&return&/span& &span class=&n&&num&/span&&span class=&o&&&&/span&&span class=&p&&(&/span&&span class=&o&&~&/span&&span class=&n&&num&/span& &span class=&o&&+&/span& &span class=&mi&&1&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&k&&public&/span&&span class=&o&&:&/span&
&span class=&n&&BinaryIndexTree&/span&&span class=&p&&()&/span& &span class=&p&&{}&/span&
&span class=&n&&BinaryIndexTree&/span&&span class=&p&&(&/span&&span class=&kt&&size_t&/span& &span class=&n&&size&/span&&span class=&p&&)&/span& &span class=&o&&:&/span&
&span class=&n&&mSize&/span&&span class=&p&&(&/span&&span class=&n&&size&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&mArray&/span&&span class=&p&&.&/span&&span class=&n&&resize&/span&&span class=&p&&(&/span&&span class=&n&&mSize&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&k&&virtual&/span& &span class=&o&&~&/span&&span class=&n&&BinaryIndexTree&/span&&span class=&p&&()&/span& &span class=&p&&{}&/span&
&span class=&k&&const&/span& &span class=&kt&&size_t&/span& &span class=&n&&size&/span&&span class=&p&&()&/span&
&span class=&p&&{&/span&
&span class=&k&&return&/span& &span class=&n&&mSize&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&n&&resize&/span&&span class=&p&&(&/span&&span class=&kt&&size_t&/span& &span class=&n&&size&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&mSize&/span& &span class=&o&&=&/span& &span class=&n&&size&/span&&span class=&p&&;&/span&
&span class=&n&&mArray&/span&&span class=&p&&.&/span&&span class=&n&&resize&/span&&span class=&p&&(&/span&&span class=&n&&size&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&n&&add&/span&&span class=&p&&(&/span&&span class=&kt&&int&/span& &span class=&n&&index&/span&&span class=&p&&,&/span& &span class=&n&&Type&/span& &span class=&n&&value&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&for&/span& &span class=&p&&(;&/span& &span class=&n&&index&/span&&span class=&o&&&&/span&&span class=&n&&mSize&/span&&span class=&p&&;&/span& &span class=&n&&index&/span& &span class=&o&&+=&/span& &span class=&n&&lowbit&/span&&span class=&p&&(&/span&&span class=&n&&index&/span& &span class=&o&&+&/span& &span class=&mi&&1&/span&&span class=&p&&))&/span&
&span class=&n&&mArray&/span&&span class=&p&&[&/span&&span class=&n&&index&/span&&span class=&p&&]&/span& &span class=&o&&+=&/span& &span class=&n&&value&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&n&&Type&/span& &span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&kt&&int&/span& &span class=&n&&index&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&Type&/span& &span class=&n&&answer&/span& &span class=&o&&=&/span& &span class=&n&&Type&/span&&span class=&p&&();&/span&
&span class=&k&&for&/span& &span class=&p&&(;&/span& &span class=&n&&index&/span& &span class=&o&&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span& &span class=&n&&index&/span& &span class=&o&&-=&/span& &span class=&n&&lowbit&/span&&span class=&p&&(&/span&&span class=&n&&index&/span& &span class=&o&&+&/span& &span class=&mi&&1&/span&&span class=&p&&))&/span&
&span class=&n&&answer&/span& &span class=&o&&+=&/span& &span class=&n&&mArray&/span&&span class=&p&&[&/span&&span class=&n&&index&/span&&span class=&p&&];&/span&
&span class=&k&&return&/span& &span class=&n&&answer&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&n&&Type&/span& &span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&kt&&int&/span& &span class=&n&&left&/span&&span class=&p&&,&/span& &span class=&kt&&int&/span& &span class=&n&&right&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&return&/span& &span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&n&&right&/span&&span class=&p&&)&/span& &span class=&o&&-&/span& &span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&n&&left&/span& &span class=&o&&-&/span& &span class=&mi&&1&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&n&&BinaryIndexTree_Node&/span& &span class=&k&&operator&/span&&span class=&p&&[](&/span&&span class=&kt&&size_t&/span& &span class=&n&&pos&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&return&/span& &span class=&n&&BinaryIndexTree_Node&/span&&span class=&p&&(&/span&&span class=&o&&*&/span&&span class=&k&&this&/span&&span class=&p&&,&/span& &span class=&n&&pos&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&p&&};&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&如果大家觉得哪里讲的不是很清楚,欢迎在评论里提出,我抽空修改,谢谢啦&br&&p&以上。&/p&
有一天,小明给了我三个问题(其实是我自己出的啦~) (1)有一个机器,支持两种操作,在区间[1,10000]上进行。操作A:把位置x的值+k操作B:询问区间[l,r]所有数字之和区间的初始值全部为0现在你要充当这个机器,操作A和操作B会被穿插着安排给你,要求对于所有操…
&p&超弦理论之父史瓦兹,曾担任普林斯顿大学助理教授,由于没有拿到终身职位,只好去加州理工做研究员,从1972年到1985年。然后1984年他发起了超弦理论革命,一年后被晋升为正教授。暴涨理论的提出者阿兰 古斯,MIT博士毕业后辗转若干个机构做博士后九年,在提出暴涨理论后回到MIT任副教授。苦逼的学者,只有做出突破性的研究成果,才可能在学术圈生存下来。&/p&&p&提出量子多世界理论的&a href=&/?target=http%3A//en.wikipedia.org/wiki/Hugh_Everett& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hugh Everett III&i class=&icon-external&&&/i&&/a&,研究成果不被认可。只好受雇于国防部去研究国防,退出物理界。1982年,51岁时,一直坚信量子永生Everett的由于心脏病突然离世。也许他只是在我们这个世界死去了,而在另外一个平行世界里继续活下去,看到了他的多世界理论获得更多的认可。G.茨威格和盖尔曼同时发现夸克,因为他执意要发在PRL上,得罪了CERN的同行,文章最终没有发表。盖尔曼后来得了诺贝尔奖,茨威格则只能退出了物理学界,先研究生物,后来进入金融界赚钱去了。基础研究有风险,做出一流工作,也不一定能生存。&/p&&p&上面这几个例子只是成名人物,所以能够留下记录。不出名的人,更多是早早默无声息的退出了学术圈。 越是聪明绝顶而有野心的人,越是希望挑战大题目,越是有可能在挑战大题目的过程中失败而离开学术界。我们不知道谁能生存,谁会退出。有一个段子是这样说的,Witten接受国会质询时,被问到,美国目前有多少弦论专家?他说有一百人。那么我们需要多少人呢?Witten说,大概1个人。那为什么要资助这剩下的99人呢?因为我们不知道怎么把这一个人从99人中挑选出来。&/p&&p&要在学术圈生存怎么办?那就接受自己的平庸,做一些小的题目,扎扎实实地做透。无法做出震动世界的工作,但至少能给这个领域有自己的贡献。降低风险,也降低了收益。当然,那些胸怀大志的人是不可能做这种选择的。对他们来说,学术上做不出重大的成绩,还不如早点转行。以他们的聪明才智,做别的行业都很容易有成绩。 &/p&
超弦理论之父史瓦兹,曾担任普林斯顿大学助理教授,由于没有拿到终身职位,只好去加州理工做研究员,从1972年到1985年。然后1984年他发起了超弦理论革命,一年后被晋升为正教授。暴涨理论的提出者阿兰 古斯,MIT博士毕业后辗转若干个机构做博士后九年,在提…
之前在写答案因疏忽没有附上原文链接,引起了歧义,造成了对原作者实际的侵权,

我要回帖

更多关于 playhome属性攻略 的文章

 

随机推荐