学习内容:bfs,dfs,贪心,剪枝
总结:
这是暑假集训的第一周,所以先总结下生活情况。暑假天气很热但教室有空调,食堂伙食也还行,每天训练时间很长但感觉过得也很充实.总之现在已经习惯了暑假集训的生活.
这一周训练内容是搜索(bfs,dfs)和贪心,训练方式是做题和自学.因为之前就学习过bfs和dfs,所以对bfs和dfs也有一定的了解,所以我也说说自己的理解.
这两种算法都是暴力搜索算法,搜索就是从由题目生成的所有答案中选出正确答案.而这两种搜索的方式却不大一样,如果把所有答案看成一张图的话,bfs是从第一个节点开始沿各个方向扩展其相邻的节点,然后再依次对相邻的节点进行扩展,直到找到正确答案或遍历完整张图结束(确实很暴力).而代码的实现也不难,主要通过队列实现,就是把第一个节点加入队列中,然后扩展相邻的节点把他们依次入队,扩展完之后把队首出队,这样就可以对下一个节点进行扩展,直到队列为空即所有节点都扩展完了或找到正确答案退出.因为bfs每扩展一次后的节点是上一个节点的步数+1,所以bfs经常用于寻找最短路径.
而dfs是从第一个节点开始只沿一个方向到一个相邻节点,这样遍历完所有节点(或者找到想到的节点)后返回上一个节点,然后沿其他方向再遍历,直至遍历完所有的路径.而代码是通过函数的递归来实现的,
要注意回溯.感觉很多题目都能用dfs搜出正解,不过时间复杂度过高.就比如找最短路径,dfs需要找出所有路径并选其中最短的,而bfs只需要第一次扩展到那个节点就结束.效率完全不同.因此盲目使用dfs可能会超时或因递归层数太多占用过多空间爆了.
这两种算法虽然很暴力,但可以通过剪枝优化时间复杂度,而有些剪枝有一定难度,灵活性高,目前掌握地不太好.
贪心是把问题分成若干个子问题然后依次选择最优解,最后合并成总问题的最优解,其前提是这个子问题的解不影响下一个问题也就是没有后效性.过程很简单但重点在于看出这个题到底能不能贪心…
然后下面是写题目的一些心得.BEJGJKL题都是一些简单的搜索,通过这些题加深了对搜索的熟悉度,
H题是数组模拟链表,不过紫书上的代码很精炼看来很久才看懂.O题bfs的剪枝很重要,比如不能减到负数,当前的步数不能超过记录的最小步数,当前数超过目标数时只能用减法等等.P题的剪枝是剩余没涂的颜色其中一个颜色的数量不能超过(剩余的格子数+1)/2,我开始都想不到导致超时.M题把所有不同状态的时间列举一遍求最优解,实现部分有点难,C题用dfs的思想生成子集暴力即可.F题是贪心+dfs,把坐标转换成边界以便判断,然后对上边界进行排序,让上边界高的排在前面,这利用了贪心的思想,因为上面的先涂色肯定能涂得更多,然后对每次涂色的颜色进行dfs.剩下4个没完成的题中A要用大数,D对输入的处理有点麻烦,I是对状态的bfs和建立图进行优化剪枝(完全不会),N题没看应该很难,有时间把这些题补上.
这周比赛只A了两道,以后有时间研究下题解.
目前不足之处是难的搜索题完全做不出,剪枝考虑不到位,还有待提高.

转载于:https://www.cnblogs.com/megadeth/p/11297199.html

暑假ACM集训第一周总结相关推荐

  1. 一起开心暑假集训第一周限时训练 2020/7/5

    文章目录 A - Goldbach's Conjecture POJ - 2262 B - 同余方程 计蒜客 - T2010 C - Tr A HDU - 1575 D - C Looooops PO ...

  2. XUPT 寒假算法集训第一周

    A - 连续数的和 给你一个整数nn,你需要找到两个整数ll和rr,它们的范围是: -10^18 ≤l<r≤10^18 并且使得 l + (l + 1) +... + (r - 1) + r = ...

  3. 【暑期集训第一周:搜索】【DFSBFS】

    文章目录 一.深度优先搜索(DFS) 1.1 全排列问题 1.1.1 问题描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 1.1.2 思路表示 1.1.3 代码 二.广度优先搜索 ...

  4. 哈尔滨理工大学ACM集训第二周总结

    二分查找: int erfen(int *a,int l,int r,int v){ //a为待查找数组,l为下界下标,r为上界下标,v为目标值int mid;while(l<=r){mid=l ...

  5. 集训第一周 Linux

    1.创建一个用户user1,用root身份给user1修改密码为redhat. 提示:创建用户用useradd user1 2.切换到user1用户,给自己修改一个密码,密码任意. 3.在/root/ ...

  6. acm第一周学习总结

    acm第一周学习总结 一.学习内容总结 1.STL的简单应用:使用string定义字符串. 2.使用万能头文件#include<bits/stdc++.h> 3.使用sync_with_s ...

  7. 2017暑假 第一周 学习总结(复习)

    2017暑假 学习总结目录: 1 2 3 4 Time:7.3 ~ 7.9 Content:再次认识Java,熟悉环境配置,HelloWorld 基本结构,了解开发工具 eclipse,标识符命名规范 ...

  8. WaWa的奇妙冒险(第一周集训自闭现场)

    第一周周记 (一)例题记录 A-Download Manager (水题) HDU - 3233 Input Output Sample Input Sample Output 理解 AC代码 B-J ...

  9. NUIST2022级第一周集训

    #大一寒假第一周集训练! 主要内容:简单基础知识,模拟题.搜索题和部分CF智力题. 目的:锻炼码力,恢复训练,锻炼思维等.

  10. yzm10的ACM集训小感

    7月30号,ACM集训进行了两周,一切都已on the right way.这时的我适时地从题海中探出头,其实除了刷题,也该写点什么来总结下过去. 首先,在第一周里,我学习了数据结构,知道了STL这么 ...

最新文章

  1. 在VMware ESX Server使用华为存储
  2. sqlplus导数_使用sqlplus 几个常用命令
  3. 网站入口页双栏对称布局实现思路
  4. 安卓自动化测试(1)安卓自动化测试原理概念
  5. 如何搭建一个视频直播系统
  6. objective-c 2.0编程语言,Objective-C 2.0程序设计(原书第2版) 中文PDF扫描版[15MB]
  7. zTree树形菜单使用实例
  8. 深度学习(十四)——Softmax详解, 目标检测, RCNN
  9. 机器学习(十)——因子分析
  10. 决策树原理实例(python代码实现)_决策树原理实例(python代码实现)
  11. python一维数组定义,python一维数组保存
  12. Aliyun Serverless VSCode Extension 上架并开源
  13. html5的优势ie9,WebQQ升级支持IE9 充分运用HTML5优势
  14. spring的一些概念及优点
  15. ##CSP 201812-2 小明放学(C语言)(100分)
  16. 计算机地图制图的点状符号制作,计算机地图制图验手册汇编.doc
  17. matlab预测1人均gdp,基于时间序列模型下河南人均GDP的预测分析
  18. 关于B树的思考:m阶B树的非根非叶节点为什么要至少为ceil(m/2)个孩子? c/c++描述
  19. c-lodop自定义分页打印
  20. 关于windows系统中txt文档的换行符\r\n

热门文章

  1. SAP PM快速指南
  2. c51C语言温度监控器流程图,51单片机温度控制系统原理图+程序+流程图-课程设计_508.doc...
  3. 华为设备配置MSDP实现PIM-SM域间组播
  4. android局域网 nas,华为手机通过群晖NAS备份时提示“本机和您的NAS设备需处于同一局域网”的解决方法...
  5. USB协议详解第29讲(USB设备状态及数据交互条件)
  6. FPGA学习: Verilog刷题记录(16)
  7. B站百万粉丝是如何做起来的?解密UP主成长之路
  8. OPTEE的进程间通信(Inter-Process Communication, IPC)
  9. wordpress后台固定菜单消失不见了怎么办?
  10. 北京-京医通-小孩-人脸识别