北邮-上机题型总结-九度练习_weixin_33755554的博客-程序员秘密

技术标签: python  数据结构与算法  

又到了一年的上机的时节,如果你之前做过很多ACM你可以完全忽略此贴。 
  
本帖子面向基础薄弱,或者跨考学生,其实是我当时在考研专刊里面写的,因为大家好多都不看考研专刊,于是就拿出来了。。。因为是之前被放在考研专刊附赠的里面。所以怕大家看不到。所以拿出来了。。。 
  

下面面我给出我自己总结的一些题型的分类,可能不是很完全正确,仅供参考:    
     
模拟类型(这类题常考,看似不难,但是对于初学者来说,用代码完整地写出题意描述中的意思还是需要 
多加练习):    
1000 1001 1020 1031 1036 1038(这题请认真读题)  1013 1014 1045 1046 1048 1050 1059 1060 1062  
1063 1064 1065 1067(这个题目可以练习最简单的递归,虽然人家不让用递归)  1068(double比float 
的好处,可以按两种类型分别提交,看结果便知道)  1070 1075(注意细节)  1177 1179 1183 1186   
     
字符串处理(字符串处理对于实验室做项目来说再常见不过了,因此出题往往也会偏向这部分,应该熟练 
掌握):    
1003 1006(认真读题)  1010 1013 1019 1021 1203(这个题可用灵活的IO 代替字符串你想到了吗?)  
1032 1049 1055 1058 1059 1182 1192 1199 1206 1334   
字符串里面的常用的简单技术有  查找  替换  字符串转换为数字  要熟练(使用库函数或者自己手写都要熟 
练)    
     
数学问题:    
质数的判断:1040 1047 1207(略难可不做)  筛素数法不会请百度    
公约数公倍数:1056 1336   辗转相除法    
矩阵的一些问题:1180 1173 1191 1193   
进制转换  1026 1194 今年就考了,基础但是常见啊!    
高精度计算(注意题目描述,注意前导零后续零):1198 1137   
用计算机语言模拟一些数学解题的方法还是有难度的    
     
数组的问题:    
对数组的操作,简单但是很基础    
1004 1018 1039 1052 1053 1057 1066 1174 1334 1363 1375 1398   
     
栈的练习:    
1019 1342   
     
队列的练习:    
1415   
     
排序的练习:    
简单的排序问题:1014 1034 1041 1178 1185 1202 冒泡也好什么也罢但是请一定会手写快排    
归并排序:1004   
堆排序:1416(其实不是排序题,但是要用到堆的思想请体会TLE的原因)    
二叉排序:  1009 1201   
字符串排序:1054 1066 1178(先后顺序决定了一些问题请体会)  1190 1195 1419   
多级排序(多个关键字,学会stl的sort,并为其编写判定函数):1023 1061 1187 1196 1339 1346     
     
链表、指针的问题:    
1181 1788 1789 (后两个题不用指针的话可以用什么做你想到了吗?)    
     
树的练习(加油吧就要胜利了):    
二叉树建树、遍历:1184   
二叉树概念的考察:1176   
二叉排序树的建树遍历:1009 1201   
霍夫曼树(不建树求权值你想到怎么做了吗):1416 1172   
     
图(这个略微高端但都是数据结构的的东西建议做做)    
图的概念问题:1027(请体会)    
最短路径问题(请回忆地杰斯特拉和弗洛伊德)    
Djs: 1008 1341 1406 1411   
Fly:1343(这个不是经典的弗洛伊德,但可以用弗洛伊德的思想,djs也可以做请体会)   
并查集的题(不懂并查集请百度):  1012(很典型的)    
最小生成树:    
(并查集+克鲁斯卡尔)  1017 1024 1028 1347 1417(字符串简历索引表)    
并查集用数组做的时候上述题目有的可能会超时,请反思自己的并查集可否优化(提示:还是用数组,仅 
仅加一行即可)    
图的搜索:(这类可以忽略  真的可以忽略)    
宽搜:1335 1365 1404(后两题可以不做)    
深搜:1012(可以用深搜但是感觉还是并查集好些,建议都练练)    
     
简单递归:    
1067 1073 1408 1205(非递归也要会)    
废话两句    
简单的递归和递推的区别在哪?    
以斐波那契数列为例  1 1 2 3 5 8    a[n]=a[n-1]+a[n-2]   
  
递 归 : 由 未 知 开 始 找 一 个 到 达 已 知 的 道 路 然 后 返 回解 不 断 迭 代a[n]=a[n-1]+a[n-2] 直到  
a[3]=a[2]+a[1]=1+1=2   
递推:直接用已知求未知,先求a[3],再求a[4]直到求到所需的a[n]为止。    
简单递归总是超时怎么办?    
1检查边界情况是否都考虑进去,公式是否正确;    
2 优化  用一个数组保存已经算过的值,递归的时候会有大量的重复计算,如果加入判断条件  当这个状态 
计算过之后就直接返回值,会节省很多时间。(略抽象,请仔细体会,不懂也没事)    
     
简单的DP(动态规划) 可以完全不做,没多少人能做出来的  放心吧!    
序列问题:    
基础:1011 1077 1112    1123(1077的升级版真的不难)    
背包问题:    
0-1背包:1364 1420 1123 1152 1209 1358(为什么1358也是背包?请仔细思考,当然我不排除有其他 
解法)    
完全背包:1072 1395   
废话两句:    
完全背包和0-1背包求解的区别?    
0-1背包从n到a[i]开始扫  完全背包从a[i]开始扫到n,至于为什么,如果你有能力做完上面的题,那么 
你肯定就懂了,如果做不明白果断不做了,没关系考察这部分的概率很小的。    
     
不是经验的经验:    
   首先,拿到题,不要急于上机,首先请认真读题,不行就在纸上比划比划,大概用什么数据结构,数 
组要开多大,有多少变量,用什么算法要首先想明白,此外,对于数据的规模要有一个概念(10000以上 
的规模貌似就不能用n*n的算法了),数据的边界值,特殊值需要不需要特殊处理,太乱了就写在纸上吧。 
慌乱之中编出的程序有很多的逻辑漏洞,debug起来很费力,所以编码前一定保持冷静和清醒。    
   第二,注意变量的名字和初始化的值。变量名字是为了让你的代码有比较好的阅读性,自己记忆起来 
比较方便。变量的初值直接与你的程序能否正确运行有关系,在变量初始化的时候,请注意你的标记是否 
跟数据的边界值重合。    
   其次,关于代码的缩进和模块化。据说老师是会拿到上机的代码的,因此请注意你的缩进格式和模块。 
但是这样做的目的不仅仅是为了取悦你的老师,在自己debug的时候也会十分的方便。利人利己。    
再次,说点debug的事情,有人问devcpp不能调试什么的巴拉巴拉的。其实在调试的时候,可以将自 
己的中间变量输出,如果你的代码符合我说的上一点,那问题出在哪就会十分的明了。切忌提交的时候要 
把这部分加上注释或者直接去掉,不然就纠结了。    
   最后,如果你决定做一道题,就一定要将它ac,任何什么“我会了”,“我知道怎么做就行了”都没有 
ac了来的实在。    
  
     
附赠一些我经常犯的错误:    
re: 数组是不是少了一位  下标越界情况是否排除?(比如a[-1])    
pe: 空格是不是少了多了?    
Wa: 数据是多组还是一组  大小写  空格问题    
OLE:最外重是否忘记了scanf()==xx   测试的//是不是没有加上    
TLE:最外重是否忘记了scanf()==xx     
=与==的区别    
输入的时候&别忘了!!!    
for()是否多加了; eg: for();   
memset(a,0,sizeof(0)) (自己看看这是哪不对,给数组清零)    
图的自环  重边问题    
是不是有遗忘了的数组未初始化    
数据定义的类型    
  
最后一句话:[size=8]上机是目前屌丝逆袭的唯一机会[/size] 
-- 

转载于:https://my.oschina.net/pangzhuzhu/blog/312916

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33755554/article/details/92490891

智能推荐

Python查找列表中相加等于s的n个数字(combinations的使用)_苦涩精灵的博客-程序员秘密

from random import randrangefrom itertools import combinationsprint("查找列表中相加等于s的n个数字: ")lt=list(randrange(-5,5) for _ in range(10))s=0n=3print("list: ",lt)def compute(l,s,n): for aggregate in combinations(l,n): if sum(aggregate)==s:

MyDLNote - Attention:[NLA系列] CCNet: Criss-Cross Attention for Semantic Segmentation_Phoenixtree_DongZhao的博客-程序员秘密

CCNet: Criss-Cross Attention for Semantic Segmentation[paper] :CCNet: Criss-Cross Attention for Semantic Segmentation[github] :https://github.com/speedinghzl/CCNet[Non-Local Attention 系列]Non...

IDEA项目包的导入以及压缩包的快速导出_idea怎么导入zip包_顾七a的博客-程序员秘密

idea是主流的编辑器,但如果在上班时进行一个程序,下班后还想继续完善的话,没有账号就没法共享程序。因此项目包可以直接压缩包导出,方便在其他设备上或给其他同伴继续进行。

css的clientheight、offsetheight、 scrollheight_晓凤凤的博客-程序员秘密

介绍网上介绍clientheight、offsetheight、scrollheight的帖子很多,看后感觉明白了,一细想似乎又不明白了。为了获取更权威的解答,查阅了MDN 文档,希望能帮助后来人。为了加深理解,看后,最好做下后边的实验。 clientheightclientheight,内容的可视区域,...

docker 挂载日志目录_mahui_1980的博客-程序员秘密

docker容器在重启动时,内部数据清空,log日志便无从查找,使用docker挂载功能挂载目录记录日志。docker run参数--volume , -v:绑定一个卷挂载日志目录启动命令docker run -it -v /home/store1/log:/home/log acf003b32780 /bin/bashdocker-compose 配置方式可以直接使用 HOST:CONTAINER 这样的格式,或者使用 HOST:CONTAINER:ro 这样的格式,后者对于容...

Spring——Hello Spring_Feliks.的博客-程序员秘密

文章目录1.Spring2.IOC理论推导IOC本质3.HelloSpring1.Spring优点:Spring是一个开源的免费的框架(容器)Spring是一个轻量级的、非入侵式的框架控制反转(IOC)、面向切面编程(AOP)支持事物的处理,对框架整合的支持Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架????????官网:https://spring.io/projects/spring-framework#learnGitHub:https://gi

随便推点

Linux 如何设置密码复杂度_ghostwritten的博客-程序员秘密

对于 Linux 系统管理员来说,用户管理是最重要的事之一。这涉及到很多因素,实现强密码策略是用户管理的其中一个方面。移步后面的 URL 查看如何 在 Linux 上生成一个强密码。它会限制系统未授权的用户的访问。所有人都知道 Linux 的默认策略很安全,然而我们还是要做一些微调,这样才更安全。弱密码有安全隐患,因此,请特别注意。移步后面的 URL 查看生成的强密码的密码长度和分值。本文将教你...

[WIP]Fan网络 (by quqi99)_quqi99的博客-程序员秘密

作者:张华  发表于:2015-07-04版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明( http://blog.csdn.net/quqi99)https://launchpad.net/~apw/+archive/ubuntu/fan/+packagessudo apt-get install lxc upstart  #注:不要安装dnsmasq,用

电气自动化专业要学c语言吗,电气自动化专业与自动化专业,都有“自动化”,它们有什么区别?..._Design设迹的博客-程序员秘密

说起与“自动化”相关的大学专业,很多人都会立马想到两个专业,一个是“电气自动化”专业,另外一个就是真正的“自动化”专业。其中“电气自动化”的全称叫做“电气工程及其自动化”。那么,这两个专业看似都与“自动化”相关,他们到底有什么区别呢?其实,他们之间的不同点主要体现在研究领域不同、课程设计不同、就业方向差距比较大、考研方向不同四个方面。下面就这四个不同点进行展开说明。研究领域上的不同自动化专业首先说...

d2i_X509 载入der文件返回为空_XH1216的博客-程序员秘密

在安装好OPENSSL之后,就可以通过命令行进行生成证书操作。网上有很多的帖子,但是不乏

Introduction to Causal Inference:Chapter 1因果推断概论_头疼confounding_SheltonXiao的博客-程序员秘密

本文是学习brady neal于2020年开设的因果推断课程Introduction to Causal Inference的记录概述本chapter主要分四个部分:辛普森悖论为什么相关性不是因果关系什么展示了因果关系在观测性研究中如何发现因果关系1 因果推断的动机:辛普森悖论1.1 辛普森悖论案例辛普森悖论(Simpson‘s paradox)是广泛存在于统计学事件的一个现象,指的是分组下的统计表现与总体统计表现相悖。这里举了一个例子,假设有一个新的疾病:COVID-27有两种