ACM程序设计基础结课总结

目录:

1.ACM程序设计基础学习感悟;
2.ACM程序设计基础知识学习心得;
3.ACM程序设计基础知识学习收获;

ACM程序设计基础学习感悟:

从最开始上了大学接触到编码的时候,就感觉自己对这个很感兴趣,然后在上学期就在openjudge上面做老师发的练习题,每每做出一个题目的时候就很开心,很喜欢那种把一个题做出来的感觉,后来就听说了ACM这个比赛,然后听同学和学长的介绍,然后就对这个有了很深的兴趣了,于是,在大一的下学期我选择报名了ACM 程序设计基础这门课,现在转眼一个学期马上就结束了,这门课程也到了结课的时候,经过这一个学期的学习,我学到了很多东西,说实话我感觉学完这门课是每个人都能办到的,只要不断地坚持下去,但是想要学好是需要天赋的,一个就是对于算法的理解能力,天赋好就能很快地去理解这个算法,而天赋一般的就需要去花大量的时间去慢慢的理解,偶尔还可能弄不懂,这个时候就非常的痛苦,但是当弄懂的时候也是非常的开心,第二个就是每当做题的时候需要有感觉,这个感觉就是当你看到这个题目的时候马上就想到大概可以用什么样的方法去解决这个问题,对于那些思维方面的问题可以快速的做出反应,但是天赋一般的人就可能一时半会绕不过那个弯来,我就是这样一个天赋一般的人,但是我还是通过这一个学期的学习学到了很多有用有趣的东西,在ACM程序设计基础课上学的一些算法,一些功能函数,一些编码方式,一些优化方法,一些思维方式,以及严谨认真坚持的精神……等等都对我其他的学课学习有一定的帮助,提别是专业课的学习,有了ACM程序设计基础课上学到的这些东西作为基础,专业课学起来十分的轻松,老师布置的任务也变得简单了起来,可以轻松的完成。

ACM程序设计基础知识学习心得:

一. 递归:
递归算法:函数自己调用自己;
递归算法基本思想:把大规模问题转化为小规模问题;
递归算法解决方式及注意问题:在问题解决的时候,一个大问题往往可以分成很多的小问题,而这些小问题和总的大问题用的是同一种解决方法;要十分的注意递归的出口即递归结束的条件,这个条件往往是最简单的,最容易得出的答案;
递归算法经典题目:1. 斐波那契数列;2. 汉诺塔;3. 分解因数等;
二. 贪心算法:
贪心算法基本原理:这个算法的核心就在一个字“贪”上面,就是每次都做出对自己最有利的选择,每一次得到的都是局部的最有选择,最后每次通过比较得到最好的一个解就是全局的最优解。
什么题目可以用贪心算法:如果一个问题的全局最优解可以通过局部最优解得到,那么就可以应用贪心算法。
贪心算法经典题目:1. Crossing River; 2. 拦截导弹问题; 3. 删数问题等;
三. STL函数:
这一学期学的是STL当中的各种各样的容器,这些容器对于我们解决问题有十分重要的帮助,极大的简化了我们代码的编写的难度;
学过的一些容器:
1. vector:用于连续存储以西元素,一维和多维都可以,类似于动态数组;
2. set:可以对数据进行排序和去重,把数据放进set容器当中,数据就变得有序和唯一了;
3. multiset:它和set是差不多的,只是multiset允许数据重复;
4. stack:一个先进后出的数据结构,可以用来解决括号匹配一类的问题;
5. queue:一个先进先出的数据结构;
6. dequeue:与queue不同的是dequeue是可以从两端进出,其他的操作基本一致;
6. priority_queue :与queue不相同的地方是,把数据放到priority_queue当中时,每次取出的数据时这些数据当中最大的,当然为了其他的需要,我们可以更改写法,使得每次取出的数据是最小的;
7. map:map是一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,同时map不允许有重复元素,我感觉map更像是一个数组,一个把下标换成其他数据类型的数组;
8. multimap:与map不同的是,multimap允许有重复元素,其他与map基本相似;
STL经典题目:1. 字符串匹配问题; 2. 中缀表达式值; 3. 表达式括号匹配; 对于STL容器来讲,它们更多的是作为工具用在题目的解题过程当中,单独考察STL应用的题目不多;
四. 动态规划:
动态规划基本思想:动态规划的基本思想与分治法非常的相似,也是将待求解的问题分解为若干个子问题,按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了一定的信息。在求解每一个子问题时,根据可能存在的不同情况列出不同的式子,通过决策保留那些有可能达到最优的局部解。最后根据各个子问题的解整理得到最终题目的解;
1. 线性动态规划:顾名思义,线性动态规划就是在一条线上进行动态规划,题目通常是与一条坐标轴上有关;
线性动态规划解题方法:1.根据题意确定f数组(一二三四……维)下标的含义;2.确定f数组保存的值的含义;3.分析最后一步,即到达最后一步的可能情况,最后根据情况列状态转移方程。
线性动态规划经典题目:1. 背包问题;2. 最长上升子序列;3. 最长公共子序列等;
2. 区间动态规划:顾名思义,区间动态规划就是在区间上进行动态规划,求解一段区间上的最优解。把一个大区间分解为一个一个的小区间,通过合并小区间的最优解进而得出整个大区间上最优解。
区间动态规划解题方法:大部分的区间动态规划的特点都挺明显的,我们需要考虑大区间可以转化成小区间的条件是什么,然后再找到边界条件,根据这些条件列出状态转移方程。
区间动态规划经典题目:1. :石子合并; 2. 环型石子匹配; 3. Dire Wolf等;
五.背包:
背包问题:属于动态规划的一种,背包问题的种类非常多,有九个类;
1. 01背包问题:最基本的背包问题,每个物品最多只能放一次;
2. 完全背包问题:也是基本的背包问题,每种物品可以无限使用;
3. 多重背包:每种物品有使用上线;
4. 混合背包问题:混合背包就是把上面三种背包叠加组合而成的背包;
5. 二维费用背包问题:比基本的背包问题多一维,并且纯在隐性条件,所以要多开一维;
6. 分组背包问题:物品被分成许多的组,每组只能选一个;
7. 有依赖的背包问题:给另一种物品的选择加上和限制,例如,选这个就必须要选哪个;
8. 背包问题求解方案数;
9. 求背包问题的具体方案;
我学习到现在遇到过的是前七种,后面后面的几种都比较难,当时看视频学习的时候都听不太懂,反复看才大概知道了是怎么去实现这个问题,自己去实现还是比较的吃力;
六. 二分法三分法:
1. 二分查找;
二分查找原理:二分查找是利用了函数的单调性,针对的是一个有序的数据的集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。如果查找的值比中间位置的元素小,就从数组的左边继续查找,如果查找的值比中间位置的大,就从数组的右边继续查找;
二分查找经典题目:1. 网线主管; 2. 月度开销; 3. 膨胀的木棍; 4. 河中跳房子等;
2. 三分查找;
三分查找原理:与二分查找比较相似,二分查找利用的是函数的单调性,三分查找利用的是函数的凹凸性,在二分查找的基础上,在右区间(或左区间)再进行一次二分,每次缩小[L,R]的范围,不断逼近来求那个极值点;
算法过程:区间[L,R],设node1 = l+(r-l)/3, node2 = r-(r-l)/3; 接着计算node1和node2两个点的函数值,选出两者之中好的哪一个点,然后相应的缩小区间范围,然后重复这个过程不断逼近极值点;
三分查找经典题目:1. 选举拉票;2. LGOJP3382;3. HDU - 3400等;
七. 数论:
当学到数论这一章的时候,与前面的算法其实联系的就不是特别紧密了,全新的知识,数论这里更注重的是数学方法的理解与应用,各种的数学原理,用来解决一些复杂的数学问题和用来降低一些题目的时间复杂度等等;
数论中用到的一些基本原理:1. 快速幂; 2. 算术基本定理(唯一分解定理); 3. 循环节; 4. gcd及高精度实现; 5. 费马小定理; 6. 欧拉定理及其推论; 7.斐蜀定理; 8. 扩展欧几里得算法; 9. 乘法逆元;
数论的一些题目: 1. Largest prime factor ; 2. Least common multiple ; 3. Love you TenThous years等;
八. 树状数组
树状数组:当我们求解前缀和时候,可能会遇到改变其中某个数据的值,这样我们就需要重新计算前缀和,时间复杂度很高,容易超时,于是就出现了树状数组,树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于数组的单点修改与区间的求和,可以解决大部分基于区间上的更新以及求和问题;
树状数组的具体实现和维护:附上比较好的讲解, https://blog.csdn.net/iwts_24/article/details/82497026
九. 线段树
线段树就是一种二叉树,可以用来更新树上的某些点,更新某一段区间,对某个区间进行查询,时间复杂度是log(n),可以进行快速的查找和更新;
线段树的具体维护和讲解: 附上比较好的讲解,https://blog.csdn.net/ahilll/article/details/83108872

ACM程序设计基础知识学习收获;

马上ACM程序设计基础这门课就结课了,在这一个学期的学习过程当中,从刚开始做不大出题来坚持不住想要放弃,到慢慢的坚持努力,在到最后可以做出一些题目的习以为常,通过这门课的学习,我不仅学到了很多的算法方面的专业知识,也学到了面对困难咬牙坚持的精神,面对任何的困难,只要坚持到底,就算最后的结果可能不是很理想,但是最后的结果一定不会差;ACM程序设计基础的学习到现在就告一段落了,在以后的时间里我可能会把更多的时间放到专业课,四六级考试和其他课程上去,但是还是会在有空的时候去做一做一些题目,找一找做出题的喜悦;一学期的学习收获很多,感谢老师的耐心讲解,也感谢自己的坚持不懈,希望在以后的学习中自己能做的更好;

ACM程序设计基础结课总结相关推荐

  1. python交互式程序设计导论第一周答案_智慧树知到Python程序设计基础见面课测试答案...

    智慧树知到Python程序设计基础见面课测试答案 更多相关问题 [多选题]用TLC法检查药物中杂质时,通常有以下几种方法 [判断题]月氏从故地到迁入地,均在丝绸之路沿线 [单选题]若炽灼残渣留做重金属 ...

  2. 计算机程序设计基础结课报告,《计算机程序设计基础》课程地位及教学探讨

    尹红征+翁梅 摘要: 该文论述了我国高等院校<计算机技术基础>课程的基本性质和情况,指出了该课程面临的新形式及改革要求,分析了其教学现状,就该课程的教学内容及教学中的一些关键问题和环节.教 ...

  3. ACM程序设计基础题解

    ACM水题一 HDU1262 寻找素数对[素数] - 海岛Blog - CSDN博客 HDU4548 美素数[水题] - 海岛Blog - CSDN博客 HDU2503 a/b + c/d[水题] - ...

  4. ACM程序设计基础(2)题解

    ACM水题二 CodeForces-1A Theatre Square[水题] - 海岛Blog - CSDN博客 AOJ0009 Prime Number[筛选法+前缀和] - 海岛Blog - C ...

  5. ACM程序设计基础(1)题解

    ACM水题一 HDU1262 寻找素数对[素数] - 海岛Blog - CSDN博客 HDU4548 美素数[水题] - 海岛Blog - CSDN博客 HDU2503 a/b + c/d[水题] - ...

  6. matlab选修结课作业,matlab结课作业

    文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持. 山西大同大学 matlab 课程结课作业 MATLAB 程序应用 姓名: 课程序号: 2 班级: 学号: 2013 ...... 山西 ...

  7. python语言程序设计基础网课-宜昌2020年_高校邦_Python程序设计基础【实境编程】...

    宜昌2020年_高校邦_Python程序设计基础[实境编程] 垃圾是放错位置的资源.我国能源资源的四个特点是总量丰富,人均拥有量低,资源分布不均衡和开发难度大.可再生能源大规模发展和利用的主要技术障碍 ...

  8. c++程序设计(第三版) pdf_【好课传送】C++语言程序设计基础入门视频

    [机器学习之美导读]C/C++语言发展至今已有40多年的历史,在全世界应用非常广泛,是主流的开发语言. C/C++体系语言是IT工程师长远发展的首选,具备C++背景的工程师被互联网IT后端团队认定为团 ...

  9. python只能以程序方式执行死刑_Python程序设计基础_2020智慧树网课答案章节答案...

    Python程序设计基础_2020智慧树网课答案章节答案 答案: 更多相关问题 审判时怀孕的妇女,无论犯了多么严重的罪,最高可以判处().A.死刑立即执行B.无期徒刑C.有期徒刑 甲见他人贩卖毒品获得 ...

最新文章

  1. 从0开始学springboot之启蒙篇
  2. 国内外物联网平台初探(篇二:阿里云物联网套件)
  3. Zend 创始人提议创建 PHP 方言,暂命名为 P++
  4. Spring笔记2——Spring中Bean的装配
  5. .com才是顶级域名,baidu.com是二级域名
  6. 《穿越计算机的迷雾》读书笔记七
  7. ip 域名 端口了解
  8. Autojs实战教程---番茄免费小说Apk文件和源码
  9. Learn Git Branching 学习笔记(基础篇)
  10. Banner实现图片轮播
  11. Python基础(二)
  12. Java语言高级(第三部分)异常多线程 ->(个人学习记录笔记)
  13. 植树节的微信软文如何写?素材加文案帮你分分钟搞定!
  14. 设置Win10系统我的电脑中不展示文件夹
  15. COMP SCI 3013 7089 - Event Driven Computing Semester java
  16. NLP数据增强;中文数据增强包;一键中文数据增强
  17. c++代替goto语句的方法
  18. 局域网传输工具需求分析
  19. spongycastle加密算法
  20. 5800计算机交点法程序大全,FX5800计算器交点法正反算程序加入高程及隧道超欠挖...

热门文章

  1. Vue基础复习(2)Vue2.X过渡、动画和自定义指令
  2. kmalloc详解与分配大小的限制
  3. git下载与安装教程
  4. 到底什么是rest风格?
  5. audio 音频 基于plyr.js
  6. JSON格式的字符串校验
  7. Hive是否支持in函数
  8. python做手机应用宝下载_Python代码爬取下载应用宝所有APP软件
  9. 让你的效率飞起——zsh+fzf极致体验
  10. 快乐的工作,快乐的生活。